După șase luni de dezvoltare, a fost publicată versiunea 4.2 a instrumentului CRIU (Checkpoint and Restore In Userspace), destinat salvării și restaurării proceselor în spațiul utilizatorului. Instrumentul permite salvarea stării unui singur proces sau a unui grup de procese, iar apoi continuarea lucrului de la poziția salvată, inclusiv după repornirea sistemului sau pe un alt server fără a întrerupe conexiunile de rețea deja stabilite. Codul proiectului este scris în limbajul C și este distribuit sub licența GPLv2. CRIU este utilizat în sisteme de gestionare a containerelor, cum ar fi OpenVZ, LXC/LXD și Docker. Modificările necesare pentru funcționarea CRIU sunt incluse în nucleul principal al Linux.
Printre domeniile de aplicare ale tehnologiei CRIU se numără asigurarea repornirii sistemului de operare fără a întrerupe continuitatea executării proceselor pe termen lung, migrarea live a containerelor izolate, accelerarea pornirii proceselor lente (se poate începe de la un stadiu salvat după inițializare), efectuarea actualizărilor nucleului fără a reporni serviciile, salvarea periodică a stării sarcinilor de calcul prelungite pentru a relua activitatea în caz de întreruperi neașteptate, echilibrarea încărcăturii pe noduri în clustere, duplicarea proceselor pe o altă mașină (fork pe un sistem îndepărtat), realizarea de instantanee ale aplicațiilor utilizator în timpul funcționării pentru analiză pe un alt sistem sau în cazul în care este necesară anularea acțiunilor ulterioare în program.
În noua versiune:
- În pluginul amdgpu a fost implementată posibilitatea de a paraleliza restaurarea stării proceselor care folosesc GPU.
- A fost adăugată opțiunea „—allow-uprobes”, care permite lucrul cu procese care utilizează vma (Virtual Memory Area) în timpul urmăririi proceselor prin mecanismul uprobe.
- În biblioteca libcriu a fost adăugată posibilitatea de a specifica un fișier de configurație RPC pentru containerele runtime care utilizează această bibliotecă, cum ar fi crun. De exemplu, capacitatea implementată poate fi utilă pentru setarea opțiunilor, cum ar fi „—tcp-established”, prin fișierul /etc/criu/runc.conf pentru Kubernetes.
- Au fost rezolvate problemele de compilare pe sistemele ARM64 cu biblioteca C musl.
- A fost eliminată depășirea capacității de întreg în funcția pagemap_len().
- Au fost rezolvate problemele legate de utilizarea opțiunilor getsockopt SO_PASSCRED și SO_PASSSEC pe sistemele cu kernel Linux 6.16.
Sursa: opennet.ro
