След половин година разработка, е публикувана версията на инструмента 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 за runtime контейнери, които използват тази библиотека, като crun. Например, реализираната възможност може да бъде полезна за настройка на опции, като «—tcp-established», чрез файл /etc/criu/runc.conf за Kubernetes.
- Решени са проблемите с компилирането на ARM64-системи с библиотеката C musl.
- Отстранено е целочисленото преливане във функцията pagemap_len().
- Решени са проблеми с използването на getsockopt опции SO_PASSCRED и SO_PASSSEC на системи с ядро на Linux 6.16.
Източник: opennet.ru
