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

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

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

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

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

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

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


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


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

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

6 ответов

Решение

Все остальные ответы здесь хороши, но для Ubuntu, в частности, Canonical теперь предоставляет эту услугу 16.04.

При этом используется технология прямых исправлений в исходном ядре Linux с момента выпуска 4.0.

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

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

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

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

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

  • kGraft, о котором вы уже упоминали. У одного из инженеров ядра Ubuntu есть пост в блоге, где он попробовал это: использование kgraft с ubuntu
  • kpatch, в настоящее время разрабатывается Red Hat. На его сайте github есть несколько инструкций по его тестированию в Ubuntu: https://github.com/dynup/kpatch

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

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

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

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

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

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

Другие вопросы по тегам