
Ich bin Systemadministrator bei FirstVDS und das ist der Text meines ersten Einführungsvortrags aus meinem kurzen Kurs zur Unterstützung neuer Kollegen. Fachleute, die neu im Bereich der Systemadministration sind, stehen vor einer Reihe von ähnlichen Herausforderungen. Um Lösungen anzubieten, habe ich mich entschieden, diesen Vortragszyklus zu schreiben. Einige Aspekte sind spezifisch für den technischen Support beim Hosting, könnten jedoch insgesamt für viele, wenn nicht sogar für alle, nützlich sein. Daher habe ich den Text des Vortrags angepasst, um ihn hier zu teilen.
Es spielt keine Rolle, wie Sie Ihre Position nennen — entscheidend ist, dass Sie tatsächlich für die Administration verantwortlich sind. Lassen Sie uns daher mit den Aufgaben eines Systemadministrators beginnen. Die wichtigste Aufgabe besteht darin, Ordnung zu schaffen, diese aufrechtzuerhalten und auf zukünftige Anforderungen vorbereitet zu sein. Ohne einen Systemadministrator beginnt es auf dem Server zu chaotisch zu werden. Protokolle werden nicht erfasst oder sie enthalten falsche Informationen, Ressourcen werden suboptimal verteilt, die Festplatte füllt sich mit allerlei Datenmüll und das System beginnt wegen des Chaos langsam zu versagen. Keine Sorge! Ihre Systemadministratoren sind bereit, Probleme zu lösen und das Chaos zu beseitigen!
Säulen der Systemadministration
Bevor jedoch mit der Problemlösung begonnen wird, sollten wir uns mit den vier Hauptsäulen der Administration vertrautmachen:
- Dokumentation
- Vorlagenmanagement
- Optimierung
- Automatisierung
Dies ist die Grundlage aller Grundlagen. Wenn Sie Ihre Arbeitsprozesse nicht auf diesen Prinzipien aufbauen, werden sie ineffizient, unproduktiv und sehr wenig wie echte Administration wirken. Lassen Sie uns jedes dieser Prinzipien im Detail betrachten.
Dokumentation
Dokumentation bedeutet nicht nur das Lesen von Dokumentationen (obwohl das unverzichtbar ist), sondern auch das Führen von Aufzeichnungen.
So führen Sie Dokumentationen:
- Sind Sie auf ein neues Problem gestoßen, das Sie noch nie zuvor gesehen haben? Notieren Sie die Hauptsymptome, die Diagnoseansätze und die Lösungen.
- Haben Sie eine elegante Lösung für ein typisches Problem gefunden? Halten Sie diese fest, damit Sie sie nicht nach einem Monat erneut erfinden müssen.
- Wurden Sie bei einem Thema unterstützt, bei dem Sie zunächst keine Ahnung hatten? Notieren Sie die wichtigsten Punkte und Konzepte, erstellen Sie eine Skizze.
Die Hauptidee: Verlassen Sie sich nicht ausschließlich auf Ihr Gedächtnis, wenn es darum geht, Neues zu lernen und anzuwenden.
In welchem Format Sie dies tun, liegt ganz bei Ihnen: Es kann ein Notizensystem, ein persönlicher Blog, eine Textdatei oder ein physisches Notizbuch sein. Wichtig ist, dass Ihre Aufzeichnungen die folgenden Anforderungen erfüllen:
- Nicht zu lang sein. Heben Sie die wesentlichen Ideen, Methoden und Mittel hervor. Wenn das Verständnis des Problems erfordert, sich mit der Low-Level-Mechanik der Speicherverwaltung in Linux auseinanderzusetzen, schreiben Sie den Artikel, aus dem Sie das Wissen haben, nicht ab – verlinken Sie darauf.
- Die Aufzeichnungen sollten für Sie verständlich sein. Wenn eine Zeile
race cond.lockupnicht sofort klar macht, was Sie mit dieser Zeile beschrieben haben – erklären Sie es. In guter Dokumentation sollte man nicht eine halbe Stunde lang suchen müssen. - Die Suche ist eine sehr nützliche Funktion. Wenn Sie Blogeinträge verfassen, fügen Sie Tags hinzu; wenn in einem physischen Notizbuch – kleben Sie kleine Post-its mit Beschreibungen ein. Es hat wenig Sinn, in der Dokumentation nach Antworten zu suchen, wenn Sie dafür genauso viel Zeit aufwenden, wie Sie benötigen würden, um das Problem von Grund auf zu lösen.

So könnte Dokumentation aussehen: von einfachen Notizen in einem Notizbuch (Bild oben) bis hin zu einer vollwertigen, mehrbenutzerfähigen Wissensdatenbank mit Tags, Suchfunktion und allen erdenklichen Annehmlichkeiten (unten).

Sie müssen nicht nur die gleichen Antworten nicht zweimal suchen: Dokumentation wird eine großartige Unterstützung beim Erlernen neuer Themen sein (Stichpunkte!), schärft Ihr Problemlösungsvermögen (Fähigkeit, komplexe Probleme mit einem flüchtigen Blick zu diagnostizieren) und bringt Ordnung in Ihr Handeln. Wenn die Dokumentation für Ihre Kollegen zugänglich ist, ermöglicht es ihnen, zu verstehen, was Sie dort geschaffen haben, wenn Sie nicht vor Ort sind.
Vorlagenbildung
Vorlagenbildung — ist die Erstellung und Nutzung von Vorlagen. Für die Lösung der meisten gängigen Fragen ist es ratsam, eine bestimmte Handlungsanweisung zu erstellen. Zur Diagnose der meisten Probleme sollte eine standardisierte Vorgehensweise verwendet werden. Wenn Sie etwas repariert/installiert/optimiert haben, sollten Sie die Funktionsfähigkeit gemäß standardisierten Checklisten überprüfen.
Die Vorlagenerstellung ist der beste Weg, um Arbeitsprozesse zu organisieren. Wenn Sie Standardverfahren zur Lösung der häufigsten Probleme verwenden, profitieren Sie von zahlreichen Vorteilen. Zum Beispiel ermöglicht der Einsatz von Checklisten die Diagnose aller wichtigen Funktionen und das Ausblenden unwichtiger Diagnosen. Standardisierte Verfahren minimieren unnötige Schwankungen und reduzieren die Fehleranfälligkeit.
Ein wichtiger Punkt ist, dass Verfahren und Checklisten ebenfalls dokumentiert werden müssen. Wenn man sich nur auf das Gedächtnis verlässt, könnte man wirklich wichtige Kontrollen oder Operationen verpassen und alles könnte auseinanderfallen. Ein weiterer entscheidender Punkt ist, dass alle vorgegebenen Praktiken modifiziert werden können und sollten, wenn die Situation dies erfordert. Es gibt keine perfekten und absolut universellen Vorlagen. Wenn ein Problem besteht und die Standardkontrolle es nicht aufgedeckt hat, bedeutet das nicht, dass es kein Problem gibt. Bevor man jedoch damit beginnt, irgendwelche unwahrscheinlichen hypothetischen Probleme zu überprüfen, sollte man immer zuerst eine schnelle Standardprüfung durchführen.
Optimierung
Optimierung spricht für sich selbst. Der Arbeitsprozess sollte in Bezug auf zeitliche und arbeitsmäßige Aufwendungen maximal optimiert werden. Hier gibt es unzählige Möglichkeiten: Lernen Sie die Tastenkombinationen, Abkürzungen, regulären Ausdrücke und verfügbaren Werkzeuge. Suchen Sie nach praktikableren Einsatzmöglichkeiten dieser Werkzeuge. Wenn Sie täglich 100-mal einen Befehl aufrufen, binden Sie ihn an eine Tastenkombination. Wenn Sie sich regelmäßig mit denselben Servern verbinden müssen, speichern Sie einen Alias in einem einzigen Wort, der Sie dorthin verbindet:

Entdecken Sie verschiedene Optionen für verfügbare Tools – möglicherweise gibt es einen bequemeren Terminal-Client, DE, Clipboard-Manager, Browser, E-Mail-Client oder Betriebssystem. Finden Sie heraus, welche Werkzeuge Ihre Kollegen und Bekannten verwenden – vielleicht haben sie sie aus einem bestimmten Grund gewählt. Nachdem Sie Ihre Tools ausgewählt haben, lernen Sie, wie man sie anwendet: Machen Sie sich mit Befehlen, Shortcuts sowie Tipps und Tricks vertraut.
Nutzen Sie die Standardwerkzeuge optimal – coreutils, vim, reguläre Ausdrücke, bash. Für die letzten drei gibt es eine riesige Menge an großartigen Handbüchern und Dokumentationen. Mit ihrer Hilfe können Sie ziemlich schnell vom Gefühl "ich fühle mich wie ein Affe, der mit einem Laptop Nüsse knackt" zu "ich bin ein Affe, der einen Laptop nutzt, um mir einen Nussknacker zu bestellen" wechseln.
Automatisierung
Automatisierung überträgt schwere Operationen von unseren müden Händen in die unermüdlichen Hände der Automatisierung. Wenn ein standardmäßiger Prozess aus fünf ähnlichen Befehlen besteht, warum nicht all diese Befehle in eine Datei packen und einen einzigen Befehl aufrufen, der diese Datei herunterlädt und ausführt?
Automatisierung besteht zu 80 % aus dem Schreiben und Optimieren eigener Tools und zu 20 % aus dem Versuch, diese dazu zu bringen, wie gewünscht zu funktionieren. Das kann ein einfacher, fortgeschrittener Einzeiler sein oder ein mächtiges Tool mit einer Web-Oberfläche und API. Das Hauptkriterium ist, dass die Erstellung des Tools nicht mehr Zeit und Mühe in Anspruch nehmen sollte, als die Zeit und Mühe, die Sie durch das Tool sparen. Wenn Sie fünf Stunden an einem Skript schreiben, das Ihnen nie wieder nützlich sein wird, für eine Aufgabe, die Sie ohne Skript in ein oder zwei Stunden erledigen könnten, ist das eine sehr schlechte Optimierung Ihres Arbeitsablaufs. Sie können nur dann fünf Stunden in die Erstellung eines Tools investieren, wenn Anzahl, Typ und Zeit der Aufgaben dies zulassen, was nicht oft der Fall ist.
Automatisierung muss nicht unbedingt das Schreiben vollständiger Skripte bedeuten. Um beispielsweise eine Reihe ähnlicher Objekte aus einer Liste zu erstellen, reicht ein cleverer Einzeiler aus, der automatisch das erledigt, was Sie manuell tun würden, während Sie zwischen Fenstern wechseln und eine Menge kopieren und einfügen.
Wenn Sie den Verwaltungsprozess auf diesen vier Säulen aufbauen, können Sie Ihre Effizienz, Produktivität und Qualifikation relativ schnell steigern. Allerdings muss diese Liste um einen weiteren Punkt ergänzt werden, ohne den eine Arbeit in der IT praktisch unmöglich ist — die Weiterbildung.
Weiterbildung für Systemadministratoren
Um in diesem Bereich auch nur ein wenig kompetent zu sein, müssen Sie ständig lernen und Neues entdecken. Wenn Sie nicht einmal den geringsten Wunsch haben, sich mit Unbekanntem auseinanderzusetzen und es zu verstehen, werden Sie sehr schnell "absacken". In der IT tauchen ständig neue Lösungen, Technologien und Methoden auf, und wenn Sie diese nicht mindestens oberflächlich studieren, gehen Sie den Weg des Misserfolgs. Viele Bereiche der Informationstechnologie basieren auf komplexen und umfangreichen Grundlagen. Nehmen wir zum Beispiel Netzwerke. Netzwerke und das Internet sind überall, Sie begegnen ihnen täglich, aber wenn Sie tiefer in die Technologien eintauchen, die ihnen zugrunde liegen, entdecken Sie eine riesige und sehr komplexe Disziplin, deren Studium alles andere als ein Spaziergang im Park ist.
Ich habe diesen Punkt nicht in die Liste aufgenommen, da er für die IT im Allgemeinen von zentraler Bedeutung ist und nicht nur für die Systemadministration. Natürlich wird es nicht möglich sein, alles auf einmal zu lernen – Ihnen wird einfach die Zeit fehlen. Daher sollten Sie beim Selbststudium die notwendigen Abstraktionsniveaus im Hinterkopf behalten.
Es ist nicht notwendig, sofort zu lernen, wie das interne Speichermanagement jeder einzelnen Anwendung funktioniert und wie es mit dem Speichermanagement von Linux interagiert. Aber es wäre gut zu wissen, was der Arbeitsspeicher schematisch darstellt und wofür er benötigt wird. Sie müssen nicht wissen, wie sich die Header von TCP und UDP strukturell unterscheiden, aber es wäre hilfreich, die grundlegenden Unterschiede der Protokolle zu verstehen. Es ist nicht erforderlich, sich mit Signalabschwächungen in der Optik zu beschäftigen, aber es wäre nützlich zu wissen, warum echte Verluste immer über Knoten weitergegeben werden. Es ist nichts Schlechtes daran, zu wissen, wie bestimmte Elemente auf einem bestimmten Abstraktionsniveau funktionieren, und es ist nicht notwendig, alle Ebenen zu durchdringen, wenn es überhaupt keine Abstraktion mehr gibt (das würde Sie einfach verrückt machen).
In diesem Bereich auf abstrakter Ebene zu argumentieren mit "nun, das ist so eine Sache, die es ermöglicht, Webseiten zu zeigen" — ist nicht sehr ratsam. Die nächsten Vorlesungen werden sich mit den wesentlichen Bereichen befassen, mit denen ein Systemadministrator bei der Arbeit auf niedrigeren Abstraktionsebenen konfrontiert wird. Ich werde versuchen, das zu vermittelnde Wissen auf das minimale Abstraktionsniveau zu beschränken.
10 Gebote der Systemadministration
Wir haben also vier grundlegende Säulen und Fundament erlernt. Können wir jetzt Probleme angehen? Noch nicht. Davor ist es ratsam, sich mit den sogenannten „Best Practices“ und den Regeln guten Tons vertraut zu machen. Ohne diese besteht die Gefahr, dass Sie mehr Schaden anrichten als Nutzen bringen. Fangen wir an:
- Einige meiner Kollegen glauben, dass die erste Regel — „Tu nichts Schlechtes“ ist. Doch ich neige dazu, nicht zuzustimmen. Wenn man versucht, nichts Schlechtes zu tun, kann man oft gar nichts machen — zu viele Maßnahmen sind potenziell destruktiv. Die wichtigste Regel, die ich für wesentlich halte, ist — „Mache ein Backup“. Selbst wenn du Schaden anrichtest, kannst du immer einen Rückschritt machen und es wird nicht so schlimm sein.
Backups sollten immer gemacht werden, wenn Zeit und Platz dies erlauben. Sichern Sie, was Sie ändern werden und was Sie bei potenziell destruktivem Handeln verlieren könnten. Es ist ratsam, das Backup auf Integrität und Vollständigkeit aller benötigten Daten zu überprüfen. Löschen Sie das Backup nicht sofort nach der Überprüfung, es sei denn, Sie müssen Speicherplatz freigeben. Wenn Speicherplatz benötigt wird, sichern Sie es auf Ihrem persönlichen Server und löschen Sie es nach einer Woche.
- Die zweitwichtigste Regel (die ich selbst oft missachte) ist „nicht verbergen“. Wenn Sie ein Backup gemacht haben, notieren Sie, wo es zu finden ist, damit Ihre Kollegen nicht danach suchen müssen. Wenn Sie bei irgendwelchen unklaren oder komplizierten Aktionen waren, dokumentieren Sie dies: Sie gehen nach Hause, und das Problem könnte sich wiederholen oder bei jemand anderem auftreten. Ihr Lösungsvorschlag kann dann über Schlüsselwörter gefunden werden. Selbst wenn Sie etwas tun, das Sie gut kennen, wissen Ihre Kollegen möglicherweise nichts darüber.
- Die dritte Regel erklärt sich von selbst: „Machen Sie niemals etwas, dessen Folgen Sie nicht kennen, nicht vorstellen können oder nicht verstehen“. Kopieren Sie keine Befehle aus dem Internet, wenn Sie nicht wissen, was sie bewirken. Ziehen Sie man zurate und analysieren Sie zuerst. Wenden Sie keine vorgefertigten Lösungen an, wenn Sie nicht verstehen, was sie tun. Minimieren Sie die Ausführung obfuszierten Codes auf ein absolutes Minimum. Wenn Sie keine Zeit haben, um das zu verstehen – dann machen Sie etwas falsch und sollten sich mit dem folgenden Punkt vertraut machen.
- „Testen Sie“. Neue Skripte, Tools, Einzeiler und Befehle sollten in einer kontrollierten Umgebung getestet werden, nicht auf der Client-Maschine, wenn dort auch nur das geringste Potenzial für destruktive Aktionen besteht. Selbst wenn Sie alles gesichert haben (und das haben Sie), ist Ausfallzeit nicht optimal. Richten Sie dafür einen separaten Server/VM/chroot ein und testen Sie dort. Funktioniert alles? Dann können Sie es in der „Produktionsumgebung“ einsetzen.

- „Kontrollieren Sie“. Minimieren Sie alle Vorgänge, die Sie nicht kontrollieren. Eine fehlerhafte Abhängigkeit in einem Paket kann das gesamte System beeinträchtigen, und das -y-Flag für yum remove gibt Ihnen die Möglichkeit, Ihre Fähigkeiten zur Systemwiederherstellung von Grund auf zu üben. Wenn es keine unkontrollierbaren Alternativen für eine Aktion gibt — fahren Sie mit dem nächsten Punkt fort und stellen Sie sicher, dass Sie ein Backup haben.
- „Überprüfen Sie“. Überprüfen Sie die Auswirkungen Ihrer Handlungen und ob ein Rollback auf ein Backup erforderlich ist. Stellen Sie sicher, dass das Problem tatsächlich behoben wurde. Überprüfen Sie, ob der Fehler reproduzierbar ist und unter welchen Bedingungen. Achten Sie darauf, was Sie mit Ihren Handlungen möglicherweise beschädigen können. Vertrauen ist in unserer Arbeit nicht notwendig, doch Überprüfungen sind unerlässlich.
- „Kommunizieren Sie“. Wenn das Problem nicht gelöst werden kann, fragen Sie Ihre Kollegen, ob sie auf dasselbe gestoßen sind. Möchten Sie eine umstrittene Lösung anwenden – holen Sie die Meinung Ihrer Kollegen ein. Möglicherweise schlagen sie eine bessere Lösung vor. Haben Sie Zweifel an Ihrem Handeln – besprechen Sie es mit Ihren Kollegen. Selbst wenn es Ihr Fachgebiet ist, kann eine frische Perspektive viel klären. Zögern Sie nicht, Ihre Unkenntnis auszudrücken. Es ist besser, eine dumme Frage zu stellen, wie ein Idiot zu erscheinen und eine Antwort zu bekommen, als die Frage nicht zu stellen, keine Antwort zu erhalten und der Idiot zu bleiben.
- „Verweigern Sie Hilfe nicht grundlos“. Dieser Punkt ist das Gegenteil des vorherigen. Wenn Ihnen eine dumme Frage gestellt wird – klären Sie sie und erklären Sie. Wenn um etwas Unmögliches gebeten wird – erläutern Sie, dass es unmöglich ist und warum, und bieten Sie Alternativen an. Wenn Sie keine Zeit haben (wirklich keine Zeit, nicht nur keine Lust) – sagen Sie, dass Sie ein dringendes Anliegen haben, aber später darauf zurückkommen werden. Wenn Ihre Kollegen keine dringenden Aufgaben haben, schlagen Sie vor, sich an sie zu wenden, und delegieren Sie das Anliegen.
- „Geben wir Feedback“. Hat ein Kollege eine neue Methode oder ein neues Skript eingeführt und jetzt sehen Sie sich mit negativen Konsequenzen konfrontiert? Lassen Sie es uns wissen. Möglicherweise lässt sich das Problem mit drei Zeilen Code oder fünf Minuten Anpassung lösen. Haben Sie einen Fehler in der Software entdeckt? Melden Sie den Bug. Wenn er reproduzierbar ist oder nicht reproduziert werden muss, wird er wahrscheinlich behoben. Teilen Sie Wünsche, Vorschläge und konstruktive Kritik mit, bringen Sie Themen zur Diskussion, wenn sie relevant erscheinen.
- „Bitte um Feedback“. Wir sind alle nicht perfekt, ebenso wie unsere Entscheidungen. Der beste Weg, die Richtigkeit einer Entscheidung zu überprüfen, ist, sie zur Diskussion zu stellen. Haben Sie bei einem Kunden etwas optimiert? Bitten Sie darum, die Leistung zu überwachen. Vielleicht liegt das „Flaschenhals“-Problem nicht dort, wo Sie vermutet haben. Haben Sie ein hilfreiches Skript erstellt? Zeigen Sie es Ihren Kollegen, vielleicht finden sie Wege, es zu verbessern.
Wenn Sie diese Praktiken konsequent in Ihrer Arbeit anwenden, hören die meisten Probleme auf, Probleme zu sein: Sie minimieren nicht nur Ihre eigenen Fehler und Missgeschicke, sondern haben auch die Möglichkeit, Fehler zu beheben (dank Backups und Kollegen, die Ihnen raten, Backups zu erstellen). Danach folgen nur noch technische Details, in denen, wie bekannt, der Teufel steckt.
Die wichtigsten Werkzeuge, mit denen Sie mehr als 50% Ihrer Zeit arbeiten werden, sind grep und vim. Was könnte einfacher sein? Textsuche und Textbearbeitung. Doch sowohl grep als auch vim sind mächtige multifunktionale Werkzeuge, die eine effiziente Suche und Bearbeitung von Texten ermöglichen. Während ein einfacher Windows-Notepad Ihnen lediglich erlaubt, eine Zeile zu schreiben oder zu löschen, können Sie in vim nahezu alles mit dem Text machen. Glauben Sie mir nicht? Rufen Sie im Terminal den Befehl vimtutor auf und beginnen Sie zu lernen. Was grep betrifft – seine Hauptstärke liegt in den regulären Ausdrücken. Ja, das Tool ermöglicht die flexible Definition von Suchbedingungen und ausgegebenen Daten, aber ohne RegExp macht das wenig Sinn. Und Sie sollten auf jeden Fall die grundlegenden Kenntnisse über reguläre Ausdrücke haben! Zum Einstieg empfehle ich Ihnen, sich dieses anzusehen , in dem die Grundlagen der regulären Ausdrücke und deren Anwendung zusammen mit grep behandelt werden. Ach ja, wenn Sie sie mit vim kombinieren, erhalten Sie die ULTIMATIVE MÖGLICHKEIT, solche Dinge mit Text zu machen, dass sie mit 18+-Symbolen gekennzeichnet werden müssen.
Von den verbleibenden 50% entfallen 40% auf das Paket coreutils. Eine Liste für coreutils finden Sie in , und das Handbuch für die gesamte Liste finden Sie auf der Website . Was nicht in diesem Set abgedeckt ist, finden Sie in den Utilities . Es ist nicht notwendig, sich alle Schlüssel auswendig zu merken, aber zumindest ungefähr zu wissen, was die wichtigsten Werkzeuge können, ist nützlich. Sie müssen das Rad nicht neu erfinden. Ich musste einmal Zeilenumbrüche im Ausgabe einer bestimmten Utility durch Leerzeichen ersetzen, und mein müder Geist kam auf die Konstruktion sed ':a;N;$!ba;s/n/ /g', ein Kollege hat mich mit einem Besen von der Konsole weggezogen und das Problem dann gelöst, indem er schrieb tr 'n' ' '.

Ich würde empfehlen, sich zu merken, was jedes einzelne Tool ungefähr tut, sowie die Schlüssel für die am häufigsten verwendeten Befehle – für alles andere gibt es man. Zögern Sie nicht, man zu konsultieren, wenn Sie sich unsicher sind. Und lesen Sie auf jeden Fall man zu man – es enthält wichtige Informationen darüber, was Sie finden werden.
Mit diesen Werkzeugen können Sie einen erheblichen Teil der Aufgaben, auf die Sie in der Praxis stoßen, effektiv lösen. In den nächsten Vorlesungen werden wir besprechen, wann diese Werkzeuge und die Strukturen der grundlegenden Dienste und Anwendungen, auf die sie angewendet werden, verwendet werden.
Ihr Systemadministrator von FirstVDS, Kirill Zwetkow.
Quelle: habr.com

