Sposoby na szybki reboot

Fri 15 April 2011 by admin

Update nowego kernela wiąże się najczęściej z wykonaniem restartu danej maszyny, co w przypadku serwerów nie jest szczególnie pożądane. Istnieją jednak metody, które łagodzą lub eliminują proces restartu...

Pierwsza z metod używa polecenia kexec, który umożliwia uruchomienie nowego kernela z poziomu starego-działającego. W tym wypadku pomijany jest proces pełnego restartu w tym czasochłonnej operacji POST, efekt jest taki, że widzimy start systemu tuż po załadowaniu i uruchomieniu bootloadera. W celu skorzystania z tej metody wystarczy zainstalować pakiet kexec-tools oraz wykonanie polecenia załadowania nowego kernela i restartu maszyny:

# kexec -l <sciezka do pliku z kernelem> --initrd=<sciezka do pliku z initrd>

--command-line="$(cat /proc/cmdline)"

# sync

# kexec -e

Druga z metod wykorzystuje narzędzie Ksplice , które umożliwia nakładanie patch'y na działający kernel. Samo narzędzie ksplice jest dostępne w formie licencji GNU/GPL , zaś firma Ksplice dostarcza poprawki do najpopularniejszych kernel'i dystrybucyjnych. Tworzenie poprawek odbywa się na zasadzie porówania pliku wykonywalnego sprzed i po wykonaniu update'u. W momencie nakładania poprawki system Ksplice upewnia się, że procesor nie wykonuje danej patche'owanej funkcji. Nałożenie łatki na daną funkcję skutkuje tym, że przy wejściu do niej mamy odwołanie do jej nowej wersji, zatem efektywnie pracujemy na nowej wersji kernela mimo, że fizycznie na dysku nie zmodyfikowaliśmy żadnych plików wykonywalnych. Zatem przy ponownym restarcie patch'e ponownie są nakładane, o ile taki restart był konieczny. Według analiz większość patche'y da się w ten sposób zaaplikować [1]. Więcej informacji na temat narzędzia uptrack znajduję się na stronie producenta.

Łącząc te dwa narzędzia możemy efektywnie zwiększyć uptime, choć czasem pełny reboot może nam dać informację o stanie serwera plus wymuszenie pełnego fsck.

[1] http://pl.wikipedia.org/wiki/Ksplice


Comments