Dopo sei mesi di sviluppo, è stato rilasciato il tool CRIU 4.2 (Checkpoint and Restore In Userspace), progettato per salvare e ripristinare i processi nello spazio utente. Questo strumento consente di salvare lo stato di uno o più processi e di riprendere l'esecuzione dalla posizione salvata, anche dopo un riavvio del sistema o su un altro server, senza interrompere le connessioni di rete già stabilite. Il codice del progetto è scritto in linguaggio C e distribuito con licenza GPLv2. CRIU è utilizzato in sistemi di gestione dei container come OpenVZ, LXC/LXD e Docker. Le modifiche necessarie per il funzionamento di CRIU sono incluse nel kernel Linux.
Tra le applicazioni della tecnologia CRIU si evidenzia il supporto per il riavvio del sistema operativo senza interrompere l'esecuzione di processi a lungo termine, la migrazione live di contenitori isolati, l'accelerazione dell'avvio di processi lenti (è possibile iniziare a lavorare dallo stato salvato dopo l'inizializzazione), l'aggiornamento del kernel senza dover riavviare i servizi, il salvataggio periodico dello stato di compiti computazionali prolungati per riprendere il lavoro in caso di arresto anomalo, il bilanciamento del carico sui nodi nei cluster, la duplicazione di processi su un'altra macchina (fork su un sistema remoto) e la creazione di snapshot di applicazioni utente durante l'esecuzione per analisi su un altro sistema o nel caso in cui sia necessario annullare ulteriori azioni nel programma.
Nel nuovo rilascio:
- Nel plugin amdgpu è stata implementata la possibilità di parallelizzare il recupero dello stato dei processi che utilizzano la GPU.
- È stata aggiunta l'opzione «—allow-uprobes», che consente di lavorare con processi che utilizzano vma (Virtual Memory Area) durante il tracciamento dei processi tramite il meccanismo uprobe.
- Nella libreria libcriu è stata aggiunta la possibilità di specificare un file di configurazione RPC per i contenitori runtime che utilizzano questa libreria, come crun. Ad esempio, questa funzione può rivelarsi utile per impostare opzioni come «—tcp-established» attraverso il file /etc/criu/runc.conf per Kubernetes.
- Sono stati risolti problemi di compilazione su sistemi ARM64 con la libreria C musl.
- Risolto un overflow intero nella funzione pagemap_len().
- Sono stati risolti problemi con le opzioni getsockopt SO_PASSCRED e SO_PASSSEC su sistemi con kernel Linux 6.16.
Fonte: opennet.ru
