The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Red Hat и SUSE объединили усилия в продвижении механизмов обновления ядра без перезагрузки

10.02.2015 23:20

Разработчики из компаний Red Hat и SUSE объединили свои усилия по продвижению в ядро Linux технологии динамического применения к работающему ядру патчей, которая позволяет на лету устранять уязвимости и некоторые типы ошибок без перезагрузки и без остановки работы приложений. Изначально обстоятельства сложились так, что Red Hat и SUSE практически одновременно предложили сообществу конкурирующие между собой технологии обновления ядра без перезагрузки - kPatch и kGraft, которые очень близки по своим возможностям и характеристикам, и отличаются лишь в деталях реализации.

Подобная ситуация поставила разработчиков ядра в замешательство из-за невозможности отдать предпочтение одной из этих технологий. К счастью, восторжествовал здравый смысл и разработчики kPatch и kGraft встали на путь сотрудничества. Для включения в ядро 3.20 подготовлена базовая инфраструктура, предоставляющая универсальный API для горячего наложения патчей на ядро, который не привязан к конкретным реализациям. После включения патча в состав ядра разработчики SUSE и Red Hat согласились задействовать данный API в своих продуктах вместо специфичного для kPatch и kGraft кода на уровне ядра.

Ключевые отличия kPatch и kGraft заключаются в способах подготовки патчей и средствах обеспечения целостности системы при их применении к ядру. В kGraft патч может формироваться непосредственно на основе исходных текстов, без манипуляций c объектным кодом. В kPatch патч генерируется на основе сравнения двух бинарных сборок ядра. В обеих системах патчи оформляются в форме модуля ядра, осуществляющего необходимую подстановку кода функций. Для замены функций в ядре и перенаправления на новую функцию применяется штатная подсистема ядра ftrace.

При этом в kPatch и kGraft используются разные механизмы для защиты от вызова подменяемого кода в пограничные моменты (задача может быть переключена на исправленную функцию только в момент, когда она не использует данную функцию). В kPatch для обеспечения непротиворечивости обращения к заменяемой функции из разных потоков применяется вызов stop_machine() с последующим анализом стека на предмет влияния подмены функции на выполняемые в текущий момент процессы. В kGraft применяется модель оценки непротиворечивости каждой отдельной нити, путём перебора всех процессов ядра и переноса нитей от старого варианта функции к исправленному варианту в безопасные для подмены моменты.

Предлагаемый для ядра 3.20 базовый API не касается методов обеспечения непротиворечивости, но для ядра 3.21 уже предложена реализация гибридной модели, комбинирующей метод отслеживания непротиворечивости через анализ стека (kPatch) с механизмом оценки отдельных задач (kGraft). По сравнению с kPatch гибридная модель позволяет избежать задержек во время наложения патча, может применяться в ситуациях выполнения подменяемой функции и предоставляет более предсказуемый прогноз успешности выполнения операции. По сравнению с kGraft гибридный метод более прост в реализации и оказывает меньшее влияние на процессы (не требует отправки сигнала спящим задачам). Из недостатков гибридной модели по сравнению с kPatch отмечаются более высокие требования к оформлению модуля ядра с патчем.

Дополнение: Линус Торвальдс принял в ядро 3.20 базовый API для обновления ядра без перезагрузки.

  1. Главная ссылка к новости (https://lkml.org/lkml/2015/2/9...)
  2. OpenNews: Для SUSE Enterprise Linux началось распространение обновлений ядра, не требующих перезагрузки
  3. OpenNews: Для ядра Linux предложен livepatch, механизм обновления без перезагрузки
  4. OpenNews: Компания SUSE открыла код kGraft, системы для обновления ядра Linux без перезагрузки
  5. OpenNews: Компания Red Hat открыла код kpatch для организации обновления на лету ядра Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41651-kgraft
Ключевые слова: kgraft, kpatch
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 23:26, 10/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Ну наконец-то они договорились, почти год прошёл.
     
     
  • 2.12, soarin (?), 09:37, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну собственно у них мало выбора. Canonical очень много у них отхапала доли и отхапывает дальше. Вот и объединяют усилия и это хорошо.
     
     
  • 3.14, EHLO (?), 09:58, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вот такая толстая правда.
     
  • 3.26, SU (?), 21:08, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Они договорились и выработали по сути стандарт, теперь эта технология появится и в убунте. С чем нас всех и поздравляю ;)
     
  • 3.30, Анжелика (?), 22:50, 12/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    В Ынтерпрайз сегменте?!
    А кроме вас кто-нибудь в курсе этого?
     
  • 3.34, Аноним (-), 20:46, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну собственно у них мало выбора. Canonical очень много у них отхапала доли и отхапывает дальше.

    Вы еще скажите, что она перестала быть убыточной xD

     
  • 3.40, AlexAT (ok), 20:53, 15/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    [толстота]Canonical? А что это?[/толстота]
     

  • 1.2, Аноним (-), 23:30, 10/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >комбинирующей метод отслеживания непротиворечивости через анализ стека (kPatch) с механизмом оценки отдельных задач (kGraft). По сравнению с kPatch гибридная модель позволяет избежать задержек во время наложения патча, может применяться в ситуациях выполнения подменяемой функции и предоставляет более предсказуемый прогноз успешности выполнения операции.

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

     
     
  • 2.5, Аноним (-), 00:10, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не надо их отстреливать. На фоне г-на нормальные программисты лучше видны...
     
     
  • 3.38, Аноним (-), 20:51, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Не надо их отстреливать. На фоне г-на нормальные программисты лучше видны...

    Они в нем теряются. Иногда даже тонут.

     

  • 1.3, Аноним (-), 23:32, 10/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >ядро 3.20

    Обещали же после 3.19 перейти к разработке 4.0. В чем дело?

     
     
  • 2.11, кверти (ok), 08:49, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Обещать - не значит жениться
     

  • 1.13, EHLO (?), 09:57, 11/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Уже не первый и не второй раз и возможно не третий раз пытаются подобное светлое будущее изобрести.
    Пусть конечно пилят, главное чтобы опцию оставили собирать без этих костылей. В 99.9% случаев оно того не стоит.
     
     
  • 2.16, SkyRanger (ok), 10:40, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Уже не первый и не второй раз и возможно не третий раз
    > пытаются подобное светлое будущее изобрести.
    > Пусть конечно пилят, главное чтобы опцию оставили собирать без этих костылей. В
    > 99.9% случаев оно того не стоит.

    Ну что-то путное выйдет, на десктопе не проблема, а вот когда у вас ферма серверов и нужно срочно пропатчить ядро, а ребутать нельзя - может стать полезно.

     
     
  • 3.18, Crazy Alex (ok), 14:42, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Не пойму. Что за ситуация такая, что ребутать нельзя? Либо вы спокойно переживёте downtime либо у вас есть резервные машины.

    А технология интересная, да

     
     
  • 4.27, Аноним (-), 23:57, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что за ситуация такая, что ребутать нельзя?

    Почему нельзя ? Можно. В ночь со первого января на второе.

     
     
  • 5.32, Crazy Alex (ok), 00:49, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    С перепою, что ли?

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

     
     
  • 6.41, AlexAT (ok), 20:56, 15/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Кроме шуток - крики "у меня критичный сервис, я не могу перезагрузиться"
    > очень смешат. Потому что действительно критичных сервисов без резервного железа в
    > принципе не бывает.

    Очень много "а вдруг", даже с боевым тестированием. Любой вывод системы из штатного режима рискован сваливанием в штопор. Даже если у вас мега-отказоустойчивый и 50 раз проверенный кластер, 51 раз может оказаться "как у фейсбука недавно". Поэтому никто не любит лишних ребутов и рестартов.

     
     
  • 7.43, EHLO (?), 21:52, 15/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Кроме шуток - крики "у меня критичный сервис, я не могу перезагрузиться"
    >> очень смешат. Потому что действительно критичных сервисов без резервного железа в
    >> принципе не бывает.
    > Очень много "а вдруг", даже с боевым тестированием. Любой вывод системы из
    > штатного режима рискован сваливанием в штопор. Даже если у вас мега-отказоустойчивый
    > и 50 раз проверенный кластер, 51 раз может оказаться "как у
    > фейсбука недавно". Поэтому никто не любит лишних ребутов и рестартов.

    Думаешь неведомая фигня, применяющая патчи налету, ковыряющаяся в стеке и подменяющая функции, добавит системе надежности и предсказуемости?

     
     
  • 8.44, AlexAT (ok), 21:54, 15/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Почему неведомая Она вполне себе логично работает Другое дело, что ковыряние в... текст свёрнут, показать
     
     
  • 9.51, EHLO (?), 10:29, 17/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты боишься перезагрузки в режиме обслуживания, пока все сервисы продолжают ... текст свёрнут, показать
     

  • 1.15, Аноним (-), 10:05, 11/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Можно будет внедрить в ядро бэкдор без перезагрузки!
     
     
  • 2.17, kuku (ok), 11:58, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    +1

    Ага. Повышение автоматизации напрямую помогает
    автоматизировать "неблаговидное" при слабой защите.

    Надеюсь ребята это учтут. Тут понадобится какая-то
    хорошая "проверка".

     
     
  • 3.19, Аноним (-), 16:36, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    очевидно что в ядро нужно встроить антивирус.
     
     
  • 4.23, Аноним (-), 19:45, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >очевидно что в ядро нужно встроить антивирус.

    Анон не тупи, антивирус - эта софт для вытягивания бабла домохозяек которая эффективна только после масштабного распространения вируса.

     
  • 4.31, Ilya Indigo (ok), 23:00, 12/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тссс...
    Сейчас же Лёня это услышит и займётся этим.
     
  • 4.33, Andrey Mitrofanov (?), 14:35, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >в ядро нужно встроить антивирус

    Doh, http://lwn.net/Articles/318705/?

     
  • 3.20, Аноним (-), 16:46, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ещё нужно отключаемость такой фишки при компиляции ядра
     
     
  • 4.29, Аноним (-), 18:43, 12/02/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    В ядре отключаемость будет, но системд будет обязательно требовать ядра с kpatch, так что все дистрибутивы будут поставляться со включенным. Ну так, чтобы АНБ всегда могло незаметно подсунуть что надо.
     
  • 4.36, Аноним (-), 20:48, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А ещё нужно отключаемость такой фишки при компиляции ядра

    Она уже есть. Disable LKM, если я правильно помню название.

     
  • 2.35, Аноним (-), 20:47, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно будет внедрить в ядро бэкдор без перезагрузки!

    Эта возможность существует уже четверть века. google://rootkit

     
     
  • 3.42, AlexAT (ok), 21:02, 15/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Эта возможность существует уже четверть века. google://rootkit

    С ядром есть маленькая проблема - руткит должен быть собран под конкретную версию и с конкретными опциями, и еще кто-то его под рутом должен запустить.

     

  • 1.22, Аноним (-), 17:32, 11/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    определенно нужна функция перезагрузки без перезагрузки ядра
     
     
  • 2.25, Аноним (-), 20:27, 11/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > определенно нужна функция перезагрузки без перезагрузки ядра

    Рекурсивная? :))))))))

     
     
  • 3.28, Капитан (??), 16:44, 12/02/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    JIT
     
  • 2.37, Аноним (-), 20:50, 13/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > определенно нужна функция перезагрузки без перезагрузки ядра

    systemctl isolate emergency && systemctl isolate default, не?

     
     
  • 3.45, Andrey Mitrofanov (?), 10:33, 16/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> определенно нужна функция перезагрузки без перезагрузки ядра
    > systemctl isolate emergency && systemctl isolate default, не?

    Pid(1) перезапускает? А то ж динамически линкованные glibc, openssl, xorg и апач, да.

     
     
  • 4.48, AlexAT (ok), 22:41, 16/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Pid(1) перезапускает? А то ж динамически линкованные glibc, openssl, xorg и апач,
    > да.

    kexec - перезапускает всё :) И очень даже быстро, поскольку бут ядра и запуск сервисов systemd обычно копеечный, в итоге в ребуте сервака львиную долю времени занимает инициализация железа BIOS.

     
     
  • 5.49, Andrey Mitrofanov (?), 09:46, 17/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Pid(1) перезапускает? А то ж динамически линкованные glibc, openssl, xorg и апач, да.
    > kexec - перезапускает всё :) И очень даже быстро, поскольку бут ядра

    А без перезапуска сервисов[I]!1?[I] http:/opennews/art.shtml?num=41592

     
     
  • 6.50, AlexAT (ok), 09:50, 17/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А без перезапуска сервисов[I]!1?[/I]

    Скомбинируйте с criu :)

     
  • 2.47, AlexAT (ok), 22:36, 16/02/2015 [^] [^^] [^^^] [ответить]  
  • +/
    kexec?
     

  • 1.39, Илья (??), 05:41, 15/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вот только не понимаю, зачем федоры запихнули "обновление при  перезагрузке в дистр"
     
  • 1.46, count0krsk (ok), 12:52, 16/02/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Реквестирую отключение по-умолчанию данной "фичи" для не-серверных ядер. Ибо локалхост заведомо слабее защищен, чем "критический сервис", и это может привести к появлению нового ботнета.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру