Jak mogę zaktualizować jądro mojego serwera bez ponownego uruchamiania?

29

To jest załadowane pytanie, ponieważ jestem już świadomy i jestem bardzo zainteresowany ksplice . Problem polega na tym, że odkąd zostały zakupione przez Oracle, zostali zmuszeni do wyciągnięcia wielu dystrybucji serwerów z oferty. Odpowiedź nie jest tak prosta jak kiedyś.

Zauważyłem pytanie na Unix.SE, które brzmi:

Możesz budować własne łatki ksplice, aby dynamicznie ładować się do własnego jądra

Świetny! Ale jak?!

Zainstalowałem bezpłatny ksplicepakiet w repozytorium na moim pulpicie ( ksplice-uptrackktóry nie jest niewolny) i teraz chcę generować i stosować aktualizacje. Jaki jest proces Czy są jakieś skrypty automatyzujące proces?

Co więcej, jeśli cała maszyna wymagana do aktualizacji bez restartu znajduje się w jądrze (i ksplicepakiecie), dlaczego, u licha, nie korzystamy z niej domyślnie?


Całkiem niedawno ogłoszono kGraft . Wydaje się, że jest to w przybliżeniu ten sam wynik, więc jeśli masz na to odpowiedź, byłbym z tego powodu równie szczęśliwy. Jednak obecnie jest kilka miesięcy od premiery.


Uwaga 1: Cieszę się z rozwiązania obok ksplice, ale musi ono zapewniać to samo: aktualizacje aktualizacji jądra, które można zastosować bez ponownego uruchamiania serwera.

Uwaga 2: Powiem to jeszcze raz; główna „usługa” ksplice nie obsługuje Ubuntu Server. Kiedyś, ale już nie. Kiedy mówię o chęci użycia ksplice, mówię o narzędziach open source w ksplicepakiecie. Jakakolwiek odpowiedź, o której mowa, ksplice-uptrackprawdopodobnie nie jest tym, czego szukam, ponieważ jest to część, która integruje się bezpośrednio ze wspomnianą „usługą”.

Oli
źródło

Odpowiedzi:

6

Nie wiem wiele o ksplice, ale pomyślałem, że wspomnę o tym - słyszałeś o tym kexec? To może być to, czego potrzebujesz.

Jeśli chodzi o pytanie, dlaczego nie przyjęliśmy tego jako domyślnego mechanizmu? Zastąpienie pamięci obecnego jądra podczas jego działania może powodować potencjalne problemy. Oczekuje również, że urządzenia będą w dobrze zdefiniowanym stanie, co nie zawsze jest możliwe.

Możesz zajrzeć do artykułu na temat prac programisty IBM , aby zdecydować, czy odpowiada Twoim potrzebom.

Marcin Kamiński
źródło
5
+1 za kexec, ale w gruncie rzeczy jest to gorący restart - IE jądro jest ładowane ponownie od zera, więc skrypty init itp. Nadal są wywoływane. Z technicznego punktu widzenia nie jest to ponowne uruchomienie, ale uruchomione usługi zostaną zatrzymane.
jackweirdy
Tak, jestem tego świadomy, ale nie przeczytałem niczego na ksplice, aby dowiedzieć się, jak to jest inaczej.
Marcin Kamiński
1
Według en.wikipedia.org/wiki/Ksplice , ksplicestosuje binarną łatkę diff do działającego jądra, gdy jest ono nadal w pamięci
jackweirdy
2
Muszę przeczytać o tym trochę więcej, ponieważ jest to interesujące. Ile czasu pracy próbujesz zaoszczędzić przed zresetowaniem? : D
Marcin Kamiński
3

ksplice pozwoli na zamianę jądra bez konieczności ponownego uruchamiania. Uptrack działa w ksplice i ma edytowalny plik konfiguracyjny w /etc/uptrack/uptrack.conf

opaska na oczy
źródło
2

Istnieje kilka całkowicie otwartych alternatyw dla Ksplice, które zostały zgłoszone do włączenia do głównego jądra Linuksa. Jest za wcześnie, aby powiedzieć, które trafią do jądra, ale nadal możesz je wypróbować, jeśli masz dość odwagi:

Możesz przeczytać więcej o obu z nich tutaj: SUSE Posts kGraft, Red Hat Posts Kpatch Patches

bmaupin
źródło
1

Wiki Arch Linux miało instrukcje: https://wiki.archlinux.org/index.php/ksplice

Jedyną częścią, która wydaje się być specyficzna dla dystrybucji, jest sposób instalacji samego ksplice. Ponieważ już się zorientowałeś, wydaje się, że to powinno pomóc ci w drodze.

Bobpaul
źródło
1
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Eric Carvalho
0

Od 16 lipca 2015 r. „Oracle Ksplice jest oferowany bezpłatnie w Fedorze i Ubuntu Desktop Editions.”, Oficjalnie.

Wystarczy zainstalować pobrany plik .deb, który można uzyskać tutaj .

Jeśli spróbujesz sudo dpkg -i ksplice-uptrack.deb, być może będziesz musiał naprawić zależności sudo apt-get install -f.

Pablo A.
źródło