CRIU | |
---|---|
| |
Tip de | Software pentru instrumente |
Dezvoltator | Echipa OpenVZ |
Scris in | C și Asamblator |
Sistem de operare | linux |
ultima versiune | 3.17.1 (23 iulie 2022) |
Licență | GNU GPL v.2 |
Site-ul web | criu.org |
CRIU (din engleză Checkpoint / Restore In Userspace ) - software pentru sistemul de operare Linux , care vă permite să creați un punct de control din exterior în timpul execuției unui program arbitrar cu posibilitatea de a relua programul din acest punct, inclusiv într-o altă instanță a sistemului de operare ( funcția de migrare live ) [1] .
Caracteristica principală a proiectului este implementarea sa predominantă în spațiul de proces al utilizatorului , și nu în nucleul sistemului de operare (ca, de exemplu, în proiectul OpenVZ ), precum și capacitatea de a lucra cu procese arbitrare fără suport suplimentar din partea lor. partea [2] .
În 2011, Parallels a anunțat [3] în presa rusă planuri de a integra proiectul său Parallels Virtuozzo Containers în nucleul Linux mainstream . Una dintre principalele caracteristici ale proiectului este posibilitatea de migrare a procesului live. Înțelegerea încercărilor anterioare nereușite de a integra astfel de tehnologii în nucleul sistemului de operare [4] a condus dezvoltatorii să realizeze că migrarea proceselor trebuie implementată în spațiul de adrese al aplicațiilor utilizator.
Versiunea inițială a proiectului CRIU a fost dezvoltată de Pavel Emelyanov, liderul echipei de dezvoltare OpenVZ , și prezentată comunității de dezvoltare a sistemelor de operare Linux pe 15 iulie 2011 [5] . În septembrie același an, proiectul a fost prezentat la conferința Linux Plumbers [6] .
În general, proiectul a fost acceptat cu optimism, ceea ce este confirmat de includerea în miez a unora dintre modificările necesare proiectului. Cu toate acestea, întreținătorul Andrew Morton, prin al cărui arbore git schimbările și-au făcut loc în nucleul principal, a fost oarecum sceptic în comentariile sale [7] .
Prima lansare a proiectului a avut loc pe 23 iulie 2012 [8] . Pe 25 noiembrie 2013, dezvoltatorii au anunțat prima lansare majoră a proiectului lor - 1.0 [9] . CRIU din această versiune poate rula pe arhitecturi ARM și x86-64 și nu necesită modificări suplimentare ale nucleului - este suficient să instalați nucleul principal al versiunii 3.11 sau mai mare.
Deoarece proiectul este dezvoltat în cadrul proiectului OpenVZ , principalul obiectiv urmărit de dezvoltatori este acela de a sprijini migrarea containerelor . Cu toate acestea, cu ajutorul CRIU este posibil să salvați și să restabiliți starea proceselor individuale sau a grupurilor acestora.
De la mijlocul anilor 2010, sunt acceptate două arhitecturi - x86-64 și ARM - și următoarele obiecte Linux:
Toate suporturile necesare pentru kernel sunt incluse în versiunea 3.11 a nucleului Linux.
Unul dintre scopurile proiectului este abilitatea de a salva și restabili starea unei conexiuni TCP, iar interesul principal este cazul când doar o parte a conexiunii este supusă procedurii de salvare cu restaurare ulterioară. Această declarație de problemă a apărut din cazul principal de utilizare al Parallels pentru CRIU, în care un container migrează de la o mașină la alta, cu toate conexiunile externe „deplasându-se” cu containerul.
Pentru a atinge acest obiectiv, a fost dezvoltat și implementat un mecanism în versiunea 3.5 a nucleului Linux, numit TCP repair mode [10] , care implementează un set de operații pe un socket TCP care vă permite să-l „dezasamblați” și să îl „asamblați” fără a rula oricare dintre procedurile descrise în standard pentru schimbul de pachete în rețea.
„Notă: acesta este un proiect dezvoltat de diverși ruși nebuni pentru a crea puncte de control și a reporni din ele mai ales din aplicația utilizatorului, cu diferite coduri de ajutor ciudate adăugate la kernel, unde este afișată o astfel de nevoie.
... Cu toate acestea, nu sunt la fel de sigur ca dezvoltatorii că toate acestea vor funcționa vreodată! Așa că le cer să „împacheteze” macro-ul CONFIG_CHECKPOINT_RESTORE pe fiecare bucată de cod nou din nucleu.
Deci, dacă în timp totul se termină în lacrimi și proiectul în ansamblu se destramă, va fi o sarcină ușoară să parcurgeți codul și să aruncați totul fără urmă.
„O notă despre asta: acesta este un proiect al diverșilor ruși nebuni pentru a efectua c/r în principal din spațiul utilizatorului, cu diverse coduri de ajutor ciudate adăugate în nucleu unde este demonstrată necesitatea.
… Cu toate acestea, sunt mai puțin încrezător decât dezvoltatorii că totul va funcționa în cele din urmă! Deci, ceea ce le cer să facă este să împacheteze fiecare bucată de cod nou în CONFIG_CHECKPOINT_RESTORE.
Deci, dacă totul ajunge până la urmă la lacrimi și proiectul ca întreg eșuează, ar trebui
Software gratuit și open source | |
---|---|
Lucrul principal |
|
Comunitate |
|
Organizații | |
Licențe | |
Probleme | |
Alte |
|
|