Поиск по сайту:

Что такое живое исправление ядра Linux?


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

Что такое живое исправление ядра?

Перед исправлением ядра в реальном времени системным администраторам нужно было выбирать между сохранением своего сервера или применением обновлений безопасности. Очевидно, это не идеально, поэтому в 2008 году Джефф Арнольд из Массачусетского технологического института создал KSplice, инструмент, который мог применять обновления, взяв двоичный diff и применяя исправления к работающему ядру в памяти.

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

На самом деле живое исправление ядра немного менее полезно, чем может показаться. Если вы заботитесь о времени безотказной работы сервера, вы, вероятно, также захотите выполнить какое-то соглашение об уровне обслуживания или иметь критически важную службу для продолжения работы. В сети с высокой доступностью любой отдельный сервер теоретически должен быть способен спонтанно выйти из строя, не влияя на время безотказной работы приложения. В идеале у вас должно быть два или более серверов за балансировщиками нагрузки, а если у вас более одного сервера, они могут обновляться по одному без существенного влияния на доступность службы, хотя на короткое время вы можете быть загружены на 50%.

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

Недостатки живого исправления

Исправление ядра в реальном времени по-прежнему довольно сложно сделать — исправления должны быть написаны экспертами для каждой системы, и это зарезервировано только для важных исправлений безопасности. Даже в этом случае нет гарантии, что ваша система не выйдет из строя. Ubuntu справляется с этим риском, медленно развертывая исправления для нескольких пользователей одновременно, отслеживая сбои.

Исправления ядра в реальном времени также не могут делать все — их можно применять только к небольшим и определенным частям кода ядра, и их нельзя использовать для каких-либо крупных обновлений, которые затрагивают несколько компонентов или изменяют структуры данных.

Кто поддерживает исправление в реальном времени?

К сожалению, исходная программа KSplice больше не является открытым исходным кодом после того, как в 2011 году она была приобретена Oracle для интеграции в Oracle Linux.

Поскольку исходный код KSplice становится закрытым, многие другие компании, работающие в сфере серверов Linux, разработали свои собственные версии. Поскольку исправления необходимо писать и тестировать для каждой системы, очень сложно поддерживать единый «Live Kernel Patcher» с открытым исходным кодом.

Большинство компаний предлагают это как платную услугу. KernelCare ближе всего к решению общего назначения и поддерживает большинство дистрибутивов с платной подпиской. Amazon Linux 2 — одна из немногих, которые предлагают ее бесплатно. У RHEL есть kpatch. Oracle Linux по-прежнему использует ksplice.

Ubuntu имеет Canonical Livepatch. Это бесплатно для трех компьютеров, после чего вам потребуется подписка Ubuntu Advantage для каждого компьютера.