Pentru un administrator de sistem începător: cum să transformi haosul în ordine

Pentru un administrator de sistem începător: cum să transformi haosul în ordine

Sunt administrator de sistem la FirstVDS și acesta este textul primei lecții introductive din cursul meu scurt de suport pentru colegii începători. Specialiștii care au început recent să se ocupe de administrarea sistemelor se confruntă cu o serie de probleme comune. Pentru a oferi soluții, am decis să scriu acest ciclu de lecții. Unele aspecte sunt specifice suportului tehnic pentru găzduire, dar în general, pot fi utile, dacă nu pentru toți, atunci pentru mulți. Prin urmare, am adaptat textul lecției pentru a împărtăși aici.

Nu contează cum se numește funcția ta — este important că, în realitate, te ocupi de administrare. Așadar, să începem cu ceea ce trebuie să facă un administrator de sistem. Sarcina sa principală este organizarea, menținerea ordinii și pregătirea pentru viitoarele creșteri ale ordinii. Fără un administrator de sistem, serverul devine haotic. Jurnalele nu sunt scrise sau conțin informații greșite, resursele sunt distribuite neeficient, discul este umplut cu tot felul de gunoi, iar sistemul începe să se degradeze din cauza acestui haos. Calm! Administratorii de sistem vor începe să rezolve problemele și să elimine haosul!

Stâlpii administrării sistemelor

Cu toate acestea, înainte de a începe rezolvarea problemelor, este important să ne familiarizăm cu cei patru stâlpi principali ai administrării:

  1. Documentația
  2. Modelarea
  3. Optimizarea
  4. Automatizarea

Aceasta este baza fundamentală. Dacă nu îți construiești fluxul de lucru pe aceste principii, acesta va fi ineficient, neproductiv și nu va semăna deloc cu o adevărată administrare. Să analizăm fiecare în parte.

Documentație

Documentație presupune nu doar citirea documentației (deși aceasta este esențială), ci și menținerea acesteia.

Cum să ții evidența documentației:

  • Te-ai confruntat cu o problemă nouă pe care nu ai mai văzut-o înainte? Notează principalele simptome, metodele de diagnosticare și principiile de soluționare.
  • Ai găsit o soluție elegantă pentru o problemă comună? Noteaz-o, ca să nu fii nevoit să o reinventez din nou peste o lună.
  • Te-a ajutat cineva să înțelegi o problemă pe care nu o cunoșteai? Notează principalele idei și concepte, fă-ți un schițaj.

Ideea principală: nu trebuie să te bazezi complet pe propria memorie atunci când înveți și aplici lucruri noi.

Formatul în care o vei face depinde doar de tine: poate fi un sistem de notițe, un blog personal, un fișier text sau un caiet fizic. Ceea ce contează este ca înregistrările tale să respecte următoarele cerințe:

  1. Să nu fie excesiv de lungi.Evidențiază ideile, metodele și instrumentele principale. Dacă înțelegerea problemei necesită aprofundarea în mecanica de bază a modului în care funcționează alocarea memoriei în Linux, nu rescrie articolul din care ai învățat — oferă un link către acesta.
  2. Înregistrările trebuie să fie clare pentru tine. Dacă linia race cond.lockup nu îți permite să înțelegi imediat ce ai descris cu acea linie — explică. Într-o bună documentație nu ar trebui să te chinui să deslușești informația timp de o jumătate de oră.
  3. Căutarea este o caracteristică foarte utilă. Dacă îți ții notițele într-un blog, adaugă etichete; dacă într-un caiet fizic — lipește mici post-it-uri cu descrieri. Nu are sens să ai o documentație dacă petreci la fel de mult timp căutând un răspuns în ea ca și cum ai rezolva problema de la zero.

Pentru un administrator de sistem începător: cum să transformi haosul în ordine

Așa poate arăta documentația: de la înregistrări primitive într-un caiet (imaginea de mai sus) la o bază de cunoștințe colaborativă completă, cu etichete, căutare și toate conforturile posibile (mai jos).

Pentru un administrator de sistem începător: cum să transformi haosul în ordine

Nu numai că nu va trebui să cauți aceleași răspunsuri de două ori: documentarea va fi un ajutor excelent în învățarea unor subiecte noi (este, de fapt, un caiet de notițe!), îți va îmbunătăți intuiția tehnică (capacitatea de a diagnostica o problemă complexă cu o simplă privire), adăugând organizare acțiunilor tale. Dacă documentația este accesibilă colegilor tăi, le va permite să înțeleagă ce ai realizat când nu ești prezent.

Șablonizarea

Șablonizarea este crearea și utilizarea de șabloane. Pentru a rezolva majoritatea problemelor tipice, este bine să creezi un șablon specific de acțiuni. Pentru a diagnostica majoritatea problemelor, ar trebui să folosești o secvență standardizată de acțiuni. Când repari/instalezi/optimizezi ceva, funcționalitatea acestuia trebuie verificată conform unor liste de control standardizate.

Șablonizarea este cea mai bună metodă de organizare a fluxului de lucru. Folosind proceduri standardizate pentru a rezolva cele mai frecvente probleme, obțineți multe lucruri utile. De exemplu, utilizarea listelor de verificare vă va permite să diagnosticați toate funcțiile importante pentru lucru și să eliminați diagnosticul funcționalităților mai puțin importante. Procedurile standardizate vor reduce la minimum agitația inutilă și vor scădea probabilitatea erorilor.

Primul aspect important este că procedurile și listele de verificare trebuie de asemenea documentate. Dacă ne bazăm doar pe memorie, putem rata o verificare sau o operațiune cu adevărat importantă și totul se va distruge. Al doilea aspect important este că toate practicile template trebuie modificate, dacă situația o cere. Nu există șabloane ideale și universale. Dacă există o problemă, iar verificarea șablonului nu a detectat-o, nu înseamnă că problema nu există. Cu toate acestea, înainte de a verifica problemele ipotetice cu o probabilitate mică, este întotdeauna bine să faceți mai întâi o verificare rapidă a șablonului.

Optimizare

Optimizare vorbește de la sine. Fluxul de lucru trebuie maxim optimizat din punctul de vedere al timpului și eforturilor. Aici sunt nenumărate variante: învățați tastele rapide, abrevierile, expresiile regulate, instrumentele disponibile. Căutați modalități mai practice de utilizare a acestor instrumente. Dacă chemați comanda de 100 de ori pe zi, legați-o de o tastă rapidă. Dacă trebuie să vă conectați frecvent la aceleași servere, scrieți un alias într-un singur cuvânt, care să vă conecteze acolo:

Pentru un administrator de sistem începător: cum să transformi haosul în ordine

Familiarizați-vă cu diferite opțiuni de instrumente disponibile – s-ar putea să existe un client terminal mai convenabil, DE, un manager de clipboard, un browser, un client de mail, un sistem de operare. Aflați ce instrumente folosesc colegii și cunoscuții dvs. – poate că le aleg dintr-un motiv întemeiat. După ce ați selectat instrumentele, învățați să le utilizați: învățați tastele, abrevierile, tips and tricks.

Utilizați în mod optim instrumentele standard - coreutils, vim, expresii regulate, bash. Pentru ultimele trei există o mulțime de manuale excelente și documentație. Cu ajutorul lor, puteți trece destul de repede de la starea de „mă simt ca o maimuță care lovește nucile cu un laptop” la „sunt o maimuță care folosește laptopul pentru a comanda un deschizător de nuci”.

Automatizarea

Automatizarea va transfera operațiile grele din mâinile noastre obosite în mâinile neobosite ale automatizării. Dacă o procedură standard se efectuează în cinci comenzi identice, de ce să nu împachetăm toate aceste comenzi într-un singur fișier și să nu invocăm o comandă care să descarce și să execute acel fișier?

Adevărata automatizare constă în 80% din scrierea și optimizarea propriilor instrumente (și în 20% din încercarea de a le face să funcționeze corect). Poate fi o simplă linie de comandă avansată sau un instrument imens, omnipotent, cu interfață web și API. Principalul criteriu aici este că crearea instrumentului nu ar trebui să dureze mai mult timp și efort decât economiile de timp și efort pe care le va aduce. Dacă petreceți cinci ore scriind un script care nu va mai fi niciodată util, pentru o sarcină care ar fi durat o oră sau două fără script, aceasta este o foarte proastă optimizare a fluxului de lucru. Puteți petrece cinci ore creând un instrument doar dacă numărul, tipul de sarcini și timpul permit acest lucru, ceea ce nu se întâmplă adesea.

Automatizarea nu implică întotdeauna scrierea de scripturi complete. De exemplu, pentru a crea o mulțime de obiecte identice dintr-o listă, este suficientă o linie de comandă ingenioasă care va face automat ceea ce ați face manual, comutând între feronerie, cu tone de copiat și lipit.

Așadar, dacă construiești procesul de administrare pe acești patru stâlpi, poți să-ți îmbunătățești destul de repede eficiența, productivitatea și calificarea. Cu toate acestea, această listă trebuie completată cu un alt punct, fără de care lucrul în IT este practic imposibil - autoformarea.

Autoformarea administratorului de sistem

Pentru a fi puțin competenți în acest domeniu, trebuie să învățăm constant și să descoperim lucruri noi. Dacă nu aveți nici cea mai mică dorință de a vă confrunta cu necunoscutul și de a vă documenta, veți „coborî” foarte repede. În IT apar constant diferite soluții, tehnologii și metode noi, iar dacă nu le studiați măcar superficial — sunteți pe calea pierderii. Multe domenii ale tehnologiilor informaționale se bazează pe fundamente foarte complexe și extinse. De exemplu, rețelele. Rețelele și internetul sunt peste tot, vă confruntați cu ele zilnic, dar dacă începeți să săpați în tehnologiile care stau la baza lor, veți descoperi o disciplină uriașă și foarte complexă, studiul căreia nu este deloc o plimbare în parc.

Nu am inclus acest punct în listă, deoarece este esențial pentru IT în general, nu doar pentru administrarea sistemelor. Evident, nu veți putea învăța totul deodată — pur și simplu nu aveți timp fizic. Așadar, atunci când vă autoeducați, trebuie să țineți cont de nivelurile necesare de abstractizare.

Nu este necesar să învățați imediat cum funcționează managementul intern al memoriei fiecărei utilitare în parte și cum interacționează cu managementul memoriei Linux, dar ar fi bine să știți schematic ce reprezintă memoria RAM și de ce este necesară. Nu este necesar să știți cum se diferă structurat anteturile TCP de cele UDP, dar ar fi bine să înțelegeți principalele diferențe dintre protocoale în utilizare. Nu trebuie să studiați ce înseamnă atenuarea semnalului în fibră optică, dar ar fi bine să știți de ce pierderile reale sunt întotdeauna moștenite pe noduri. Nu este nimic greșit în a ști cum funcționează anumite elemente la un anumit nivel de abstractizare și nu este obligatoriu să analizați toate nivelurile atunci când nu există nicio abstractizare (o să vă înnebuniți).

Cu toate acestea, în domeniul dumneavoastră, a raționa la nivel de abstractizare ca „ei bine, este un lucru care permite afișarea unor site-uri” — nu este foarte bine. Următoarele lecții vor fi dedicate unei prezentări a principalelor domenii cu care un administrator de sistem trebuie să se confrunte în muncă la niveluri mai joase de abstractizare. Voi încerca să restrâng numărul cunoștințelor supuse revizuirii la minimul necesar de abstractizare.

Cele 10 porunci ale administrării sistemelor

Așadar, am învățat cele patru piloni principali și fundația. Putem începe să rezolvăm problemele? Încă nu. Înainte de asta, este recomandat să ne familiarizăm cu așa-numitele „best practices” și regulile de bună conduită. Fără acestea, riscați să aduceți mai mult rău decât bine. Așadar, să începem:

  1. Unii dintre colegii mei consideră că prima regulă este „nu dăunează”. Dar eu tind să nu fiu de acord. Atunci când încerci să nu dăunezi, nu poți face nimic — prea multe acțiuni sunt potențial distructive. Cea mai importantă regulă pe care o consider eu este — „fă un backup”. Chiar dacă dăunezi, întotdeauna poți reveni și totul nu va fi atât de rău.

    Trebuie să faci backup de fiecare dată când timpul și locul permit. Trebuie să faci backup la ceea ce intenționezi să schimbi și la ceea ce riscă să se piardă în urma unei acțiuni potențial destructive. Este bine să verifici backupul pentru integritate și pentru a te asigura că ai toate datele necesare. Nu trebuie să ștergi backupul imediat după ce totul a fost verificat, decât dacă este necesar să eliberezi spațiu pe disc. Dacă este nevoie de spațiu, fă backup pe serverul tău personal și șterge-l după o săptămână.

  2. A doua regulă ca importanță (pe care eu o încalc adesea) este „nu ascunde”. Dacă ai făcut un backup, scrie — unde, pentru ca colegii tăi să nu fie nevoiți să-l caute. Dacă ai realizat anumite acțiuni neobișnuite sau complexe, notează-le: te vei duce acasă, iar problema poate reapărea sau poate apărea la altcineva, iar soluția ta va fi găsită prin cuvinte cheie. Chiar dacă faci ceva ce știi foarte bine, este posibil ca colegii tăi să nu cunoască acest lucru.
  3. Nu este nevoie să explici a treia regulă: „nu face niciodată ceva a cărui consecințe nu le știi, nu le imaginezi sau nu le înțelegi”. Nu copia comenzi din internet dacă nu știi ce fac, cheamă man și parsează întâi. Nu aplici soluții gata făcute dacă nu poți înțelege ce fac. Reduce la minimum utilizarea codului obfuscat. Dacă nu ai timp să înțelegi, atunci faci ceva greșit și trebuie să te familiarizezi cu următorul punct.
  4. „Testează”. Noile scripturi, instrumente, comenzi și unelte de linie ar trebui verificate într-un mediu controlat, nu pe mașina clientului, dacă există măcar un minim de potențial pentru acțiuni dăunătoare. Chiar dacă ați făcut backup (și, cu siguranță, ați făcut), downtime-ul nu este un lucru plăcut. Alegeți un server virtual, o mașină virtuală sau un chroot separată pentru a testa. Nimic nu s-a stricat? Atunci, puteți rula pe „produs”.

    Pentru un administrator de sistem începător: cum să transformi haosul în ordine

  5. „Controlează”. Reduceți la minimum toate operațiunile pe care nu le controlați. O dependență problematică a unui pachet poate trage după sine jumătate din sistem, iar opțiunea de a folosi flag-ul -y pentru yum remove vă oferă oportunitatea de a vă exersa abilitățile de recuperare a sistemului de la zero. Dacă acțiunea nu are alternative necontrolate, treceți la următorul punct și aveți un backup gata.
  6. „Verifică”. Verificați consecințele acțiunilor voastre și dacă este nevoie să reveniți la backup. Asigurați-vă că problema a fost rezolvată. Verificați dacă eroarea se reproduce și în ce condiții. Verificați ce puteți strica prin acțiunile voastre. A avea încredere în munca noastră este inutil, dar a verifica este esențial.
  7. „Comunică”. Dacă nu reușiți să rezolvați problema, întrebați colegii dacă s-au confruntat cu așa ceva. Doriți să aplicați o soluție discutabilă? Aflați opinia colegilor. Este posibil să ofere o soluție mai bună. Nu aveți încredere în acțiunile voastre? Discutati-le cu colegii. Chiar dacă este domeniul vostru de expertiză, o nouă perspectivă poate clarifica mult. Nu vă temeți de necunoștințele voastre. Este mai bine să pui o întrebare stupida, să pari prost și să primești un răspuns decât să nu întrebi și să rămâi în ignoranță.
  8. „Nu refuza ajutorul fără un motiv întemeiat”. Acest punct este reversul celui anterior. Dacă ți se pune o întrebare stupida, clarifică și explică. Dacă se cere ceva imposibil, explică de ce nu este realizabil și propune alternative. Dacă nu ai timp (cu adevărat nu ai timp, nu doar nu ai chef) — spune că ai o problemă urgentă sau o sarcină mare, dar te vei ocupa de ea mai târziu. Dacă colegii nu au sarcini urgente, suggerați-le să se ocupe și delegați problema.
  9. „Dă feedback”. Ați întâmpinat consecințe negative din cauza unei noi metode sau a unui nou script aplicat de către unul dintre colegi? Raportați acest lucru. Este posibil ca problema să se rezolve cu trei linii de cod sau cinci minute de perfecționare a metodei. Ați descoperit un bug în software? Raportați bug-ul. Dacă acesta se reproducce sau nu este necesar să fie reprodus, este foarte probabil că va fi rezolvat. Exprimați dorințele, sugestiile și critica constructivă, aduceți întrebările în discuție dacă vi se par relevante.
  10. «Cere feedback». Nu suntem perfecți, precum nici soluțiile noastre, iar cea mai bună modalitate de a verifica corectitudinea unei decizii este să o supunem dezbaterii. Dacă ați optimizat ceva pentru un client, cereți să se urmărească rezultatele, poate „gâtul de sticlă” al sistemului nu se află unde ați căutat. Ați scris un mic script de ajutor? Arătați-l colegilor, poate ei găsesc modalități de a-l îmbunătăți.

Dacă aplicați constant aceste practici în muncă, majoritatea problemelor vor înceta să mai fie probleme: nu doar că veți minimiza erorile și gafele personale, dar veți avea și ocazia de a corecta greșelile (cu ajutorul backup-urilor și al colegilor care vă vor sugera să faceți backup). În continuare — doar detalii tehnice, în care, după cum se știe, se află diavolul.

Principalele instrumente cu care va trebui să lucrați mai mult de 50% din timp sunt grep și vim. Ce poate fi mai simplu? Căutare în text și editare a textului. Cu toate acestea, atât grep, cât și vim sunt unelte multifuncționale extrem de puternice care permit căutarea și editarea textului eficient. Dacă un editor text de Windows vă va permite doar să scrieți/ștergeți o linie, în vim puteți face aproape orice cu textul. Nu credeți — apelați comanda vimtutor din terminal și începeți să învățați. În ceea ce privește grep — adevărata sa forță stă în expresiile regulate. Da, instrumentul în sine permite definirea condițiilor de căutare și a datelor de ieșire într-un mod destul de flexibil, dar fără RegExp nu are prea mult sens. Și trebuie să cunoașteți expresiile regulate! Cel puțin la un nivel de bază. La început, v-aș recomanda să vizionați acesta. video, în care se discută elementele de bază ale expresiilor regulate și utilizarea acestora împreună cu grep. Ah, da, când le combini cu vim, obții puterea ULTIMATĂ de a face cu textul lucruri care merită etichete 18+.

Din cele rămase, 40% sunt atribuite pachetului de instrumente coreutils. Pentru coreutils, lista o poți consulta în wikipedia, iar manualul întregii liste este disponibil pe site-ul GNU. Ceea ce nu este acoperit de acest set se găsește în utilitare. POSIX. Nu este obligatoriu să memorezi toate comenzile pe de rost, dar este util să știi aproximativ ce pot face principalele instrumente. Nu va trebui să reinventezi bicicleta cu cârje. Odată, a trebuit să înlocuiesc întreruperile de linie cu spații în ieșirea unei utilitare, iar mintea mea bolnavă a creat o construcție de genul sed ':a;N;$!ba;s/n/ /g', un coleg apropiat m-a îndepărtat de consolă cu o mătură și apoi a rezolvat problema scriind tr 'n' ' '.

Pentru un administrator de sistem începător: cum să transformi haosul în ordine

Te-aș sfătui să reții ce face fiecare instrument în parte și comenzile cele mai frecvent folosite; pentru restul, există man. Nu ezita să chemi man dacă ai vreo îndoială. Și asigură-te că citești man pentru man – conține informații importante despre ce poți găsi.

Cunoscând aceste instrumente, vei putea să rezolvi eficient o parte semnificativă din sarcinile cu care te vei confrunta în practică. În următoarele lecții, vom analiza când să aplici aceste instrumente și structurile principalelor servicii și aplicații pentru care sunt destinate.

Cu tine a fost administratorul de sistem FirstVDS Kirill Tsvetkov.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster