Публикувано е издание на инструмента CRIU 4.0 (Checkpoint and Restore In Userspace), предназначен за запазване и възстановяване на процеси в пространството на потребителя. Инструментът позволява запазване на състоянието на един или повече процеси и след това възобновяване на работа от запазената позиция, включително след рестартиране на системата или на друг сървър без прекъсване на установените мрежови връзки. Кодът на проекта е написан на Си и се разпространява под лиценз GPLv2. CRIU се използва в системи за управление на контейнери като OpenVZ, LXC/LXD и Docker. Необходимите за работа на CRIU изменения са включени в основния състав на ядрото на Linux.
От области на приложение на технологията CRIU се отличава осигуряване на рестартиране на ОС без нарушаване на непрекъснатостта на изпълнението на дългосрочни процеси, Live миграция на изолирани контейнери, ускоряване на стартирането на бавни процеси (може да се започне работа от състояние, запазено след инициализация), провеждане на обновления на ядрото без рестартиране на услугите, периодично запазване на състоянието на дългосрочни изчислителни задачи за възстановяване на работа в случай на срив, разпределение на натоварването на възли в клъстери, дублиране на процеси на друга машина (fork на отдалечена система), създаване на снимки на потребителски приложения в процес на работа за тяхния анализ на друга система или в случай, че се наложи да се отмени по-нататъшното действие в програмата.
В новото издание:
- Добавен е плъгин CUDA, осигуряващ възможност за запазване и възстановяване на състоянието на приложения на база технологията NVIDIA CUDA.
- Добавена е поддръжка за механизма Shadow Stack, поддържан от ядрото на Linux 6.6 и позволяващ блокиране на работата на много експлойти, използвайки апаратните възможности на процесорите Intel (след предаване на управлението на функцията, адресите за връщане се запазват от процесора не само в обикновения стек, но и в отделен „сенчен“ стек, който не може да бъде променян директно, а преди изхода от функцията адресът за връщане се извлича от сенчестия стек и се сравнява с адреса за връщане от основния стек).
- Добавена поддръжка на ioctl команда PAGEMAP_SCAN за получаване на информация за съдържанието на таблиците за страници в паметта, което, наред с другото, при използване с userfaultfd() позволява определяне на записи в определена област от паметта.
- Реализирана е възможност за възстановяване на потока в правилната cgroup v1.
Източник: opennet.ru
