The OpenNET Project / Index page

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

Выпуск CRIU 4.2, системы для сохранения и восстановления состояния процессов в Linux

14.11.2025 09:17

После шести месяцев разработки опубликован выпуск инструментария CRIU 4.2 (Checkpoint and Restore In Userspace), предназначенного для сохранения и восстановления процессов в пространстве пользователя. Инструментарий позволяет сохранить состояние одного или группы процессов, а затем возобновить работу с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений. Код проекта написан на языке Си и распространяется под лицензией GPLv2. CRIU применяется в таких системах управления контейнерами, как OpenVZ, LXC/LXD и Docker. Необходимые для работы CRIU изменения включены в основной состав ядра Linux.

Из областей применения технологии CRIU отмечается обеспечение перезагрузки ОС без нарушения непрерывности выполнения длительно выполняемых процессов, Live-миграция изолированных контейнеров, ускорение запуска медленных процессов (можно начать работу с состояния, сохранённого после инициализации), проведение обновлений ядра без перезапуска сервисов, периодическое сохранение состояния длительно выполняемых вычислительных задач для возобновления работы в случае аварийного завершения, балансировка нагрузки на узлы в кластерах, дублирование процессов на другую машину (fork на удалённую систему), создание снапшотов пользовательских приложений в процессе работы для их анализа на другой системе или на случай если потребуется отменить дальнейшие действия в программе.

В новом выпуске:

  • В плагине amdgpu реализована возможность распараллеливания восстановления состояния процессов, использующих GPU.
  • Добавлена опция "--allow-uprobes", позволяющая работать с процессами, которые используют vma (Virtual Memory Area) при трассировке процессов через механизм uprobe.
  • В библиотеке libcriu добавлена возможность задания файла конфигурации RPC для runtime контейнеров, использующих данную библиотеку, таких как crun. Например, реализованная возможность может быть полезной для установки опций, таких как "--tcp-established", через файл /etc/criu/runc.conf для Kubernetes.
  • Решены проблемы с компиляцией на ARM64-системах с Си-библиотекой musl.
  • Устранено целочисленное переполнение в функции pagemap_len().
  • Решены проблемы с использованием getsockopt-опций SO_PASSCRED и SO_PASSSEC на системах с ядром Linux 6.16.


  1. Главная ссылка к новости (https://github.com/checkpoint-...)
  2. OpenNews: Выпуск CRIU 4.1, системы для сохранения и восстановления состояния процессов в Linux
  3. OpenNews: Выпуск системы управления контейнерами LXC 1.1, со встроенной поддержкой CRIU
  4. OpenNews: Выпуск инструментариев для управления контейнерами LXC 6.0, Incus 6.0 и LXD 5.21.1
  5. OpenNews: Google развивает систему перезагрузки ядра без остановки работы устройств
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64248-criu
Ключевые слова: criu
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (10) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:28, 14/11/2025 [ответить]  
  • +1 +/
    Использую в продуктивной системе, здоровья проекту!
     
     
  • 2.10, привет (ok), 10:57, 14/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    продуктовой (с) тех-лид ВТБ
     

  • 1.2, Жироватт (ok), 09:50, 14/11/2025 [ответить]  
  • +/
    Попробовал. Хм...Джава-стек сумело корректно сохранить и восстановить
     
     
  • 2.3, Аноним (3), 09:54, 14/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А чего там восстанавливать? Только с видеокартами были сложности. Лучше расскажи, какое практическое применение есть? Я могу придумать только продолжительный рендер без возможности прервать и срочное обновление.
     
     
  • 3.7, Жироватт (ok), 10:29, 14/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    На старых версия не всегда корректно работал с большим количеством JNI-вызовов, ведь должны захватываться и они.
    > Лучше расскажи, какое практическое применение есть?

    Рендер, расчеты.
    На билдферме может выполняться сборочный процесс.
    Иногда просто нежелательно тушить процесс

     

  • 1.4, Шарп (ok), 09:54, 14/11/2025 [ответить]  
  • +/
    >без разрыва уже установленных сетевых соединений

    Это невозможно. Другая сторона в сетевом соединении увидит разрыв. Если есть данные прикреплённые к сессии, то они сбросятся.

     
     
  • 2.6, Аноним (3), 10:18, 14/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Другая сторона только отвалится по таймауту. Если не успеет, то всё будет как будто у нас тут небольшой свопинг приключился.
     
  • 2.9, Аноним (9), 10:33, 14/11/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Там специальные подпорки в ядре, позволяющие реконструировать внутреннее состояние сокета без использования вызовов сокетного апи, поэтому сокет будет восстановлен точно в том же состоянии, и если удалённая сторона не затаймаутилась - то она ничего не заметит, закрытия сокета и посылки FIN не происходит, а после разморозки трафик едет дальше, как ни в чём не бывало.
     

  • 1.5, trolleybus (?), 09:59, 14/11/2025 [ответить]  
  • –4 +/
    > Устранено целочисленное переполнение в функции pagemap_len()

    А вот это типично сишная проблема. Многие тупо не парятся и везде пишут int, когда даже стандартом не определено, сколько точно байтофф оно занимает, ибо architecture dependent. Про знаковые/беззнаковые вообще молчу. А использовать всякие uint32_t не хотим, это ненужное ненужно.

    Даже в расте такой номер не пройдет, если только специально не поиздеваться.

     
     
  • 2.8, Пыщь (?), 10:32, 14/11/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Понравилась цитата защищавшего расто-операторов, суну сюда: "Это вы себе что-то придумывете. А люди обучаются, исправляют ошибки, получают знания и удовольствие."
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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