
Sono un amministratore di sistema di FirstVDS e questo è il testo della mia prima lezione introduttiva del mio breve corso di supporto per i colleghi principianti. I professionisti che hanno recentemente iniziato a lavorare nell'amministrazione di sistema si trovano ad affrontare una serie di problemi comuni. Per fornire soluzioni, ho deciso di scrivere questo ciclo di lezioni. Sebbene alcune cose qui siano specifiche per il supporto tecnico dell'hosting, in generale, potrebbero risultare utili non a tutti, ma a molti. Pertanto, ho adattato il testo della lezione per condividerlo qui.
Non importa quale sia il tuo titolo — ciò che conta è che tu ti occupi di amministrazione. Iniziamo quindi con i compiti di un amministratore di sistema. Il suo compito principale è quello di mantenere l'ordine, garantire la stabilità e prepararsi per le future espansioni. Senza un amministratore di sistema, il server diventa un caos. I log non vengono scritti o contengono informazioni errate, le risorse vengono distribuite in modo inefficiente, il disco si riempie di spazzatura e il sistema inizia a soffrire a causa di tutto questo disordine. Tranquillo! Gli amministratori di sistema, nel tuo ruolo, si mettono al lavoro per risolvere i problemi e porre rimedio al caos!
Pilastri dell'amministrazione di sistema
Tuttavia, prima di affrontare i problemi, è importante conoscere i quattro pilastri principali dell'amministrazione:
- Documentazione
- Template
- Ottimizzazione
- Automazione
Questa è la base fondamentale. Se non costruisci il tuo processo lavorativo su questi principi, sarà inefficace, improduttivo e poco affine alla vera amministrazione. Approfondiamo ogni pilastro separatamente.
Documentazione
Documentazione non implica solo leggere la documentazione (anche se è indispensabile), ma anche documentare.
Come documentare:
- Hai incontrato un nuovo problema che non avevi mai visto prima? Annotati i sintomi principali, i metodi di diagnosi e i principi di risoluzione.
- Hai trovato una nuova soluzione elegante a un problema comune? Scrivila, così non dovrai reinventarla tra un mese.
- Qualcuno ti ha aiutato a chiarire una questione che ti confondeva? Registra le idee fondamentali e i concetti principali, e disegna uno schema per te stesso.
Il concetto principale: non fidarti completamente della tua memoria quando apprendi e applichi qualcosa di nuovo.
In che formato lo farai dipende solo da te: può essere un sistema di appunti, un blog personale, un file di testo, un quaderno fisico. L'importante è che le tue annotazioni soddisfino i seguenti requisiti:
- Non essere eccessivamente lunghe.Evidenzia le idee principali, i metodi e le risorse. Se comprendere il problema richiede di immergersi nella meccanica a basso livello dell'allocazione della memoria in Linux, non riscrivere l'articolo da cui hai appreso — fornisci semplicemente un link.
- Le annotazioni devono essere chiare per te. Se una riga
race cond.lockupnon ti permette di capire immediatamente ciò che hai descritto in questa riga, chiariscilo. In una buona documentazione non è necessario cercare per mezz'ora. - La ricerca è una funzione molto utile. Se scrivi un blog, aggiungi tag; se utilizzi un quaderno fisico, attacca piccoli post-it con descrizioni. Non ha molto senso avere documentazione se ci metti autanto tempo a cercare una risposta quanto ne impiegheresti per risolvere la questione da zero.

Così può apparire la documentazione: da appunti semplici in un quaderno (immagine sopra) a una vera e propria base di conoscenza multiutente con tag, ricerca e tutte le comodità possibili (sotto).

Non dovrai solo cercare le stesse risposte due volte: documentare sarà un grande aiuto nell'apprendimento di nuovi argomenti (come gli appunti!), svilupperà il tuo sesto senso (la capacità di diagnosticare problemi complessi con un solo sguardo superficiale) e porterà maggiore organizzazione nelle tue azioni. Se la documentazione sarà accessibile ai tuoi colleghi, permetterà loro di capire cosa e come hai fatto quando non ci sarai.
Template
Template — è la creazione e l'uso di modelli. Per risolvere la maggior parte delle questioni comuni, è utile creare un determinato schema di azioni. Per diagnosticare la maggior parte dei problemi, è necessario seguire una sequenza di azioni standardizzata. Quando ripari, installi o ottimizzi qualcosa, è importante controllare la funzionalità di quella cosa utilizzando liste di controllo standardizzate.
La standardizzazione è il miglior modo per organizzare il flusso di lavoro. Utilizzando procedure standard per affrontare i problemi più frequenti, ottieni numerosi vantaggi. Per esempio, l'uso delle liste di controllo ti permetterà di diagnosticare tutte le funzioni importanti per il lavoro ed escludere la diagnostica delle funzionalità meno rilevanti. Inoltre, le procedure standardizzate ridurranno al minimo le incertezze e diminuiranno la probabilità di errore.
Un aspetto importante è che anche le procedure e le checklist devono essere documentate. Se ci si affida solo alla memoria, si può rischiare di dimenticare un controllo o un'operazione davvero fondamentale, con conseguenze disastrose. Un altro punto cruciale è che tutte le pratiche standard possono e devono essere modificate, se la situazione lo richiede. Non esistono modelli perfetti e universali. Se esiste un problema e il controllo standard non lo ha rivelato, non significa che il problema non ci sia. Tuttavia, prima di esaminare possibili problemi teorici poco probabili, è sempre consigliabile eseguire prima un rapido controllo standard.
Ottimizzazione
Ottimizzazione parla da sé. È necessario ottimizzare al massimo il processo di lavoro in termini di tempo e fatica. Le opzioni sono infinite: imparate le scorciatoie da tastiera, le abbreviazioni, le espressioni regolari e gli strumenti disponibili. Cercate modi per utilizzare questi strumenti in modo più pratico. Se invocate una command cento volte al giorno, assegnatele una scorciatoia da tastiera. Se dovete connettervi regolarmente agli stessi server, registrate un alias in una sola parola che vi collegherà a quel server:

Esplora diverse opzioni di strumenti disponibili: forse esiste un client terminale più comodo, un gestore degli appunti, un browser, un client email o un sistema operativo. Scopri quali strumenti utilizzano i tuoi colleghi e amici: potrebbero avere le loro ragioni per sceglierli. Una volta selezionati gli strumenti, impara a utilizzarli: apprendi le scorciatoie, i tasti e i consigli utili.
Utilizza al meglio gli strumenti standard: coreutils, vim, espressioni regolari, bash. Per gli ultimi tre, ci sono moltissimi manuali e documentazione eccellenti. Con il loro aiuto, puoi rapidamente passare da "mi sento come una scimmia che rompe noci con un laptop" a "sono una scimmia che usa un laptop per ordinare un apri-noci".
Automazione
Automazione sposterà operazioni pesanti dalle nostre stanche mani nelle instancabili mani dell'automazione. Se una procedura standard richiede una serie di comandi simili, perché non avvolgere tutti questi comandi in un unico file e non chiamare un solo comando che scarica ed esegue quel file?
In realtà, l'automazione consiste per l'80% nella scrittura e ottimizzazione dei propri strumenti (e per il 20% nei tentativi di farli funzionare come dovrebbero). Può trattarsi di una semplice riga di codice avanzata o di un'enorme e potente applicazione con interfaccia web e API. Il criterio principale qui è che la creazione dello strumento non dovrebbe richiedere più tempo e sforzi di quanti ne risparmi. Se impiegate cinque ore per scrivere uno script che non vi servirà mai più, per un compito che senza script vi avrebbe preso un’ora o due — stiamo parlando di una pessima ottimizzazione del flusso di lavoro. Potete dedicare cinque ore alla creazione di uno strumento solo se la quantità e il tipo di compiti e il tempo a disposizione lo consentono, cosa che non accade frequentemente.
L'automazione non implica necessariamente la scrittura di script complessi. Ad esempio, per creare un sacco di oggetti simili da una lista, basta un'astuta riga di codice che faccia automaticamente ciò che fareste manualmente, passando da una finestra all'altra con tonnellate di copia e incolla.
In effetti, se si costruisce il processo di amministrazione su questi quattro pilastri, è possibile aumentare rapidamente la propria efficienza, produttività e competenza. Tuttavia, questo elenco deve essere integrato con un ulteriore punto, senza il quale lavorare nel settore IT è praticamente impossibile: l'autoformazione.
Autoformazione dell'amministratore di sistema
Per essere minimamente competenti in questo campo, è necessario continuare a studiare e scoprire nuove informazioni. Se non avete nemmeno la minima voglia di affrontare l'ignoto e di capire, presto o tardi vi troverete in difficoltà. Nel settore IT emergono costantemente nuove soluzioni, tecnologie e metodi, e se non le studiate almeno superficialmente, siete sulla strada della sconfitta. Molti settori delle tecnologie informative poggiano su fondamenta complesse e sostanziose. Ad esempio, il lavoro di rete. Le reti e Internet sono ovunque, ci si imbatte in esse ogni giorno, ma se si scava nelle tecnologie che stanno dietro di esse, si scopre una disciplina enorme e molto complessa, il cui studio non è affatto una passeggiata nel parco.
Non ho incluso questo punto nella lista, perché è fondamentale per l'IT in generale, non solo per l'amministrazione di sistema. È chiaro che non è possibile apprendere tutto e subito: semplicemente non avrai tempo a sufficienza. Pertanto, mentre ti autoformi, è importante tenere presente i necessari livelli di astrazione.
Non è necessario imparare immediatamente come funziona la gestione della memoria interna di ogni singolo strumento e come essa interagisce con la gestione della memoria di Linux, ma è utile avere un'idea schematica di che cos'è la memoria RAM e a cosa serve. Non è necessario sapere in che modo le intestazioni di TCP e UDP si differenziano strutturalmente, ma sarebbe utile comprendere le principali differenze nel funzionamento dei protocolli. Non devi studiare cosa siano le attenuazioni del segnale nell'ottica, ma sarebbe bene sapere perché le perdite reali si ereditano sempre attraverso i nodi. Non c'è nulla di sbagliato nel sapere come funzionano determinati elementi a un certo livello di astrazione, e non è obbligatorio analizzare tutti i livelli quando l'astrazione non esiste affatto (sennò rischi di impazzire).
Tuttavia, discutere a un livello di astrazione come "beh, è una cosa che consente di mostrare siti web" non è molto utile nel proprio campo. Le prossime lezioni saranno dedicate a esplorare le aree principali con cui un amministratore di sistema deve confrontarsi a livelli più tangibili di astrazione. Cercherò di limitare le conoscenze discusse al livello minimo di astrazione.
10 comandamenti dell'amministrazione di sistema
Quindi, abbiamo assimilato quattro pilastri fondamentali e la base. Possiamo iniziare a risolvere i problemi? Non ancora. Prima è opportuno familiarizzare con quelle che vengono chiamate "best practices" e le buone norme. Senza di esse, c'è la possibilità di causare più danno che beneficio. Iniziamo dunque:
- Alcuni dei miei colleghi ritengono che la prima regola sia "non nuocere". Ma sono propenso a dissentire. Quando cerchi di non nuocere, non riesci a fare nulla — troppe azioni sono potenzialmente distruttive. Considero che la regola più importante sia — "fai un backup". Anche se causi danni, puoi sempre tornare indietro e tutto non sarà poi così male.
È sempre importante fare un backup quando il tempo e lo spazio lo consentono. Dovresti fare il backup di ciò che modificherai e di ciò che rischi di perdere in un possibile evento distruttivo. È consigliabile verificare l'integrità del backup e la presenza di tutti i dati necessari. Non dovresti eliminare il backup immediatamente dopo aver verificato tutto, a meno che non sia necessario liberare spazio sul disco. Se è necessario spazio, fai un backup sul tuo server personale e cancellalo dopo una settimana.
- La seconda regola più importante (che spesso infrango io stesso) — «non nascondere». Se hai fatto un backup, scrivi dove si trova, in modo che i tuoi colleghi non debbano cercarlo. Se hai fatto qualche azione che non è ovvia o complessa, annotala: tornerai a casa, ma il problema potrebbe ripetersi o sorgere per qualcun altro e la tua soluzione sarà trovata tramite parole chiave. Anche se stai facendo qualcosa che conosci bene, potresti essere l'unico a saperlo.
- La terza regola non ha bisogno di spiegazioni: «non fare mai qualcosa di cui non conosci, non rappresenti o non comprendi le conseguenze». Non copiare comandi da internet se non sai cosa fanno; consulta il manuale e analizza prima. Non applicare soluzioni già pronte se non capisci cosa fanno. Riduci al minimo l'esecuzione di codice offuscato. Se non hai tempo per approfondire, stai facendo qualcosa di sbagliato e dovresti consultare il punto successivo.
- «Testa». Nuovi script, strumenti, uno-liners e comandi devono essere testati in un ambiente controllato, non su una macchina del cliente, se c'è anche solo un minimo potenziale di azioni distruttive. Anche se hai fatto un backup (e l'hai fatto), il downtime non è una bella cosa. Crea un server/virtual machine/chroot dedicato per questo e testa lì. Niente si è rotto? Allora puoi lanciarlo in produzione.

- «Controlla». Riduci al minimo tutte le operazioni che non controlli. Una singola dipendenza errata in un pacchetto può compromettere metà del sistema, e l'opzione -y per yum remove ti permette di esercitare le tue abilità nel ripristino del sistema da zero. Se un'azione non ha alternative incontrollate, passa al punto successivo e prepara un backup.
- «Controlla». Controlla le conseguenze delle tue azioni e se è necessario tornare a un backup. Verifica se il problema è stato realmente risolto. Controlla se l'errore si riproduce e in quali condizioni. Assicurati di sapere ciò che puoi compromettere con le tue azioni. Fidarsi nel nostro lavoro è superfluo, mentre controllare non lo è mai.
- «Comunica». Se non riesci a risolvere il problema, chiedi ai colleghi se hanno avuto esperienze simili. Vuoi applicare una soluzione controversa? Scopri il parere dei colleghi. Potrebbero proporre una soluzione migliore. Non sei sicuro delle tue azioni? Discutile con i tuoi colleghi. Anche se si tratta del tuo campo di competenza, un punto di vista fresco sulla situazione può chiarire molte cose. Non vergognarti della tua ignoranza. È meglio fare una domanda stupida, sembrare sciocco e ricevere una risposta, piuttosto che non farla, non ottenere risposta e restare nella confusione.
- «Non rifiutare aiuto senza motivi». Questo punto è il rovescio del precedente. Se ti viene posta una domanda sciocca, chiarisci e spiega. Se ti viene chiesto qualcosa di impossibile, fai sapere che non è realizzabile e perché; proponi delle alternative. Se non hai tempo (reale, non solo una scusa) — dì che hai una questione urgente o un carico di lavoro consistente, ma che ti occuperai della questione più tardi. Se i colleghi non hanno compiti urgenti, offri di rivolgerti a loro e delega il problema.
- «Fammi sapere cosa ne pensi». Un collega ha iniziato a utilizzare una nuova metodologia o uno script, e tu stai affrontando conseguenze negative di questa decisione? Faccelo sapere. Potrebbe essere che il problema si risolva con tre righe di codice o cinque minuti di lavoro sulla metodologia. Hai trovato un bug nel software? Segnalalo. Se si presenta o non è necessario replicarlo, è molto probabile che venga risolto. Condividi le tue richieste, suggerimenti e critiche costruttive, porta le questioni in discussione se pensi che siano rilevanti.
- «Richiedi feedback». Nessuno di noi è perfetto, così come le nostre decisioni, e il miglior modo per verificare la validità della propria scelta è portarla in discussione. Hai ottimizzato qualcosa per un cliente? Chiedi di monitorarne il funzionamento; potrebbe darsi che il «collo di bottiglia» del sistema non sia dove pensavi. Hai scritto un piccolo script di aiuto? Mostralo ai colleghi, potrebbero trovare un modo per migliorarlo.
Applicando costantemente queste pratiche nel lavoro, la maggior parte dei problemi smette di essere tale: non solo ridurrai al minimo i tuoi stessi errori e disastri, ma avrai anche la possibilità di correggere gli sbagli (grazie ai backup e ai colleghi che ti consiglieranno di fare un backup). Da qui in poi, ci sono solo dettagli tecnici, in cui, come sappiamo, si nasconde il diavolo.
Gli strumenti principali con cui dovrai lavorare oltre il 50% del tempo sono grep e vim. Cosa c'è di più semplice? Ricerca di testo e modifica di testo. Tuttavia, sia grep che vim sono potentissimi strumenti multifunzionali che consentono di cercare e modificare il testo in modo efficace. Se un qualsiasi notepad di Windows ti permette semplicemente di scrivere o cancellare una riga, in vim puoi fare quasi tutto con il testo. Non ci credi? Esegui il comando vimtutor dal terminale e inizia a imparare. Per quanto riguarda grep, la sua forza principale risiede nelle espressioni regolari. Sì, lo strumento consente di definire condizioni di ricerca e output in modo piuttosto flessibile, ma senza le RegExp non ha molto senso. E conoscere le espressioni regolari è fondamentale! Almeno a un livello base. Per cominciare, ti consiglio di dare un'occhiata a questo , in cui vengono trattate le basi delle espressioni regolari e il loro utilizzo insieme a grep. Ah, sì, combinandole con vim, ottieni il potere ULTIMO di fare con il testo cose talmente incredibili che potrebbero richiedere un'etichetta 18+.
Del restante 50%, il 40% è dedicato al pacchetto di strumenti coreutils. Puoi trovare l'elenco per coreutils in , e un manuale per l'intero elenco è disponibile sul sito. . Ciò che non è coperto da questo set si trova negli strumenti. . Non è necessario memorizzare tutto con tutte le opzioni a menadito, ma è utile sapere più o meno quali sono le funzionalità principali degli strumenti. Non sarà necessario reinventare la ruota con dei rimedi. Una volta ho dovuto sostituire i ritorni a capo con spazi nell'output di un qualche strumento e, con una mente affaticata, ho partorito la seguente soluzione. sed ':a;N;$!ba;s/n/ /g', un collega in quel momento mi ha scacciato dalla console con una scopa e poi ha risolto il problema scrivendo. tr 'n' ' '.

Ti consiglio di ricordare a grandi linee cosa fa ogni singolo strumento e le opzioni per i comandi più comunemente usati, per tutto il resto c'è man. Non esitare a chiamare man se hai dei dubbi. E leggi anche man riguardo a man — contiene informazioni importanti su ciò che troverai.
Conoscendo questi strumenti, sarai in grado di affrontare efficacemente una significativa parte delle sfide che incontrerai nella pratica. Nelle prossime lezioni vedremo quando applicare questi strumenti e le strutture dei principali servizi e applicazioni a cui si applicano.
Con voi c'era l'amministratore di sistema di FirstVDS Kirill Tsvetkov.
Fonte: habr.com

