GNU/Linux >> Linux Esercitazione >  >> Linux

Preparazione per l'applicazione degli aggiornamenti su Red Hat Linux

Obiettivo

Il nostro obiettivo è garantire che l'aggiornamento del sistema operativo avvenga senza intoppi e senza errori.

Sistema operativo e versioni software

  • Sistema operativo: Red Hat Enterprise Linux 6+

Requisiti

Accesso privilegiato ai sistemi

Difficoltà

FACILE

Convenzioni

  • # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando
  • $ – dati comandi linux da eseguire come un normale utente non privilegiato

Introduzione

Mantenere il sistema aggiornato è un'attività quotidiana per un amministratore di sistema, così come per un utente desktop. Applicando il software più recente (stabile) disponibile sul sistema, possiamo sfruttare le ultime funzionalità e saremo più protetti dai problemi di sicurezza e, si spera, soffriremo meno di bug. Per aggiornare il sistema è necessario configurare yum repository che fungono da origine del software aggiornato.

Se ti siedi accanto alla macchina su cui è in esecuzione il sistema operativo da aggiornare, puoi facilmente agire se qualcosa va storto durante l'aggiornamento, come controllare l'output sul terminale, o avviare un sistema live se quello aggiornato non ritorna da riavviare, ma non è sempre così. Pensa a un data center con centinaia o migliaia di macchine (virtuali) o semplicemente a un PC fisico che devi aggiornare in remoto.

Ci sono semplici passaggi che possiamo eseguire per preparare il sistema per l'aggiornamento ed eventualmente eliminare qualsiasi problema che potrebbe mettere in pericolo un aggiornamento riuscito.

Procedura di aggiornamento

Quando si esegue un aggiornamento incondizionato (che significa "aggiorna tutto"), yum recupererà tutti i metadati dai repository disponibili e calcolerà tutti i pacchetti da aggiornare rispetto a rpm database che contiene tutti i metadati sui pacchetti installati nel sistema.

Il processo di aggiornamento calcola anche tutte le dipendenze dei pacchetti aggiornati, può sostituire i vecchi pacchetti e rimuovere le vecchie immagini del kernel in base alla sua configurazione. Il numero di immagini del kernel da conservare è impostato in /etc/yum.conf file di configurazione, ed è 3 per impostazione predefinita:

installonly_limit=3


Dopo aver calcolato tutte le modifiche necessarie, yum fornisce un elenco completo di tutti i pacchetti da aggiornare, rimuovere o installare per le dipendenze, allo stesso modo di quando si installano o si aggiornano pacchetti specifici.

In una sessione di aggiornamento interattiva yum fornirà un riepilogo dei pacchetti da modificare, nonché il calcolo sulla dimensione dei dati da scaricare per l'aggiornamento come mostrato di seguito:

Riepilogo dell'aggiornamento interattivo di yum

Dopo aver esaminato i risultati, possiamo decidere se avviare l'aggiornamento o annullarlo. Poiché yum aggiornerà tutto ciò per cui può trovare aggiornamenti, potremmo voler rimuovere in anticipo i pacchetti non necessari. Potremmo anche notare un pacchetto contrassegnato per l'aggiornamento con il blocco della versione che deve essere escluso dall'aggiornamento.

Dopo l'approvazione, yum scaricherà tutti i nuovi pacchetti e li installerà/aggiornerà uno per uno. Una volta completato, verificherà l'integrità dei pacchetti installati/aggiornati, ripulirà i file non necessari. Fornisce inoltre feedback durante il processo, fornendo una riga di testo per ogni passaggio, nonché un codice di uscita che suggerisce se l'aggiornamento è riuscito o se si è verificato un problema. Inoltre annullerà il processo di aggiornamento se si verifica un problema che sembra critico dal punto di vista del sistema coerente, ma a volte è già troppo tardi, quindi evitare che si verifichino problemi di aggiornamento è un approccio migliore.

Spazio su disco

Yum cache

Dal processo sopra descritto possiamo intuire che abbiamo bisogno di spazio su disco per il processo di aggiornamento:

  • I metadati di tutti i repository configurati devono essere archiviati fino al termine del calcolo di tutti i pacchetti (e delle relative dipendenze) da aggiornare.
  • rpm i pacchetti che costituiscono l'aggiornamento stesso devono essere archiviati localmente fino a quando non vengono installati correttamente.

Questi dati, chiamati yum cache è necessario solo durante l'aggiornamento, ma può occupare molto spazio su disco. La posizione predefinita per questa cache è in /var/cache/yum directory. Inutile dire che se non c'è abbastanza spazio per archiviare tutti i dati necessari, il processo di aggiornamento fallirà. Alcuni download non completati verranno eliminati, ma non tutto lo spazio potrebbe essere liberato, il che finisce per avere un sistema che non ha eseguito l'aggiornamento e il suo volume contiene /var/cache quasi pieno.

Molte installazioni memorizzano il loro /var directory su un volume dedicato alla registrazione, poiché la posizione predefinita per i file di registro è /var/log sulla maggior parte delle distribuzioni e le applicazioni più efficaci smetteranno di funzionare o addirittura si arresteranno in modo anomalo se non riescono a scrivere i propri file di registro. Quindi riempire il volume a cui stanno scrivendo è una cosa negativa .

Più pacchetti devono essere aggiornati e più repository abbiamo, più spazio occuperà temporaneamente l'aggiornamento. Calcolare questo spazio dall'aggiornamento all'aggiornamento è difficile, ma può essere testato con la soluzione dry run descritta più avanti se disponiamo di una macchina di prova con l'esatto contenuto del software. Per un esempio in tempo reale, l'aggiornamento da RHEL 7.1 a 7.5 (installazione desktop con Gnome) può richiedere 4 GB di spazio nella cache, ma l'installazione di alcune correzioni su un sistema obsoleto di uno o due mesi richiederà solo pochi MB.

Per verificare quanto spazio abbiamo, possiamo usare il df comando:

# df -h /var/
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vg_sys-var  6.0G  1.7G  4.4G  28% /var


Nell'esempio sopra abbiamo 4,4 GB di spazio libero, che saranno sufficienti dato che il server è stato aggiornato solo pochi mesi fa. Per liberare spazio un passaggio banale sarebbe svuotare la yum cache già memorizzato (forse all'ultimo aggiornamento). Per verificare quanto spazio occupa una cache al momento, possiamo usare du :

# du -mcd 1 /var/cache/yum
1103    /var/cache/yum/x86_64
1103    /var/cache/yum
1103    total


I numeri sopra sono in MB, quindi la yum cache in questo esempio occupa circa 1 GB di spazio su disco e occupa la maggior parte dello spazio su /var volume.

Cancellazione della cache

Possiamo svuotare l'intera cache con il seguente comando:

yum clean all

Ma come yum ci informa nell'output del comando precedente sulle versioni di RHEL 7, potrebbero esserci dati orfani da repository rimossi o disabilitati, cosa che molto probabilmente accadrà dopo aggiornamenti di rilascio minori, nel qual caso possiamo cancellare i dati in sicurezza a mano:

rm -rf /var/cache/yum/*

Potremmo ottenere più spazio per l'aggiornamento cancellando altri dati archiviati nel volume, ad esempio comprimendo/eliminando vecchi file di registro, spostando file di grandi dimensioni su altri volumi o estendendo le dimensioni del volume.

Spostare la cache

Per lavorare con le possibilità di yum , se lo spazio su disco è molto basso, non possiamo cancellare altro e non possiamo aggiungere più spazio al volume, possiamo spostare la posizione della yum cache ad un altro volume con più spazio libero. Possiamo configurare la posizione della cache in yum.conf file di configurazione sopra menzionato. Considera l'impostazione predefinita:

cachedir=/var/cache/yum/$basearch/$releasever

Modificando il percorso prima di $basearch la prossima operazione yum funzionerà con la stessa struttura di directory, ma su un percorso diverso, si spera con più spazio libero per l'aggiornamento. Possiamo anche spostare la cache su un altro volume spostando l'intera directory:

mv /var/cache/yum /extended_data_volume/


E creando un collegamento simbolico nella posizione originale che punta al nuovo luogo:

ln -s /extended_data_volume/yum /var/cache/yum


È opportuno sapere che l'aggiornamento non fallirà a causa di un errore banale come lo spazio su disco insufficiente. Su un sistema di grandi dimensioni gli amministratori di sistema implementano strumenti di monitoraggio come Nagios in grado di segnalare spazio su disco insufficiente su tutte le macchine, rendendo questo passaggio molto meno dispendioso in termini di tempo e soggetto a errori.

Errori di rete

In caso di problemi con la connettività tra i repository e la macchina che esegue l'aggiornamento, l'aggiornamento potrebbe non riuscire. Questo può accadere solo nei metadati, o nella nuova fase di download degli rpm, e non interromperà il sistema. Puoi riavviare il processo di aggiornamento una volta risolto il problema di rete.

Se invece l'aggiornamento viene inizializzato da una sessione interattiva, in caso di interruzione della rete la connessione potrebbe interrompersi, lasciando la macchina di aggiornamento senza amministratore per rispondere alle domande yum potrebbe chiedere. Se la fase di installazione/aggiornamento del pacchetto è già stata avviata, continuerà incustodita e potrebbe non riuscire o essere completata se altrimenti sarebbe successo. Dopo la riconnessione, il processo può essere seguito in /var/log/yum.log .

Yum dry run

A parte spazio su disco insufficiente e problemi di rete, l'aggiornamento in molti casi può non riuscire a causa di dipendenze di pacchetti non risolte. Questi devono essere risolti con strumenti in grado di calcolare e gestire le dipendenze dei pacchetti, ma sarebbe utile sapere che ci saranno problemi prima dell'aggiornamento vero e proprio (e quindi non sprecare i tempi di fermo sempre troppo brevi del sistema). Per ottenere queste preziose informazioni possiamo eseguire il processo di aggiornamento come se eseguisse l'aggiornamento effettivo, ma interromperlo prima che il download, l'installazione o l'aggiornamento del pacchetto effettivo abbiano avuto luogo.

Intorno a Redhat 6.6 è stata introdotta una nuova opzione che causerà yum assumere "No" per ogni domanda che viene visualizzata durante l'aggiornamento, inclusa l'approvazione prima della fase di manipolazione del pacchetto effettiva, e di conseguenza non è necessaria alcuna interazione effettiva eseguire un ciclo di prova:

yum update --assumeno

Questo può essere lo strumento ideale per fornire una prova dell'aggiornamento in arrivo, inclusi i pacchetti da aggiornare e gli eventuali errori che potrebbero verificarsi. Considera il seguente semplice bash sceneggiatura:

#!/bin/bash
yum update --assumeno &> $(hostname).yum.dryrun.$(date '+%Y-%m-%d').out
exit $?


Lo script di cui sopra può essere eseguito automaticamente e fornirà un rapporto di testo del ciclo di prova, nonché un codice di uscita generale che indica eventuali problemi. Non è necessario salvare l'output nel file system locale. La destinazione del reindirizzamento dell'output può essere un file system di rete, oppure il report può essere inviato a un server di report centrale, può essere raccolto da altri script o applicazioni. I report possono essere pubblicati e distribuiti ad altri reparti IT per l'approvazione, in questo modo tutti i soggetti coinvolti possono vedere esattamente quali pacchetti verranno aggiornati ea quale versione.

Il funzionamento a secco può essere programmato per l'esecuzione in un determinato intervallo di tempo (magari di notte per influire meno sulle prestazioni del sistema) con cron , o eseguito da una fonte centrale con una configurazione di marionette. Il codice di uscita può anche essere memorizzato ed elaborato tramite monitoraggio o facter , per aggregare i possibili risultati del prossimo aggiornamento prima di procedere.

Conclusione

Anche con uno o pochi computer, dovremmo raccogliere informazioni prima di iniziare un aggiornamento dell'intero sistema operativo, per sicurezza. Un giorno si verificherà un problema ed è molto meno stressante risolverlo prima che abbia un impatto sul lavoro effettivo di una determinata macchina. Su una scala più ampia, semplicemente non è possibile sedersi accanto a ciascun server o desktop e supportarlo con la tua presenza nella speranza che ciò aiuti l'aggiornamento a funzionare in modo impeccabile.

Conoscendo le fasi del processo di aggiornamento, le insidie ​​e la soluzione ad esse è essenziale per il successo degli aggiornamenti. Iniziare la prossima fase di aggiornamento dell'intera infrastruttura con la certezza che non ci saranno problemi è farlo con stile.


Linux
  1. 10 moduli Ansible per l'automazione del sistema Linux

  2. Cos'è Linux? Una guida per utenti non tecnici

  3. Come gestire un panico del kernel Linux

  4. Come ottenere Red Hat Enterprise Linux gratuitamente?

  5. Come escludere un repository specifico per l'aggiornamento di Yum in CentOS/Red Hat

Red Hat Enterprise Linux (RHEL) 8 passaggi di installazione con schermate

I migliori comandi Linux per gli amministratori di sistema

Alcuni strumenti utili per gli amministratori di sistema Linux

Lavorare con il kernel in tempo reale per Red Hat Enterprise Linux

Il mio viaggio nell'amministrazione del sistema Linux

10 esempi di esclusione Yum per saltare i pacchetti per l'aggiornamento Yum di Linux (come escludere gli aggiornamenti del kernel Yum)