Release von CRIU 4.2, einem System zur Speicherung und Wiederherstellung von Prozesszuständen unter Linux

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 Benutzerspeicherraum vorgesehen ist. Das Tool ermöglicht es, den Status eines einzelnen Prozesses oder einer Gruppe von Prozessen zu speichern und dann die Arbeit von der gespeicherten Position aus fortzusetzen, auch nach einem Neustart des Systems oder auf einem anderen Server, ohne bereits etablierte Netzwerkverbindungen zu unterbrechen. Der Code des Projekts ist in C geschrieben und wird unter der GPLv2-Lizenz vertrieben. CRIU wird in Containerverwaltungssystemen wie OpenVZ, LXC/LXD und Docker verwendet. Notwendige Änderungen für den Betrieb von CRIU sind in den Hauptkernel von Linux integriert.

Zu den Anwendungsbereichen der CRIU-Technologie zählt die Bereitstellung eines Systemneustarts ohne Unterbrechung der Ausführung langlaufender Prozesse, Live-Migration isolierter Container, Beschleunigung des Starts langsamer Prozesse (es kann mit einem Zustand begonnen werden, der nach der Initialisierung gespeichert wurde), Durchführung von Kernel-Updates ohne Neustart der Dienste, regelmäßige Speicherung des Zustands langlaufender Berechnungsaufgaben zur Wiederaufnahme der Arbeit bei einem Absturz, Lastverteilung auf Knoten in Clustern, Duplizieren von Prozessen auf ein anderes Gerät (Fork auf ein entferntes System), und das Erstellen von Snapshots von Benutzeranwendungen während des Betriebs zur Analyse auf einem anderen System oder für den Fall, dass weitere Aktionen im Programm zurückgezogen werden müssen.

In der neuen Version:

  • Im amdgpu-Plugin wurde die Möglichkeit umgesetzt, die Wiederherstellung des Zustands von Prozessen, die die GPU nutzen, parallel zu gestalten.
  • Eine Option "—allow-uprobes" wurde hinzugefügt, die es ermöglicht, mit Prozessen zu arbeiten, die VMA (Virtual Memory Area) bei der Prozessverfolgung über den Uprobe-Mechanismus verwenden.
  • In der Bibliothek libcriu wurde die Möglichkeit hinzugefügt, eine RPC-Konfigurationsdatei für Runtime-Container festzulegen, die diese Bibliothek verwenden, wie z. B. crun. Die implementierte Möglichkeit kann nützlich sein, um Optionen wie "—tcp-established" über die Datei /etc/criu/runc.conf für Kubernetes festzulegen.
  • Es wurden Probleme mit der Kompilierung auf ARM64-Systemen mit der C-Bibliothek musl 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

60GB SSD 8Gb DDR4