Как я могу обновить ядро ​​моего сервера без перезагрузки?

29

Это загруженный вопрос, потому что я уже в курсе, и меня очень интересует ksplice . Проблема в том, что с тех пор, как они были куплены Oracle, они были вынуждены извлечь из предложений множество дистрибутивов серверов. Ответ не так прост, как раньше.

Я заметил вопрос о Unix.SE, который гласит:

Вы можете создавать свои собственные патчи ksplice для динамической загрузки в ваше собственное ядро

Большой! Но как?!

Я установил бесплатный kspliceпакет в репо на своем рабочем столе (не ksplice-uptrackявляющийся платным) и теперь хочу создавать и применять обновления. Что за процесс? Существуют ли какие-либо сценарии для автоматизации процесса?

Более того, если весь механизм, необходимый для обновлений без перезагрузки, находится в ядре (и kspliceпакете), почему же мы не используем его по умолчанию?


Совсем недавно был объявлен kGraft . Кажется, что это примерно тот же результат, так что если у вас есть ответ, который включает в себя, я был бы так же счастлив с этим. Это в настоящее время несколько месяцев с момента релиза, хотя.


Примечание 1: Я рад за решение, кроме ksplice, но оно должно доставлять то же самое: обновляемые обновления ядра, которые можно применять без перезагрузки сервера.

Примечание 2: я скажу это снова; основной "сервис" ksplice не поддерживает Ubuntu Server. Раньше, но больше нет. Когда я говорю о желании использовать ksplice, я говорю об инструментах с открытым исходным кодом в kspliceпакете. Любой ответ, о котором ksplice-uptrackидет речь , вероятно, не тот, который мне нужен, поскольку именно эта часть напрямую интегрируется с вышеупомянутым «обслуживанием».

Оли
источник

Ответы:

6

Я не знаю много о ksplice, но думал, что упомяну это - вы слышали о kexec? Это может быть то, что вам нужно.

Что касается вопроса, почему мы не приняли это как механизм по умолчанию? Что ж, перезапись памяти текущего ядра, пока оно еще работает, может вызвать потенциальные проблемы. Также ожидается, что аппаратные устройства находятся в четко определенном состоянии, что не всегда возможно.

Вы можете взглянуть на статью IBM для разработчиков, чтобы решить, соответствует ли она вашим потребностям.

Марчин Камински
источник
5
+1 для kexec, но по сути это горячая перезагрузка - IE ядро ​​загружается снова с нуля, поэтому скрипты инициализации и т. Д. Все еще вызывают. Это не технически перезагрузка, но запущенные службы остановится.
Jackweirdy
Да, я знаю об этом, но я ничего не читал на ksplice, чтобы узнать, чем он отличается.
Марцин Камински,
1
Согласно en.wikipedia.org/wiki/Ksplice , kspliceприменяет двоичное исправление diff к работающему ядру, пока оно еще в памяти
jackweirdy
2
Мне нужно прочитать немного больше об этом, потому что это интересно. Так сколько времени вы пытаетесь сэкономить от перезагрузки? : D
Марцин Камински
3

ksplice позволит менять ядро ​​без перезагрузки. Uptrack работает в ksplice и имеет редактируемый файл конфигурации в /etc/uptrack/uptrack.conf

blindfett
источник
2

Есть пара полностью открытых исходных кодов Ksplice, которые были представлены для включения в основное ядро ​​Linux. Пока рано говорить, что окажется в ядре, но вы все равно можете попробовать их, если вы достаточно смелы:

Вы можете прочитать больше о них обоих здесь: SUSE Posts kGraft, Red Hat Posts Kpatch Патчи

bmaupin
источник
1

Вики в Arch Linux содержали инструкции: https://wiki.archlinux.org/index.php/ksplice

Единственная часть, которая кажется специфичной для дистрибутива, - это как установить саму ksplice. Поскольку вы уже поняли это, кажется, я думаю, это должно помочь вам в этом.

bobpaul
источник
1
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Эрик Карвалью,
0

С 16 июля 2015 года «Oracle Ksplice предлагается бесплатно в Fedora и Ubuntu Desktop Editions», официально.

Просто установите скачанный файл .deb, который вы можете получить здесь .

Если вы попробуете, sudo dpkg -i ksplice-uptrack.debвам, возможно, придется исправить зависимости с помощью sudo apt-get install -f.

Пабло А
источник