Czy dobrze jest mieć wiele wersji jądra Linux?

14

Kiedyś instalowałem kilka łatek do jądra i coś poszło nie tak na serwerze na żywo, na którym mieliśmy setki klientów. W systemie było tylko jedno jądro. Tak więc serwer nie działał przez pewien czas, a używając płyty CD na żywo, uruchomiliśmy system i wykonaliśmy dalsze naprawy.

Teraz moje pytanie: czy dobrym pomysłem jest posiadanie 2 wersji jądra, aby w przypadku uszkodzenia jądra zawsze można było uruchomić się ponownie z innym dostępnym jądrem? Proszę daj mi znać.

Czy można również mieć 2 wersje tego samego jądra? Czy mogę więc wybrać inne jądro, gdy występuje uszkodzenie jądra?

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

Jak mogę mieć tę samą kopię tego jądra, aby gdy moje jądro uległo uszkodzeniu, mogłem uruchomić jądro zapasowe?

Mani
źródło
4
Wydaje mi się, że odpowiedziałeś na własne pytanie. Posiadanie wielu jąder nie ma negatywnej strony, o ile wiesz, że działają one z twoim systemem, a czasem może być przydatne, jeśli z jakiegoś powodu napotkasz problemy z konkretnym jądrem.
Faheem Mitha
Dzięki, może nie zapytałem poprawnie qns. Jak mogę mieć tę samą kopię tego jądra, aby kiedy moje jądro uległo uszkodzeniu, mogłem uruchomić jądro zapasowe?
Mani
2
Jasne, że możesz mieć identyczne jądro. Jądro to tylko plik na dysku. Możesz skopiować istniejące jądro z nieco inną nazwą.
Faheem Mitha
Na jednym z odziedziczonych przeze mnie serwerów miał 16 pozycji rozruchowych dla 8 różnych jąder ... Wiesz, dopóki go nie wyczyściłem
Kanadyjczyk Łukasz
Zwykle trzymam poprzednie jądro na wypadek, gdyby coś poszło nie tak.
Joshua

Odpowiedzi:

18

Zarówno RedHat, jak i dystrybucja oparta na Debianie przechowują kilka wersji jądra podczas instalowania nowej przy użyciu yumlub apt-getdomyślnie. Jest to uważane za dobrą praktykę i odbywa się dokładnie w opisywanym przypadku: jeśli coś pójdzie nie tak z najnowszym jądrem, zawsze możesz zrestartować komputer i w GRUB-ie wybrać uruchomienie z jednego z poprzednich jąder.

W dystrybucji RedHat kontrolujesz liczbę jąder, aby być na bieżąco /etc/yum.confz installonly_limitustawieniami. Na mojej świeżej instalacji CentOS 7 domyślnie jest to 5.

Także jeśli na RedHat instalujesz nowe jądro z pakietu RPM, którego powinieneś użyć rpm -ivh, nie rpm -Uvh: ten pierwszy utrzyma starsze jądro na miejscu, a później go zastąpi.

Debian przechowuje stare jądra, ale nie usuwa ich automatycznie. Jeśli chcesz zwolnić partycję rozruchową, musisz ręcznie usunąć stare jądra (pamiętaj, aby zostawić przynajmniej jedno z poprzednich jąder). Aby wyświetlić listę wszystkich pakietów instalujących jądro i nagłówków jądra, użyj dpkg -l | egrep "linux-(im|he)".

Odpowiadając na twoje pytanie - Czy możliwe jest posiadanie 2 wersji tego samego jądra? -- Tak to mozliwe. Nie mogę teraz tego sprawdzić na CentOS 6.5, ale na CentOS 7 byłem w stanie uzyskać pożądany wynik, po prostu powielając pliki /bootkatalogu związane z jądrem i przebudowując menu 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
golem
źródło
dzięki, pracuję nad tym. Ale w CentOS 6.5 nie ma „grub2-mkconfig”. czy wiesz, jak to zrobić w centos 6.5, myślę, że grub2 jest dostępny tylko w centos 7. Jestem teraz w Google, jeśli znajdę soln, zaktualizuję tutaj.
Mani,
Zmodyfikowałem te linie, aby pasowały do ​​Centos 6.5, jak poniżej, i utknąłem przy aktualizacji grub.conf. ls -1 | grep "2.6.32-431.el6" | {podczas czytania i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); gotowy; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
Mani
wielkie dzięki!!! Zadziałało i zmodyfikowałem w ten sposób ls -1 | grep "2.6.32-431.el6" | {podczas czytania i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); gotowy; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup i ręcznie edytowałem grup.conf. Możesz zachować identyfikator UUID bez zmian, jeśli zamierzasz kopiować na tym samym dysku i partycji.
Mani,
7

Tak, jest to możliwe i powiedziałbym, że nawet wskazane. Wystarczy skonfigurować proces rozruchu, aby zaoferować alternatywę. Zazwyczaj odbywa się to w konfiguracji modułu ładującego - zwykle można po prostu zduplikować istniejący wpis i zmienić nazwę pliku obrazu jądra oraz etykietę pozycji menu rozruchu.

Na serwerze produkcyjnym zwykle nie stanowi to problemu, ale przy każdej aktualizacji jądra warto mieć przy sobie kopię zapasową. Niektóre dystrybucje Linuksa oferują wycofywanie (zwykle wspierane przez migawki systemu plików) aktualizacji pakietów, aby proces był jak najbardziej bezbolesny, ale nawet w takich przypadkach starałbym się przygotować kopię zapasową.

Jeśli chodzi o posiadanie kilku kopii tego samego jądra - nawet to miałoby sens, ale jak wskazuje @goldilocks w komentarzu poniżej, jeśli twoje jądro ulegnie uszkodzeniu, powinieneś pomyśleć o wymianie sprzętu. Z drugiej strony umieszczenie duplikatu na innym fizycznym dysku twardym może zaoszczędzić trochę problemów. Należy jednak pamiętać, że plik obrazu jądra jest tylko kiedykolwiek stosowane podczas startu systemu.

Peter
źródło
Zmodyfikowałem qns. Daj mi znać, Jak mieć zapasowe jądro? (najlepiej ta sama wersja)
Mani
3
Nie powinieneś nic robić, już tam są - ale w różnych wersjach. Nie ma sensu mieć dwóch takich samych wersji, chyba że sam skompilujesz jedną z nich, w przeciwnym razie są to tylko identyczne kopie. Kwestia „korupcji” jest trochę nieprawdziwa - zgodnie z tą logiką potrzebne byłyby dwie identyczne kopie całego systemu na wypadek, gdyby bashpliki binarne zostały uszkodzone, libczostały uszkodzone itp., A wszystko to sprawi, że system będzie bezużyteczny. Te pliki nie powinny być „uszkodzone”. Jeśli tak, wymień sprzęt.
goldilocks,
1
@goldilocks Lub wymień sysadmin, w zależności od tego, gdzie był błąd.
Philip Kendall,
@goldilocks patrz zaktualizowana odpowiedź - może mieć sens w określonych przypadkach. Oczywiście w miarę możliwości należy preferować wymianę wadliwego sprzętu.
Peter