
Ich bin der FirstVDS-Systemadministrator, und dies ist der Text der ersten Einführungsvorlesung aus meinem kurzen Kurs über die Unterstützung neuer Kollegen. Fachleute, die vor kurzem mit der Systemadministration begonnen haben, sind mit einer Reihe der gleichen Probleme konfrontiert. Um Lösungen vorzuschlagen, habe ich mich verpflichtet, diese Vorlesungsreihe zu schreiben. Einige Dinge sind spezifisch für das Hosting von technischem Support, aber im Allgemeinen können sie nützlich sein, wenn nicht für alle, dann für viele. Also habe ich den Text der Vorlesung angepasst, um ihn hier zu teilen.
Es spielt keine Rolle, wie Ihre Position heißt - es ist wichtig, dass Sie tatsächlich verwalten. Beginnen wir daher mit dem, was der Systemadministrator tun sollte. Ihre Hauptaufgabe ist es, Ordnung zu schaffen, Ordnung aufrechtzuerhalten und sich auf zukünftige Ordnungssteigerungen vorzubereiten. Ohne Systemadministrator beginnt auf dem Server ein Durcheinander. Protokolle werden nicht geschrieben oder es wird etwas in sie geschrieben, Ressourcen werden nicht optimal zugewiesen, die Festplatte ist mit allen Arten von Müll gefüllt und das System beginnt sich langsam vor so viel Chaos zu biegen. Ruhig Systemadministratoren in Ihrer Person beginnen, Probleme zu lösen und das Chaos zu beseitigen!
Säulen für die Systemadministration
Bevor Sie jedoch mit der Lösung von Problemen beginnen, sollten Sie sich mit den vier Hauptpfeilern der Verwaltung vertraut machen:
- Dokumentation
- Vorlagen
- Optimierung
- Automatisierung
Dies ist die Grundlage der Grundlagen. Wenn Sie Ihren Workflow nicht auf diesen Prinzipien aufbauen, ist er ineffizient, unproduktiv und der tatsächlichen Verwaltung im Allgemeinen nicht sehr ähnlich. Lassen Sie uns jedes einzeln behandeln.
Die Dokumentation
Dokumentation bedeutet nicht, die Dokumentation zu lesen (obwohl ohne sie irgendwo zu haben), sondern sie auch zu pflegen.
So führen Sie Aufzeichnungen:
- Konfrontiert mit einem neuen Problem, das Sie noch nie gesehen haben? Schreiben Sie die wichtigsten Symptome, Diagnosemethoden und Eliminationsprinzipien auf.
- Haben Sie eine neue elegante Lösung für ein typisches Problem gefunden? Schreiben Sie es auf, damit Sie es nicht in einem Monat neu erfinden müssen.
- Wurde Ihnen geholfen, eine Frage zu beantworten, in der Sie nichts verstanden haben? Schreiben Sie die wichtigsten Punkte und Konzepte auf und zeichnen Sie selbst ein Diagramm.
Die Hauptidee: Vertrauen Sie Ihrem eigenen Gedächtnis bei der Entwicklung und Anwendung eines neuen nicht vollständig.
Das Format, in dem Sie dies tun, hängt nur von Ihnen ab: Es kann sich um ein System mit Notizen, ein persönliches Blog, eine Textdatei oder ein physisches Notizbuch handeln. Die Hauptsache ist, dass Ihre Unterlagen die folgenden Anforderungen erfüllen:
- Sei nicht zu lang . Markieren Sie wichtige Ideen, Methoden und Werkzeuge. Wenn das Verständnis des Problems das Eintauchen in die Mechanismen der Linux-Speicherzuweisung auf niedriger Ebene erfordert, schreiben Sie den Artikel, aus dem Sie es gelernt haben, nicht neu - geben Sie einen Link dazu an.
- Die Einträge sollten für Sie verständlich sein. Wenn das Linienrennen
race cond.lockup
es Ihnen nicht erlaubt, sofort zu verstehen, was Sie mit dieser Linie beschrieben haben - erklären Sie. Eine gute Dokumentation muss eine halbe Stunde lang nicht verstanden werden. - Die Suche ist eine sehr gute Funktion. Wenn Sie bloggen, fügen Sie Tags hinzu. Wenn in einem physischen Notizbuch - kleben Sie ein kleines Post-It mit Beschreibungen. Es macht nicht viel Sinn in der Dokumentation, wenn Sie so viel Zeit damit verbringen, nach einer Antwort darin zu suchen, wie Sie für die Lösung eines Problems von Grund auf aufwenden würden.

So könnte die Dokumentation aussehen: von primitiven Notizblockeinträgen (Bild oben) bis zu einer umfassenden Wissensdatenbank für mehrere Benutzer mit Tags, Suche und allen möglichen Annehmlichkeiten (unten).

Sie müssen nicht nur nicht zweimal nach denselben Antworten suchen: Die Dokumentation ist eine große Hilfe beim Erlernen neuer Themen (Notizen!). Ihr Spinnengefühl wird aufgepumpt (die Fähigkeit, ein schwieriges Problem mit einem oberflächlichen Blick zu diagnostizieren), wird Ihre Handlungen organisierter machen. Wenn die Dokumentation Ihren Kollegen zur Verfügung steht, können sie herausfinden, was und wie Sie sich dort angesammelt haben, wenn Sie nicht vor Ort sind.
Vorlagen
Musterung ist die Erstellung und Verwendung von Mustern. Um die meisten typischen Fragen zu lösen, lohnt es sich, eine bestimmte Aktionsvorlage zu erstellen. Eine standardisierte Abfolge von Maßnahmen sollte verwendet werden, um die meisten Probleme zu diagnostizieren. Wenn Sie etwas repariert / installiert / optimiert haben, sollte die Leistung dieses Objekts anhand standardisierter Checklisten überprüft werden.
Vorlagen sind der beste Weg, um Ihren Workflow zu organisieren. Wenn Sie Standardverfahren verwenden, um die häufigsten Probleme zu lösen, erhalten Sie viele coole Dinge. Mithilfe von Checklisten können Sie beispielsweise alle für den Betrieb wichtigen Funktionen diagnostizieren und die Diagnose unwichtiger Funktionen verwerfen. Standardisierte Verfahren minimieren unnötiges Werfen und verringern die Fehlerwahrscheinlichkeit.
Der erste wichtige Punkt ist, dass die Verfahren und Checklisten ebenfalls dokumentiert werden müssen. Wenn Sie sich nur auf den Speicher verlassen, können Sie einige wirklich wichtige Tests oder Operationen überspringen und alles ruinieren. Der zweite wichtige Punkt ist, dass alle Vorlagenpraktiken geändert werden können und sollten, wenn die Situation dies erfordert. Es gibt keine perfekten und absolut universellen Vorlagen. Wenn ein Problem vorliegt, das jedoch bei einer Vorlagenprüfung nicht festgestellt wurde, bedeutet dies nicht, dass kein Problem vorliegt. Bevor Sie jedoch einige unwahrscheinliche hypothetische Probleme überprüfen, sollten Sie immer zuerst eine schnelle Vorlagenprüfung durchführen.
Optimierung
Optimierung spricht für sich. Der Workflow muss zeitlich und arbeitsmäßig so weit wie möglich optimiert werden. Es gibt unzählige Optionen: Lernen Sie Tastaturkürzel, Abkürzungen, reguläre Ausdrücke und verfügbare Werkzeuge. Suchen Sie nach Optionen für eine praktischere Verwendung dieser Tools. Wenn Sie einen Befehl 100 Mal am Tag aufrufen, legen Sie ihn über eine Tastenkombination auf. Wenn Sie regelmäßig eine Verbindung zu denselben Servern herstellen müssen, schreiben Sie einen Alias in ein Wort, der Sie dort verbindet:

Schauen Sie sich die verschiedenen Optionen für die verfügbaren Tools an - möglicherweise gibt es einen bequemeren Terminal-Client, DE, Zwischenablage-Manager, Browser, E-Mail-Client und Betriebssystem. Finden Sie heraus, welche Tools Ihre Kollegen und Bekannten verwenden - vielleicht wählen sie sie aus einem bestimmten Grund aus. Nachdem Sie die Werkzeuge in die Hand genommen haben, lernen Sie, wie Sie sie verwenden: Lernen Sie die Tasten, Abkürzungen, Tipps und Tricks.
Nutzen Sie die Standardwerkzeuge optimal - Coreutils, Vim, reguläre Ausdrücke, Bash. Für die letzten drei gibt es eine Vielzahl wundervoller Handbücher und Dokumentationen. Mit ihrer Hilfe können Sie schnell vom Status „Ich fühle mich wie ein Affe, der Nüsse mit einem Laptop beschneidet - zu„ Ich bin ein Affe, der mit einem Laptop einen Walnusscracker bestellt “wechseln.
Automatisierung
Die Automatisierung überträgt schwere Vorgänge von unseren müden Händen auf die unermüdlichen Hände der Automatisierung. Wenn eine Standardprozedur im Anschluss an denselben Befehlstyp ausgeführt wird, warum nicht alle diese Befehle in eine Datei packen und nicht einen Befehl aufrufen, der diese Datei herunterlädt und ausführt?
Die Automatisierung selbst besteht zu 80% aus dem Schreiben und Optimieren eigener Tools (und zu weiteren 20% aus Versuchen, sie so zu gestalten, wie sie sollten). Es kann nur ein fortschrittlicher Einzeiler oder ein riesiges allmächtiges Werkzeug mit einer Weboberfläche und einer API sein. Das Hauptkriterium hierbei ist, dass das Erstellen eines Tools nicht mehr Zeit und Mühe kosten sollte als die Zeit und Mühe, die Sie mit diesem Tool sparen. Wenn Sie ein Skript für fünf Stunden schreiben, das Sie nie wieder benötigen, für eine Aufgabe, deren Lösung Sie ohne Skript ein oder zwei Stunden benötigen würden, ist dies eine sehr schlechte Optimierung des Workflows. Sie können nur dann fünf Stunden damit verbringen, ein Tool zu erstellen, wenn Anzahl, Art der Aufgaben und Zeit dies zulassen, was selten vorkommt.
Automatisierung bedeutet nicht unbedingt, vollständige Skripte zu schreiben. Um beispielsweise eine Reihe von Objekten des gleichen Typs aus der Liste zu erstellen, reicht ein cleverer Einzeiler aus, um automatisch das zu tun, was Sie mit Ihren Händen tun würden, indem Sie zwischen Fenstern wechseln und jede Menge Copy-Paste verwenden.
Wenn Sie den Verwaltungsprozess auf diesen vier Säulen aufbauen, können Sie Ihre Effizienz, Produktivität und Qualifikation schnell steigern. Diese Liste muss jedoch durch einen weiteren Punkt ergänzt werden, ohne den das Arbeiten in der IT fast unmöglich ist - Selbstbildung.
Sysadmin Selbstbildung
Um in diesem Bereich zumindest ein wenig kompetent zu sein, muss man ständig lernen und neue Dinge lernen. Wenn Sie nicht den geringsten Wunsch haben, dem Unbekannten zu begegnen und es zu verstehen, werden Sie sehr schnell aufwachen. In der IT tauchen ständig neue Lösungen, Technologien und Methoden auf, und wenn Sie sie nicht zumindest oberflächlich studieren, sind Sie auf dem Weg zu verlieren. Viele Bereiche der Informationstechnologie sind sehr komplex und umfangreich. Zum Beispiel Netzwerkbetrieb. Netzwerke und das Internet sind überall, man begegnet ihnen jeden Tag, aber wenn man sich mit den Technologien dahinter befasst, findet man eine riesige und sehr komplexe Disziplin, deren Studium niemals ein Spaziergang im Park ist.
Ich habe dieses Element nicht in die Liste aufgenommen, da es der Schlüssel für die IT im Allgemeinen und nicht nur für die Systemadministration ist. Natürlich können Sie nicht alles auf einmal lernen - Sie haben physisch einfach nicht genug Zeit. Daher sollte man sich in der Selbstbildung an die notwendigen Abstraktionsebenen erinnern.
Sie müssen nicht sofort lernen, wie die interne Speicherverwaltung jedes einzelnen Dienstprogramms funktioniert und wie sie mit der Linux-Speicherverwaltung interagiert, aber es ist nicht schlecht zu wissen, was RAM schematisch ist und warum es benötigt wird. Sie müssen nicht wissen, wie sich TCP- und UDP-Header strukturell unterscheiden, aber es wäre schön, die wichtigsten Protokollunterschiede im Betrieb zu verstehen. Sie müssen nicht untersuchen, was Signaldämpfung in der Optik ist, aber es wäre schön zu wissen, warum echte Verluste immer von Knoten geerbt werden. Es ist nichts Falsches daran zu wissen, wie bestimmte Elemente auf einer bestimmten Abstraktionsebene funktionieren, und es ist nicht notwendig, absolut alle Ebenen zu analysieren, wenn es überhaupt keine Abstraktion gibt (Sie werden einfach verrückt).
Es ist jedoch nicht sehr gut, auf ihrem Gebiet auf der Abstraktionsebene zu diskutieren, dass „dies eine Möglichkeit ist, Websites anzuzeigen“. Die folgenden Vorlesungen widmen sich einem Überblick über die Hauptbereiche, mit denen sich ein Systemadministrator auf niedrigeren Abstraktionsebenen befassen muss. Ich werde versuchen, die Menge des überprüften Wissens auf ein Mindestmaß an Abstraktion zu beschränken.
Die 10 Gebote der Systemadministration
Wir haben also die vier Hauptpfeiler und das Fundament gelernt. Kann ich anfangen, Probleme zu lösen? Noch nicht. Zuvor ist es ratsam, sich mit den sogenannten "Best Practices" und den Regeln der guten Form vertraut zu machen. Ohne sie ist es wahrscheinlich, dass Sie mehr Schaden als Nutzen anrichten. Fangen wir also an:
- Einige meiner Kollegen glauben, dass die allererste Regel „keinen Schaden anrichten“ lautet. Aber ich neige dazu, nicht zuzustimmen. Wenn Sie versuchen, keinen Schaden zu verursachen, können Sie nichts tun - zu viele Aktionen sind potenziell destruktiv. Die wichtigste Regel, die ich in Betracht ziehe, ist "Backup erstellen" . Selbst wenn Sie verletzt sind, können Sie jederzeit zurückrollen, und alles wird nicht so schlimm sein.
Sie müssen immer eine Sicherungskopie erstellen, wenn Zeit und Ort dies zulassen. Sie müssen sichern, was Sie ändern und was Sie durch eine potenziell zerstörerische Aktion verlieren könnten. Es ist ratsam, die Sicherung auf Integrität und Verfügbarkeit aller erforderlichen Daten zu überprüfen. Ein Backup sollte nicht sofort gelöscht werden, nachdem Sie alles überprüft haben, wenn Sie keinen Speicherplatz freigeben müssen. Wenn der Speicherplatz dies erfordert - sichern Sie sich auf Ihrem persönlichen Server und löschen Sie ihn in einer Woche. - Die zweitwichtigste Regel (gegen die ich selbst oft verstoße) lautet „Verstecke sie nicht“ . Wenn Sie ein Backup erstellt haben, schreiben Sie - wo, damit Ihre Kollegen nicht danach suchen müssen. Wenn Sie einige nicht offensichtliche oder komplexe Aktionen ausgeführt haben, schreiben Sie Folgendes auf: Sie werden nach Hause gehen, aber das Problem kann erneut auftreten oder jemand anderes wird es haben und Ihre Lösung wird anhand von Schlüsselwörtern gefunden. Selbst wenn Sie etwas tun, das Sie gut kennen, wissen Ihre Kollegen es möglicherweise nicht.
- Die dritte Regel muss nicht erklärt werden: "Machen Sie niemals die Konsequenzen, die Sie nicht kennen, sich nicht vorstellen oder verstehen . " Kopieren Sie keine Befehle aus dem Internet. Wenn Sie nicht wissen, was sie tun, rufen Sie man an und analysieren Sie zuerst. Verwenden Sie keine vorgefertigten Lösungen, wenn Sie nicht verstehen können, was sie tun. Minimieren Sie die Ausführung von verschleiertem Code. Wenn Sie keine Zeit zum Verstehen haben, machen Sie etwas falsch und sollten den nächsten Absatz lesen.
- "Test es . " Neue Skripte, Tools, Einzeiler und Befehle sollten in einer kontrollierten Umgebung und nicht auf dem Client-Computer überprüft werden, wenn zumindest ein minimales Potenzial für destruktive Aktionen besteht. Selbst wenn Sie alles sichern (und Sie haben es getan), sind Ausfallzeiten nicht die coolste Sache. Holen Sie sich einen separaten Server / virtuelle Maschine / Chroot für diesen Fall und testen Sie dort. Ist nichts kaputt? Dann können Sie auf die "Schlacht" laufen.

- "Kontrolle . " Minimieren Sie alle Vorgänge, die Sie nicht steuern. Eine Abhängigkeitskurve in einem Paket kann die Hälfte des Systems nach hinten ziehen, und das für yum remove gesetzte Flag -y bietet Ihnen die Möglichkeit, Ihre Systemwiederherstellungsfähigkeiten von Grund auf neu zu trainieren. Wenn die Aktion keine unkontrollierten Alternativen hat, den nächsten Punkt und eine fertige Sicherung.
- "Schau es dir an . " Überprüfen Sie die Konsequenzen Ihrer Aktionen und ob Sie ein Rollback zum Backup durchführen müssen. Überprüfen Sie, ob das Problem wirklich behoben wurde. Überprüfen Sie, ob und unter welchen Bedingungen der Fehler reproduziert wird. Stellen Sie sicher, dass Sie mit Ihren Aktionen brechen können. Auf unsere Arbeit zu vertrauen ist überflüssig, aber niemals zu überprüfen.
- "Kommunizieren . " Wenn Sie das Problem nicht lösen können, fragen Sie Ihre Kollegen, ob sie auf ein solches Problem gestoßen sind. Möchten Sie eine kontroverse Entscheidung treffen - finden Sie die Meinung der Kollegen heraus. Vielleicht bieten sie eine bessere Lösung. Es gibt kein Vertrauen in Ihre Handlungen - besprechen Sie sie mit Kollegen. Auch wenn dies Ihr Fachgebiet ist, kann ein neuer Blick auf die Situation viel klarstellen. Scheuen Sie sich nicht vor Ihrer eigenen Unwissenheit. Es ist besser, eine dumme Frage zu stellen, wie ein Dummkopf zu wirken und eine Antwort darauf zu bekommen, als diese Frage nicht zu stellen, keine Antwort zu bekommen und in der Kälte zu bleiben.
- "Verweigern Sie die Hilfe nicht unangemessen . " Dieser Gegenstand ist die Kehrseite des vorherigen. Wenn Ihnen eine dumme Frage gestellt wurde - klären und erklären Sie. Fragen Sie nach dem Unmöglichen - erklären Sie, dass es unmöglich ist und warum, bieten Sie Alternativen an. Wenn es keine Zeit gibt (es gibt wirklich keine Zeit, kein Verlangen) - sagen Sie, dass Sie eine dringende Frage haben, eine große Menge Arbeit, aber Sie werden es später herausfinden. Wenn Ihre Kollegen keine dringenden Aufgaben haben, bieten Sie an, sie zu kontaktieren und die Frage zu delegieren.
- "Komm schon Feedback . " Einige der Kollegen haben begonnen, eine neue Technik oder ein neues Skript anzuwenden, und stoßen Sie auf die negativen Konsequenzen dieser Entscheidung? Melde dies. Möglicherweise wird das Problem in drei Codezeilen oder fünf Minuten nach der Verfeinerung der Methodik gelöst. Stolperte über einen Fehler in der Software? Einen Fehler melden. Wenn es reproduziert wird oder wenn es nicht reproduziert werden muss, wird es höchstwahrscheinlich behoben. Sprechen Sie Wünsche, Vorschläge und konstruktive Kritik aus, stellen Sie Fragen zur Diskussion, wenn sie relevant erscheinen.
- "Bitten Sie um Feedback . " Wir sind alle unvollkommen, ebenso wie unsere Entscheidungen, und der beste Weg, um die Richtigkeit unserer Entscheidung zu überprüfen, besteht darin, sie zur Diskussion zu stellen. Wir haben beim Kunden etwas optimiert - fragen Sie nach, um die Arbeit zu verfolgen. Vielleicht ist der „Engpass“ des Systems nicht der Ort, an dem Sie gesucht haben. Sie haben ein Hilfeskript geschrieben - zeigen Sie Ihren Kollegen, vielleicht finden sie einen Weg, es zu verbessern.
Wenn Sie diese Praktiken in Ihrer Arbeit ständig anwenden, sind die meisten Probleme keine Probleme mehr: Sie reduzieren nicht nur die Anzahl Ihrer eigenen Fehler und Fehlerbehebungen auf ein Minimum, sondern haben auch die Möglichkeit, Fehler zu korrigieren (angesichts von Sicherungen und Kollegen, die Ihnen zur Sicherung raten). Außerdem nur technische Details, in denen, wie Sie wissen, der Teufel liegt.
Die wichtigsten Tools, mit denen Sie mehr als 50% der Zeit arbeiten müssen, sind grep und vim. Was könnte einfacher sein? Textsuche und Textbearbeitung. Grep und vim sind jedoch leistungsstarke multifunktionale Multitools, mit denen Sie Text effizient suchen und bearbeiten können. Wenn Sie mit einem Windows-Editor einfach eine Zeile schreiben / löschen können, können Sie in vim fast alles mit Text tun. Glauben Sie es nicht - rufen Sie den Befehl vimtutor vom Terminal aus auf und beginnen Sie zu lernen. Die Hauptstärke von grep liegt in regulären Ausdrücken. Ja, mit dem Tool selbst können Sie Suchbedingungen festlegen und Daten recht flexibel ausgeben, aber ohne RegExp ist dies nicht sehr sinnvoll. Und Sie müssen reguläre Ausdrücke kennen! Zumindest auf einer grundlegenden Ebene. Zunächst würde ich Ihnen raten, dieses
Video anzuschauen. Es versteht die Grundlagen der Grundlagen regulärer Ausdrücke und deren Verwendung in Verbindung mit grep. Oh ja, wenn du sie mit vim kombinierst, bekommst du
ULTIMATIVE LEISTUNG die Fähigkeit, solche Dinge mit dem Text zu tun, dass Sie sie mit mehr als 18 Symbolen aufhängen müssen.
Von den verbleibenden 50% sind 40% Coreutils. Für Coreutils finden Sie die Liste auf
Wikipedia und das Handbuch für die gesamte Liste auf der
GNU- Website. Was von diesem Set nicht abgedeckt wird, finden Sie in den
POSIX- Dienstprogrammen. Es ist nicht notwendig, dies mit allen Schlüsseln auswendig zu lernen, aber es ist nützlich, zumindest grob zu wissen, was grundlegende Werkzeuge tun können. Das Rad muss nicht durch Krücken neu erfunden werden. Irgendwie musste ich Zeilenumbrüche durch Leerzeichen in der Ausgabe eines Dienstprogramms ersetzen, und das kranke Gehirn brachte eine Konstruktion der Form
sed ':a;N;$!ba;s/\n/ /g'
, ein Kollege, der sich mir näherte, fuhr mich mit einem Besen davon von der Konsole und löste dann das Problem durch Schreiben von
tr '\n' ' '
.

Ich würde Ihnen raten, sich daran zu erinnern, dass jedes einzelne Werkzeug und die Schlüssel zu den am häufigsten verwendeten Befehlen ungefähr ausgeführt werden, für alles andere gibt es Menschen. Wenn Sie Zweifel haben, können Sie gerne den Mann anrufen. Und lesen Sie unbedingt Mann für Mann selbst - es enthält wichtige Informationen darüber, was Sie finden.
Wenn Sie diese Tools kennen, können Sie einen wesentlichen Teil der Aufgaben, denen Sie in der Praxis begegnen, effektiv lösen. In den folgenden Vorlesungen werden wir uns überlegen, wann diese Tools und die Strukturen der wichtigsten Dienste und Anwendungen, auf die sie angewendet werden, anzuwenden sind.
Der FirstVDS-Systemadministrator Kirill Tsvetkov war bei Ihnen.