Après six mois de développement, la version 4.2 de l'outil CRIU (Checkpoint and Restore In Userspace) est publiée. Cet outil est destiné à la sauvegarde et à la restauration des processus dans l'espace utilisateur. Il permet de capturer l'état d'un ou plusieurs processus, puis de reprendre le travail à partir du point sauvegardé, y compris après un redémarrage du système ou sur un autre serveur sans interrompre les connexions réseau établies. Le code du projet est écrit en C et est distribué sous la licence GPLv2. CRIU est utilisé dans des systèmes de gestion de conteneurs tels qu'OpenVZ, LXC/LXD et Docker. Les modifications nécessaires au fonctionnement de CRIU sont incluses dans la base du noyau Linux.
Les applications de la technologie CRIU comprennent la possibilité de redémarrer le système d'exploitation sans interrompre l'exécution de processus longs, la migration à chaud de conteneurs isolés, l'accélération du démarrage de processus lents (il est possible de commencer à partir d'un état sauvegardé après l'initialisation), la mise à jour du noyau sans redémarrer les services, la sauvegarde périodique de l'état des tâches de calcul prolongées pour reprendre le travail en cas d'échec, l'équilibrage de charge sur les nœuds dans les clusters, la duplication de processus sur une autre machine (fork sur un système distant), et la création de snapshots d'applications utilisateur en cours d'exécution pour analyse sur un autre système ou en cas d'annulation d'actions ultérieures dans le programme.
Dans cette nouvelle version :
- Le plugin amdgpu intègre la possibilité de paralléliser la restauration d'état des processus utilisant le GPU.
- Une option « —allow-uprobes » a été ajoutée, permettant de travailler avec des processus qui utilisent le vma (Virtual Memory Area) lors du traçage de processus via le mécanisme uprobe.
- Dans la bibliothèque libcriu, il est désormais possible de spécifier un fichier de configuration RPC pour les conteneurs runtime utilisant cette bibliothèque, tels que crun. Par exemple, cette fonctionnalité peut être utile pour définir des options comme « —tcp-established » via le fichier /etc/criu/runc.conf pour Kubernetes.
- Des problèmes de compilation sur des systèmes ARM64 avec la bibliothèque C musl ont été résolus.
- Un débordement entier dans la fonction pagemap_len() a été corrigé.
- Des problèmes avec l'utilisation des options getsockopt SO_PASSCRED et SO_PASSSEC sur des systèmes avec le noyau Linux 6.16 ont été résolus.
Source : opennet.ru
