Nach sechs Monaten Entwicklung wurde die Version 4.2 des Tools CRIU (Checkpoint and Restore In Userspace) veröffentlicht, das für das Speichern und Wiederherstellen von Prozessen im Userspace konzipiert ist. Das Tool ermöglicht es, den Zustand eines oder mehrerer Prozesse zu speichern und dann die Arbeit von der gespeicherten Position fortzusetzen, selbst nach einem Systemneustart oder auf einem anderen Server, ohne unterbrochene Netzwerkverbindungen. Der Code des Projekts ist in C geschrieben und wird unter der GPLv2-Lizenz veröffentlicht. CRIU wird in Containerverwaltungssystemen wie OpenVZ, LXC/LXD und Docker eingesetzt. Die erforderlichen Änderungen für den Betrieb von CRIU sind in die Hauptversion des Linux-Kernels integriert.
Die Anwendung der CRIU-Technologie umfasst die Möglichkeit, das Betriebssystem neu zu starten, ohne die Kontinuität lang laufender Prozesse zu stören, die Live-Migration isolierter Container, die Beschleunigung des Starts langsamer Prozesse (man kann mit einem Zustand beginnen, der nach der Initialisierung gespeichert wurde), das Durchführen von Kernel-Updates ohne Neustart der Dienste, das regelmäßige Speichern des Status lang laufender rechenintensiver Aufgaben zur Wiederaufnahme im Falle eines unerwarteten Abbruchs, die Lastverteilung auf Knoten in Clustern, die Duplikation von Prozessen auf eine andere Maschine (Fork auf ein entferntes System) und das Erstellen von Snapshots von Benutzeranwendungen während des Betriebs zur Analyse auf einem anderen System oder zur Möglichkeit, künftige Aktionen im Programm rückgängig zu machen.
In der neuen Version:
- Im amdgpu-Plugin wurde die Funktion zur Parallelisierung der Wiederherstellung des Status von Prozessen, die die GPU verwenden, implementiert.
- Die Option «—allow-uprobes» wurde hinzugefügt, die es ermöglicht, mit Prozessen zu arbeiten, die vma (Virtual Memory Area) bei der Prozessüberwachung durch den uprobe-Mechanismus verwenden.
- In der Bibliothek libcriu wurde die Möglichkeit hinzugefügt, eine Konfigurationsdatei für RPC festzulegen, die von Runtime-Containern verwendet wird, die diese Bibliothek nutzen, wie z.B. crun. Diese Funktionalität kann nützlich sein, um Optionen wie „—tcp-established“ über die Datei /etc/criu/runc.conf für Kubernetes zu konfigurieren.
- Probleme bei der Kompilierung auf ARM64-Systemen mit der C-Bibliothek musl wurden behoben.
- Ein ganzzahliges Überlaufproblem in der Funktion pagemap_len() wurde behoben.
- Probleme mit der Verwendung der getsockopt-Optionen SO_PASSCRED und SO_PASSSEC auf Systemen mit dem Linux-Kernel 6.16 wurden gelöst.
Quelle: opennet.ru
