È buono avere una versione multipla del kernel Linux?


14

Una volta stavo installando alcune patch del kernel e qualcosa è andato storto su un server live dove avevamo centinaia di client. Nel sistema c'era solo un kernel. Quindi, il server è rimasto inattivo per un po 'di tempo e, usando un CD live, abbiamo avviato il sistema e fatto il lavoro di riparazione.

Ora la mia domanda: è una buona idea avere 2 versioni del kernel, in modo che se il kernel è corrotto possiamo sempre riavviare con un altro kernel disponibile? Per favore mi faccia sapere.

Inoltre, è possibile avere 2 versioni dello stesso kernel? In modo che io possa scegliere un altro kernel in caso di corruzione del kernel?

Edited:
My Server Details:
2.6.32-431.el6.x86_64
CentOS release 6.5 (Final)

Come posso avere la stessa copia di questo kernel, in modo che quando il mio kernel si corrompe, posso avviare il kernel di backup?


4
Mi sembra che tu abbia risposto alla tua stessa domanda. Non ci sono svantaggi nell'avere più kernel, purché tu sappia che funzionano con il tuo sistema, e può occasionalmente essere utile se incontri qualche problema con un kernel particolare per qualche motivo.
Faheem Mitha,

Grazie, forse non ho chiesto correttamente i qn. Come posso avere la stessa copia di questo kernel, in modo che quando il mio kernel è corrotto, posso avviare il backup del kernel?
Mani

2
Sicuro che puoi avere lo stesso kernel. Il kernel è solo un file sul disco. Potresti copiare il tuo kernel esistente con un nome leggermente diverso.
Faheem Mitha,

Su uno dei server che ho ereditato, aveva 16 voci di avvio per 8 kernel diversi su di esso ... Sai, fino a quando non l'ho pulito
Canadian Luke

Di solito tengo il kernel precedente nel caso qualcosa vada storto.
Joshua,

Risposte:


18

Sia la distribuzione basata su RedHat che quella basata su Debian mantengono diverse versioni di Kernel quando ne installi una nuova usando yumo apt-getdi default. Questa è considerata una buona pratica ed è fatta esattamente per il caso che descrivi: se qualcosa va storto con l'ultimo kernel puoi sempre riavviare e in GRUB scegliere di avviare usando uno dei kernel precedenti.

In distribuzioni RedHat è possibile controllare il numero dei kernel da tenere in /etc/yum.confcon installonly_limitregolazione. Sul mio nuovo CentOS 7 installa per impostazione predefinita 5.

Inoltre, se su RedHat stai installando un nuovo kernel dal pacchetto RPM dovresti usare rpm -ivh, no rpm -Uvh: il primo manterrà il kernel più vecchio mentre il successivo lo sostituirà.

Debian mantiene i vecchi kernel ma non li rimuove automaticamente. Se è necessario liberare la partizione di avvio, è necessario rimuovere manualmente i vecchi kernel (ricordarsi di lasciare almeno uno dei kernel precedenti). Per elencare tutti i pacchetti di installazione del kernel e delle intestazioni del kernel utilizzare dpkg -l | egrep "linux-(im|he)".

Rispondere alla tua domanda - Inoltre, è possibile avere una versione 2 dello stesso kernel? -- Sì, è possibile. Non riesco a controllarlo su CentOS 6.5 in questo momento, ma su CentOS 7 sono stato in grado di ottenere il risultato desiderato semplicemente duplicando i file di /bootdirectory relativi al kernel e ricostruendo il menu di grub:

cd /boot

# Duplicate kernel files; 
# "3.10.0-123.el7" is a substring in the name of the current kernel
ls -1 | grep "3.10.0-123.el7" | { while read i; \
    do cp $i $(echo $i | sed 's/el7/el7.backup/'); done; }

# Backup the grub configuration, just in case
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

# Rebuild grub configuration
grub2-mkconfig -o /boot/grub2/grub.cfg

# At this point you can reboot and see that a new kernel is available 
# for you to choose in GRUB menu

grazie, ci sto lavorando. Ma in CentOS 6.5 non esiste "grub2-mkconfig". sai, come fare in centos 6.5, penso che grub2 sia disponibile solo in Centos 7. Ora sto cercando su Google, se trovo un soln, aggiornerò qui.
Mani

Ho modificato quelle linee per adattarle a Centos 6.5 come sotto e sono rimasto bloccato su come aggiornare grub.conf. ls -1 | grep "2.6.32-431.el6" | {mentre leggi i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); fatto; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
Mani

molte grazie!!! Ha funzionato e ho modificato in questo modo ls -1 | grep "2.6.32-431.el6" | {mentre leggi i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); fatto; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup e ho modificato manualmente grup.conf. È possibile mantenere lo stesso UUID, se si intende copiare nello stesso disco e partizione.
Mani

7

Sì, è possibile e direi anche consigliabile. Hai solo bisogno di impostare il processo di avvio per offrirti l'alternativa. In genere questo viene fatto nella configurazione del caricatore di avvio: in genere è possibile semplicemente duplicare la voce presente e modificare il nome file dell'immagine del kernel e l'etichetta della voce del menu di avvio.

Su un server di produzione questo di solito non è un problema, ma ogni volta che aggiorni il kernel è una buona idea avere un backup presente. Alcune distribuzioni Linux offrono il rollback (solitamente supportato da funzionalità di snapshot del file system) sugli aggiornamenti dei pacchetti per rendere il processo il più indolore possibile, ma anche in quei casi tenderei a tenere pronto un backup.

Per quanto riguarda avere diverse copie dello stesso kernel - anche questo avrebbe senso, ma come sottolinea @goldilocks nel commento qui sotto, se il tuo kernel viene danneggiato dovresti pensare a sostituire l'hardware. D'altra parte, posizionare il duplicato su un diverso HDD fisico potrebbe farti risparmiare qualche problema. Ma tieni presente che il file di immagine del kernel viene utilizzato sempre e solo durante l'avvio.


Ho modificato il qns, per favore fatemi sapere, come avere un kernel di backup? (preferibilmente la stessa versione)
Mani

3
Non dovresti fare nulla, sono già lì, ma in diverse versioni. Non ha senso avere due versioni uguali se non ne hai compilata una tu stesso, altrimenti sono copie identiche. Il problema della "corruzione" è una specie di falso: con quella logica occorrerebbero due copie identiche dell'intero sistema nel caso in cui il bashbinario fosse corrotto, libcfosse corrotto, ecc. Tutto ciò renderebbe inutile il sistema. Questi file non dovrebbero essere "corrotti". In tal caso, sostituire l'hardware.
Riccioli d'oro

1
@goldilocks O sostituisci il tuo amministratore di sistema, a seconda di dove fosse l'errore.
Philip Kendall,

@goldilocks vedi la risposta aggiornata - potrebbe avere senso in casi specifici. Ovviamente, la sostituzione dell'hardware difettoso dovrebbe essere preferita quando possibile.
peterph
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.