Ist es gut, mehrere Versionen des Linux-Kernels zu haben?

14

Einmal habe ich einige Kernel-Patches installiert und auf einem Live-Server, auf dem wir Hunderte von Clients hatten, ist etwas schiefgelaufen. Es gab nur einen Kernel im System. Der Server war für einige Zeit außer Betrieb und mit einer Live-CD haben wir das System in Betrieb genommen und die weiteren Reparaturarbeiten durchgeführt.

Nun meine Frage: Ist es eine gute Idee, zwei Versionen des Kernels zu haben, damit wir immer mit einem anderen verfügbaren Kernel neu starten können, wenn der Kernel beschädigt ist? Lass es mich wissen, bitte.

Ist es auch möglich, 2 Versionen desselben Kernels zu haben? Damit ich bei einer Kernel-Beschädigung einen anderen Kernel auswählen kann?

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

Wie kann ich die gleiche Kopie dieses Kernels haben, so dass ich den Backup-Kernel starten kann, wenn mein Kernel beschädigt ist?

Mani
quelle
4
Mir scheint, Sie haben Ihre eigene Frage beantwortet. Es ist kein Nachteil, mehrere Kernel zu haben, solange Sie wissen, dass sie mit Ihrem System funktionieren, und es kann gelegentlich nützlich sein, wenn Sie aus irgendeinem Grund auf Probleme mit einem bestimmten Kernel stoßen.
Faheem Mitha
Danke, vielleicht habe ich die qns nicht richtig gestellt. Wie kann ich dieselbe Kopie dieses Kernels haben, sodass ich den Backup-Kernel starten kann, wenn mein Kernel beschädigt ist?
Mani,
2
Sicher können Sie den identischen Kernel haben. Der Kernel ist nur eine Datei auf der Festplatte. Sie können Ihren vorhandenen Kernel mit einem etwas anderen Namen kopieren.
Faheem Mitha
Auf einem der Server, die ich geerbt habe, waren 16 Boot-Einträge für 8 verschiedene Kernel darauf ... Weißt du, bis ich es bereinigt habe
Kanadier Luke REINSTATE MONICA
Normalerweise behalte ich den vorherigen Kernel, falls etwas schief geht.
Joshua

Antworten:

18

Sowohl die RedHat- als auch die Debian-basierte Distribution behalten mehrere Kernel-Versionen bei, wenn Sie eine neue mit yumoder apt-getstandardmäßig installieren . Dies gilt als bewährte Methode und wird genau für den von Ihnen beschriebenen Fall durchgeführt: Wenn mit dem neuesten Kernel ein Fehler auftritt, können Sie jederzeit einen Neustart durchführen und in GRUB wählen, ob Sie mit einem der vorherigen Kernel starten möchten.

In RedHat-Distributionen steuern Sie die Anzahl der Kernel, um /etc/yum.confmit den installonly_limitEinstellungen Schritt zu halten . Bei meiner neuen CentOS 7-Installation ist der Standardwert 5.

Auch wenn Sie unter RedHat einen neuen Kernel aus einem RPM-Paket installieren, sollten Sie diesen rpm -ivhnicht verwenden rpm -Uvh: Der erstere hält den älteren Kernel an seinem Platz, während der spätere ihn ersetzt.

Debian behält alte Kernel, entfernt sie jedoch nicht automatisch. Wenn Sie Ihre Boot-Partition freigeben müssen, müssen Sie alte Kernel manuell entfernen (denken Sie daran, mindestens einen der vorherigen Kernel zu belassen). Um alle Kernel-Installations- und Kernel-Header-Pakete aufzulisten, verwenden Sie dpkg -l | egrep "linux-(im|he)".

Beantwortung Ihrer Frage - Ist es auch möglich, eine 2-Version desselben Kernels zu haben? -- Ja, es ist möglich. Ich kann es momentan unter CentOS 6.5 nicht überprüfen, aber unter CentOS 7 konnte ich das gewünschte Ergebnis erzielen, indem ich nur kernelbezogene /bootVerzeichnisdateien duplizierte und das Grub-Menü neu erstellte:

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
Golem
quelle
Danke, ich arbeite daran. In CentOS 6.5 gibt es jedoch kein "grub2-mkconfig". Weißt du, wie man das in Centos 6.5 macht? Ich denke, grub2 ist nur in Centos 7 verfügbar. Ich google jetzt, wenn ich eine Lösung finde, wird sie hier aktualisiert.
Mani
Ich habe diese Zeilen wie folgt an Centos 6.5 angepasst und bin beim Aktualisieren der grub.conf hängen geblieben. ls -1 | grep "2.6.32-431.el6" | {während ich lese; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); erledigt; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
Mani
Vielen Dank!!! Es hat funktioniert und ich habe es so modifiziert ls -1 | grep "2.6.32-431.el6" | {während ich lese; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); erledigt; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup und ich habe die grup.conf manuell bearbeitet. Sie können die UUID beibehalten, wenn Sie auf dieselbe Festplatte und Partition kopieren möchten.
Mani
7

Ja, das ist möglich und ich würde sogar raten. Sie müssen lediglich den Startvorgang einrichten, um die Alternative anzubieten. In der Regel geschieht dies in der Bootloader-Konfiguration. In der Regel können Sie einfach den vorhandenen Eintrag duplizieren und den Dateinamen des Kernel-Images und die Bezeichnung des Bootmenüeintrags ändern.

Auf einem Produktionsserver ist dies normalerweise kein Problem, aber bei jedem Upgrade des Kernels ist es ratsam, ein Backup vorzuhalten. Einige Linux-Distributionen bieten ein Rollback (normalerweise mit Snapshot-Funktionen für Dateisysteme) für Paketaktualisierungen an, um den Vorgang so einfach wie möglich zu gestalten, aber selbst in diesen Fällen würde ich ein Backup in der Regel bereithalten.

Bezüglich mehrerer Kopien desselben Kernels - auch das wäre sinnvoll, aber wie @goldilocks im folgenden Kommentar ausführt, sollten Sie darüber nachdenken, die Hardware auszutauschen, wenn Ihr Kernel beschädigt wird. Wenn Sie das Duplikat jedoch auf eine andere physische Festplatte legen, können Sie Probleme vermeiden. Aber bedenken Sie , dass die Kernel - Image - Datei wird nur immer beim Booten verwendet.

peterph
quelle
Ich habe die qns geändert. Bitte lassen Sie es mich wissen. Wie wird ein Backup-Kernel erstellt? (vorzugsweise die gleiche Version)
Mani
3
Sie sollten nichts tun müssen, sie sind bereits da - aber in verschiedenen Versionen. Es hat keinen Sinn, zwei dieselbe Version zu haben, es sei denn, Sie haben eine von ihnen selbst kompiliert, da es sich sonst nur um identische Kopien handelt. Das Problem der "Korruption" ist eine Art Schwindel - nach dieser Logik würden Sie zwei identische Kopien des gesamten Systems benötigen, falls die bashBinärdateien beschädigt, die libcbeschädigt wurden usw. All dies würde das System unbrauchbar machen. Diese Dateien sollten nicht "beschädigt" werden. Wenn dies der Fall ist, ersetzen Sie Ihre Hardware.
Goldlöckchen
1
@goldilocks Oder ersetzen Sie Ihren Sysadmin, je nachdem, wo der Fehler war.
Philip Kendall
@goldilocks siehe aktualisierte Antwort - es kann in bestimmten Fällen sinnvoll sein. Offensichtlich sollte das Ersetzen fehlerhafter Hardware nach Möglichkeit bevorzugt werden.
Peterph