След шест месеца разработка бе публикувана версия на инструмента CRIU 4.2 (Checkpoint and Restore In Userspace), предназначен за запазване и възстановяване на процеси в пространството на потребителя. Инструментът позволява да се запази състоянието на един или група процеси и след това да се възобнови работата от запазената позиция, включително след рестартиране на системата или на друг сървър, без да се нарушават вече установените мрежови връзки. Кодът на проекта е написан на езика C и се разпространява под лиценз GPLv2. CRIU се използва в системи за управление на контейнери като OpenVZ, LXC/LXD и Docker. Необходимите за работа на CRIU промени са включени в основния състав на ядрото на Linux.
От областите на приложение на технологията CRIU се отбелязва осигуряването на рестартиране на ОС без нарушаване на непрекъснатостта на изпълнението на дълготрайни процеси, естествена миграция на изолирани контейнери, ускоряване на стартирането на бавни процеси (може да се започне работа от състояние, запазено след инициализация), извършване на актуализации на ядрото без рестартиране на услугите, периодично запазване на състоянието на дълготрайни изчислителни задачи за възобновяване на работата в случай на аварийно приключване, баланс на натоварването на възлите в клъстери, дублиране на процеси на друга машина (fork на отдалечена система), създаване на снимки на потребителски приложения по време на работа за тяхния анализ на друга система или в случай, че е необходимо да се отменят по-нататъшни действия в програмата.
В новото издание:
- В плъгина amdgpu е реализирана възможността за паралелизиране на възстановяването на състоянието на процесите, използващи GPU.
- Добавена е опция «—allow-uprobes», която позволява работа с процеси, които използват vma (Virtual Memory Area) при трасировката на процеси чрез механизма uprobe.
- В библиотеката libcriu е добавена възможността за задаване на конфигурационен файл RPC за контейнерите по време на изпълнение, които използват тази библиотека, като crun. Например, реализираната възможност може да бъде полезна за задаване на опции, като «—tcp-established», чрез файл /etc/criu/runc.conf за Kubernetes.
- Решени са проблемите с компилацията на ARM64 системи с библиотеката C musl.
- Отстранено е целочисленото препълване в функцията pagemap_len().
- Решени са проблемите с използването на опции за getsockopt SO_PASSCRED и SO_PASSSEC в системи с ядро Linux 6.16.
Източник: opennet.ru
