Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

Jestem administratorem systemu FirstVDS i to jest tekst pierwszego wykładu wprowadzającego z mojego krótkiego kursu pomocy początkującym kolegom. Specjaliści, którzy niedawno zaczęli zajmować się administracją systemami, borykają się z wieloma tymi samymi problemami. Aby zaproponować rozwiązania, podjąłem się napisania tego cyklu wykładów. Niektóre rzeczy w nim są specyficzne dla wsparcia technicznego hostingu, ale ogólnie mogą być przydatne, jeśli nie dla wszystkich, to dla wielu. Dlatego dostosowałem tekst wykładu i udostępniłem go tutaj.

Nie ma znaczenia, jak nazywa się Twoje stanowisko – ważne, że faktycznie zajmujesz się administracją. Dlatego zacznijmy od tego, co powinien zrobić administrator systemu. Jego głównym zadaniem jest porządkowanie, utrzymywanie porządku i przygotowanie na przyszłe wzrosty porządku. Bez administratora systemu na serwerze panuje bałagan. Logi nie są zapisywane, albo są w nich zapisywane niewłaściwe rzeczy, zasoby nie są optymalnie rozłożone, dysk jest zaśmiecony wszelkiego rodzaju śmieciami i system zaczyna powoli umierać z powodu ogromnego chaosu. Spokojnie! Administratorzy systemu w Twojej osobie zaczynają rozwiązywać problemy i eliminować bałagan!

Filary administracji systemem

Zanim jednak zaczniesz rozwiązywać problemy, warto zapoznać się z czterema głównymi filarami administracji:

  1. Dokumentacja
  2. Szablonowanie
  3. Optymalizacja
  4. Automatyzacja

To jest podstawa. Jeśli nie zbudujesz swojego przepływu pracy w oparciu o te zasady, będzie on nieskuteczny, bezproduktywny i ogólnie w niewielkim stopniu będzie przypominał prawdziwą administrację. Przyjrzyjmy się każdemu z osobna.

Dokumentacja

Dokumentacja nie oznacza czytania dokumentacji (choć bez niej się nie obejdzie), ale także jej utrzymywania.

Jak przechowywać dokumentację:

  • Czy napotkałeś nowy problem, którego nigdy wcześniej nie widziałeś? Zapisz główne objawy, metody diagnozowania i zasady eliminacji.
  • Czy wpadłeś na nowe, eleganckie rozwiązanie częstego problemu? Zapisz to, żeby nie musieć wymyślać tego na nowo za miesiąc.
  • Czy pomogli Ci odpowiedzieć na pytanie, którego nie zrozumiałeś? Zapisz główne punkty i koncepcje, narysuj diagram dla siebie.

Główna idea: nie powinieneś całkowicie ufać własnej pamięci podczas opanowywania i stosowania nowych rzeczy.

To, w jakim formacie to zrobisz, zależy od Ciebie: może to być system z notatkami, osobisty blog, plik tekstowy, fizyczny notatnik. Najważniejsze jest to, że Twoje rekordy spełniają następujące wymagania:

  1. Nie bądź zbyt długi. Podkreśl główne idee, metody i narzędzia. Jeśli zrozumienie problemu wymaga zagłębienia się w niskopoziomową mechanikę alokacji pamięci w Linuksie, nie przepisuj artykułu, z którego się tego nauczyłeś – podaj link do niego.
  2. Wpisy powinny być dla Ciebie jasne. Jeśli linia race cond.lockup nie pozwala od razu zrozumieć tego, co opisałeś tą linijką - wyjaśnij. Zrozumienie dobrej dokumentacji nie zajmuje pół godziny.
  3. Wyszukiwanie to bardzo dobra funkcja. Jeśli piszesz posty na blogu, dodaj tagi; jeśli jesteś w fizycznym notatniku, przyklej małe karteczki z opisami. Dokumentacja nie ma większego sensu, jeśli poświęcisz na szukanie w niej odpowiedzi tyle samo czasu, ile spędziłbyś na rozwiązywaniu pytania od zera.

Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

Tak może wyglądać dokumentacja: od prymitywnych notatek w notatniku (obrazek powyżej), po pełnoprawną bazę wiedzy dla wielu użytkowników z tagami, wyszukiwaniem i wszystkimi możliwymi udogodnieniami (poniżej).

Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

Nie tylko nie będziesz musiał szukać dwa razy tych samych odpowiedzi, ale dokumentowanie będzie bardzo pomocne w nauce nowych tematów (uwagi!), poprawi Twój pajęczy zmysł (umiejętność zdiagnozowania złożonego problemu jednym powierzchownym spojrzeniem), i doda organizacji Twoim działaniom. Jeśli dokumentacja jest dostępna dla Twoich współpracowników, pozwoli im to dowiedzieć się, co i jak tam zgromadziłeś, gdy Cię tam nie było.

Szablonowanie

Szablonowanie jest tworzenie i używanie szablonów. Aby rozwiązać większość typowych problemów, warto stworzyć konkretny szablon działania. Do diagnozowania większości problemów należy zastosować standardową sekwencję kroków. Kiedy coś naprawiłeś/zainstalowałeś/zoptymalizowałeś, działanie tego czegoś powinno zostać sprawdzone przy użyciu standardowych list kontrolnych.

Szablony to najlepszy sposób na zorganizowanie przepływu pracy. Stosując standardowe procedury do rozwiązania najczęstszych problemów, zyskujesz mnóstwo fajnych rzeczy. Na przykład użycie list kontrolnych pozwoli Ci zdiagnozować wszystkie funkcje ważne dla Twojej pracy i odrzucić diagnozę nieistotnych funkcjonalności. Standaryzowane procedury zminimalizują niepotrzebne rzucanie i zmniejszą prawdopodobieństwo błędu.

Pierwszą ważną kwestią jest to, że procedury i listy kontrolne również muszą być udokumentowane. Jeśli polegasz tylko na pamięci, możesz przeoczyć naprawdę ważną kontrolę lub operację i wszystko zrujnować. Drugą ważną kwestią jest to, że wszystkie szablonowe praktyki można i należy modyfikować, jeśli wymaga tego sytuacja. Nie ma szablonów idealnych i absolutnie uniwersalnych. Jeśli występuje problem, ale sprawdzenie szablonu go nie ujawniło, nie oznacza to, że problemu nie ma. Zanim jednak zaczniesz testować mało prawdopodobne, hipotetyczne problemy, zawsze warto najpierw przeprowadzić szybki test szablonu.

Optymalizacja

Optymalizacja mówi samo za siebie. Proces pracy musi być maksymalnie zoptymalizowany pod względem czasu i kosztów pracy. Możliwości jest niezliczona ilość: naucz się skrótów klawiaturowych, skrótów, wyrażeń regularnych, dostępnych narzędzi. Poszukaj bardziej praktycznych zastosowań tych narzędzi. Jeśli wywołujesz polecenie 100 razy dziennie, przypisz je do skrótu klawiaturowego. Jeśli potrzebujesz regularnie łączyć się z tymi samymi serwerami, napisz jednym słowem alias, który Cię tam połączy:

Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

Zapoznaj się z różnymi opcjami dostępnymi dla narzędzi - być może istnieje wygodniejszy klient terminala, DE, menedżer schowka, przeglądarka, klient poczty e-mail, system operacyjny. Dowiedz się, z jakich narzędzi korzystają Twoi współpracownicy i znajomi – może wybierają je nie bez powodu. Gdy już zdobędziesz narzędzia, naucz się z nich korzystać: poznaj klawisze, skróty, porady i wskazówki.

Optymalnie wykorzystaj standardowe narzędzia - coreutils, vim, wyrażenia regularne, bash. W przypadku trzech ostatnich istnieje ogromna liczba wspaniałych instrukcji i dokumentacji. Z ich pomocą możesz szybko przejść ze stanu „Czuję się jak małpa, która rozgryza orzechy na laptopie” do „Jestem małpą, która korzysta z laptopa, żeby zamówić sobie dziadka do orzechów”.

Automatyzacja

Automatyzacja przeniesie trudne operacje z naszych zmęczonych rąk do niestrudzonych rąk automatyzacji. Jeśli w pięciu poleceniach tego samego typu wykonywana jest jakaś standardowa procedura, dlaczego nie umieścić wszystkich tych poleceń w jednym pliku i wywołać jedno polecenie, które pobiera i wykonuje ten plik?

Sama automatyzacja to w 80% pisanie i optymalizacja własnych narzędzi (a kolejne 20% to starania, aby działały tak, jak powinny). Może to być po prostu zaawansowane jednoliniowe narzędzie lub ogromne, wszechmocne narzędzie z interfejsem internetowym i API. Głównym kryterium jest to, że utworzenie narzędzia nie powinno zająć więcej czasu i wysiłku niż ilość czasu i wysiłku, które narzędzie zaoszczędzi. Jeśli spędzisz pięć godzin na pisaniu skryptu, którego nigdy więcej nie będziesz potrzebować, w celu wykonania zadania, którego rozwiązanie zajęłoby godzinę lub dwie bez skryptu, jest to bardzo słaba optymalizacja przepływu pracy. Na stworzenie narzędzia można poświęcić pięć godzin tylko wtedy, gdy pozwala na to ilość, rodzaj zadań i czas, co nie zdarza się często.

Automatyzacja nie musi oznaczać pisania pełnoprawnych skryptów. Na przykład, aby utworzyć z listy kilka obiektów tego samego typu, wystarczy sprytny jednowierszowy tekst, który automatycznie wykona to samo, co zrobiłbyś ręcznie, przełączając się między oknami, z dużą ilością kopiuj-wklej.

Tak naprawdę, jeśli zbudujesz proces administracji na tych czterech filarach, możesz szybko zwiększyć swoją efektywność, produktywność i kwalifikacje. Jednak tę listę należy uzupełnić o jeszcze jedną pozycję, bez której praca w IT jest prawie niemożliwa – samokształcenie.

Samokształcenie administratora systemu

Aby być choć trochę kompetentnym w tej dziedzinie, trzeba ciągle się uczyć i uczyć nowych rzeczy. Jeśli nie masz najmniejszej ochoty stawić czoła nieznanemu i rozgryźć go, bardzo szybko utkniesz. W IT nieustannie pojawiają się wszelkiego rodzaju nowe rozwiązania, technologie i metody, a jeśli nie przestudiujesz ich choćby powierzchownie, jesteś na drodze do porażki. Wiele obszarów technologii informatycznych opiera się na bardzo złożonych i obszernych podstawach. Na przykład działanie sieci. Sieci i Internet są wszędzie, spotykasz je każdego dnia, ale kiedy zagłębisz się w technologię, która za nimi stoi, odkryjesz ogromną i bardzo złożoną dyscyplinę, której studiowanie nigdy nie jest spacerkiem po parku.

Nie umieściłem tej pozycji na liście, ponieważ jest ona kluczowa dla IT w ogóle, a nie tylko dla administracji systemem. Oczywiście nie wszystkiego nauczysz się od razu – po prostu fizycznie nie masz na to czasu. Dlatego kształcąc się, należy pamiętać o niezbędnych poziomach abstrakcji.

Nie musisz od razu uczyć się, jak działa zarządzanie pamięcią wewnętrzną każdego narzędzia i jak współdziała ono z zarządzaniem pamięcią w systemie Linux, ale dobrze jest wiedzieć, czym jest RAM w sposób schematyczny i do czego jest potrzebny. Nie musisz wiedzieć, czym nagłówki TCP i UDP różnią się strukturalnie, ale dobrym pomysłem byłoby zrozumienie podstawowych różnic w działaniu protokołów. Nie musisz wiedzieć, jakie jest tłumienie sygnału w optyce, ale dobrze byłoby wiedzieć, dlaczego rzeczywiste straty są zawsze dziedziczone pomiędzy węzłami. Nie ma nic złego w tym, że wiesz, jak działają pewne elementy na pewnym poziomie abstrakcji i niekoniecznie rozumiesz wszystkie poziomy, gdy abstrakcji w ogóle nie ma (po prostu oszalejesz).

Jednak w Twojej branży myślenie na poziomie abstrakcji „no cóż, to jest rzecz, która pozwala na wyświetlanie stron internetowych” nie jest zbyt dobre. Kolejne wykłady poświęcone będą przeglądowi głównych obszarów, z którymi musi się uporać administrator systemu pracując na niższych poziomach abstrakcji. Postaram się ograniczyć ilość recenzowanej wiedzy do minimalnego poziomu abstrakcji.

10 przykazań administracji systemem

Poznaliśmy więc cztery główne filary i podstawy. Czy możemy zacząć rozwiązywać problemy? Jeszcze nie. Przed przystąpieniem do tej czynności wskazane jest zapoznanie się z tzw. „dobrymi praktykami” i zasadami dobrych manier. Bez nich prawdopodobnie wyrządzisz więcej szkody niż pożytku. Zacznijmy więc:

  1. Niektórzy z moich kolegów uważają, że pierwszą zasadą jest „nie szkodzić”. Ale jestem skłonny się nie zgodzić. Kiedy starasz się nie szkodzić, nic nie możesz zrobić – zbyt wiele działań jest potencjalnie destrukcyjnych. Myślę, że najważniejsza zasada brzmi: „zrób kopię zapasową”. Nawet jeśli wyrządzisz jakieś szkody, zawsze możesz się wycofać i wszystko nie będzie takie złe.

    Zawsze powinieneś tworzyć kopie zapasowe, gdy pozwala na to czas i miejsce. Musisz wykonać kopię zapasową tego, co zmienisz i co ryzykujesz utratą w wyniku potencjalnie destrukcyjnego działania. Wskazane jest sprawdzenie kopii zapasowej pod kątem integralności i obecności wszystkich niezbędnych danych. Kopii zapasowej nie należy usuwać natychmiast po sprawdzeniu wszystkiego, chyba że konieczne jest zwolnienie miejsca na dysku. Jeśli wymaga tego lokalizacja, utwórz kopię zapasową na swoim serwerze osobistym i usuń po tygodniu.

  2. Druga najważniejsza zasada (którą sama często łamię) brzmi „nie ukrywaj się”. Jeśli wykonałeś kopię zapasową, napisz gdzie, aby Twoi współpracownicy nie musieli jej szukać. Jeśli wykonałeś jakieś nieoczywiste lub skomplikowane czynności, zapisz to: wrócisz do domu, a problem może się powtórzyć lub pojawić się u kogoś innego, a Twoje rozwiązanie zostanie znalezione za pomocą słów kluczowych. Nawet jeśli zrobisz coś, na czym dobrze się znasz, twoi koledzy mogą tego nie robić.
  3. Trzeciej zasady nie trzeba wyjaśniać: „nigdy nie rób czegoś, czego konsekwencji nie znasz, nie wyobrażasz sobie ani nie rozumiesz”. Nie kopiuj poleceń z Internetu, jeśli nie wiesz, do czego służą, zadzwoń do man i najpierw je przeanalizuj. Nie korzystaj z gotowych rozwiązań, jeśli nie rozumiesz ich działania. Ogranicz wykonywanie zaciemnionego kodu do absolutnego minimum. Jeśli nie masz czasu, aby to rozgryźć, oznacza to, że robisz coś złego i powinieneś przeczytać następny punkt.
  4. "Test". Nowe skrypty, narzędzia, linijki i polecenia należy testować w kontrolowanym środowisku, a nie na komputerze klienckim, jeśli istnieje choćby minimalny potencjał destrukcyjnych działań. Nawet jeśli wykonałeś kopię zapasową wszystkiego (i tak zrobiłeś), przestoje nie są najfajniejszą rzeczą. Utwórz w tym celu oddzielny serwer/wirtualny/chroot i przetestuj tam. Czy coś jest zepsute? Następnie możesz uruchomić go w trybie „walki”.

    Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

  5. "Kontrola". Zminimalizuj wszystkie operacje, na które nie masz wpływu. Jedna krzywa zależności pakietu może przeciągnąć połowę systemu, a ustawiona flaga -y dla yum usuwania daje możliwość przećwiczenia umiejętności odzyskiwania systemu od zera. Jeśli akcja nie ma niekontrolowanych alternatyw, kolejnym punktem jest gotowa kopia zapasowa.
  6. "Sprawdzać". Sprawdź konsekwencje swoich działań i czy konieczne jest przywrócenie kopii zapasowej. Sprawdź, czy problem rzeczywiście został rozwiązany. Sprawdź, czy błąd się powtarza i w jakich warunkach. Sprawdź, co możesz przełamać swoimi działaniami. Nie ma potrzeby ufać naszej pracy, ale nigdy jej nie sprawdzać.
  7. "Komunikować się". Jeśli nie możesz rozwiązać problemu, zapytaj kolegów, czy się z tym spotkali. Jeśli chcesz zastosować kontrowersyjną decyzję, poznaj opinię swoich współpracowników. Być może zaproponują lepsze rozwiązanie. Jeżeli nie jesteś pewien swoich działań, przedyskutuj je ze współpracownikami. Nawet jeśli jest to Twoja specjalizacja, świeże spojrzenie na sytuację może wiele wyjaśnić. Nie wstydź się własnej niewiedzy. Lepiej zadać głupie pytanie, wyglądać jak głupiec i uzyskać odpowiedź, niż nie zadać pytania, nie uzyskać odpowiedzi i wyjść na głupca.
  8. „Nie odmawiaj pomocy bez powodu”. Ten punkt jest odwrotnością poprzedniego. Jeśli zostaniesz zadane głupie pytanie, wyjaśnij i wyjaśnij. Proszą o niemożliwe – wyjaśnij, że jest to niemożliwe i dlaczego, zaproponuj alternatywy. Jeśli nie masz czasu (naprawdę nie masz czasu, a nie ochoty) - powiedz, że masz pilne pytanie, dużo pracy, ale załatwisz to później. Jeśli koledzy nie mają pilnych zadań, zaproponuj kontakt i przekazanie pytania.
  9. "Przekaż opinię". Czy któryś z Twoich kolegów zaczął stosować nową technikę lub nowy scenariusz i czy spotykasz się z negatywnymi konsekwencjami tej decyzji? Zgłoś to. Być może problem można rozwiązać w trzech linijkach kodu lub pięciu minutach doskonalenia techniki. Czy natrafiłeś na błąd w swoim oprogramowaniu? Zgłoś błąd. Jeżeli błąd można odtworzyć lub nie ma potrzeby jego powielania, najprawdopodobniej zostanie on naprawiony. Wyraź swoje życzenia, sugestie i konstruktywną krytykę oraz zadaj pytania do dyskusji, jeśli wydają się istotne.
  10. „Poproś o opinię”. Wszyscy jesteśmy niedoskonali, podobnie jak nasze decyzje, a najlepszym sposobem sprawdzenia poprawności swojej decyzji jest poddanie jej dyskusji. Jeśli zoptymalizowałeś coś dla klienta, poproś go o monitorowanie pracy; być może wąskie gardło w systemie nie jest tam, gdzie szukałeś. Napisałeś skrypt pomocy - pokaż go swoim współpracownikom, może znajdą sposób, aby go ulepszyć.

Jeśli będziesz stale stosować te praktyki w swojej pracy, większość problemów przestanie być problemami: nie tylko zredukujesz do minimum liczbę własnych błędów i pomyłek, ale także będziesz miał możliwość poprawiania błędów (w formie kopii zapasowych i współpracownikom, którzy doradzą Ci wykonanie kopii zapasowej). Dalej – same szczegóły techniczne, w których, jak wiemy, kryje się diabeł.

Głównymi narzędziami, z którymi będziesz musiał pracować przez ponad 50% czasu, są grep i vim. Co może być prostszego? Wyszukiwanie i edycja tekstu. Jednak zarówno grep, jak i vim to potężne narzędzia wielofunkcyjne, które pozwalają efektywnie wyszukiwać i edytować tekst. Jeśli jakiś notatnik systemu Windows pozwala po prostu napisać/usunąć linię, to w vimie możesz zrobić prawie wszystko z tekstem. Jeśli mi nie wierzysz, wywołaj polecenie vimtutor z terminala i rozpocznij naukę. Jeśli chodzi o grep, jego główną siłą są wyrażenia regularne. Tak, samo narzędzie pozwala dość elastycznie ustawić warunki wyszukiwania i dane wyjściowe, ale bez RegExp nie ma to większego sensu. I musisz znać wyrażenia regularne! Przynajmniej na podstawowym poziomie. Na początek radzę się temu przyjrzeć wideo, omawia podstawy wyrażeń regularnych i ich użycie w połączeniu z grep. O tak, kiedy połączysz je z vimem, otrzymasz możliwość NAJWYŻSZEJ MOCY do robienia rzeczy z tekstem, który musisz oznaczyć etykietą ponad 18 ikon.

Z pozostałych 50% 40% pochodzi z zestawu narzędzi coreutils. W przypadku coreutils możesz spojrzeć na listę pod adresem Wikipedia, a instrukcja dotycząca całej listy znajduje się w witrynie internetowej GNU. To, czego nie obejmuje ten zestaw, znajduje się w narzędziach POSIX. Nie musisz uczyć się wszystkich klawiszy na pamięć, ale warto przynajmniej wiedzieć mniej więcej, do czego służą podstawowe narzędzia. Nie musisz na nowo wymyślać koła od kul. W jakiś sposób musiałem zastąpić podziały wierszy spacjami w wynikach jakiegoś narzędzia, a mój chory mózg zrodził taką konstrukcję sed ':a;N;$!ba;s/n/ /g', podjechał kolega i odwiózł mnie miotłą od konsoli, po czym rozwiązał problem pisząc tr 'n' ' '.

Dla początkującego administratora systemu: jak z chaosu stworzyć porządek

Radziłbym zapamiętać, co robi każde narzędzie i klawisze do najczęściej używanych poleceń, za wszystko inne odpowiada człowiek. W razie wątpliwości zadzwoń do człowieka. I koniecznie przeczytaj samego mężczyznę - zawiera ważne informacje na temat tego, co znajdziesz.

Znając te narzędzia, będziesz w stanie skutecznie rozwiązać znaczną część problemów, które napotkasz w praktyce. W kolejnych wykładach przyjrzymy się, kiedy należy używać tych narzędzi oraz frameworkom dla podstawowych usług i aplikacji, do których się odnoszą.

Był z tobą administrator systemu FirstVDS Kirill Tsvetkov.

Źródło: www.habr.com

Dodaj komentarz