CRIU

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 5 mai 2022; verificarea necesită 1 editare .
CRIU

Punct de verificare și restaurare în spațiul utilizator
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] .

Istorie

Î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.

Caracteristici

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.

Migrarea conexiunilor TCP

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.

Note

  1. Pavel Emelyanov. Virtualizarea aplicațiilor este o nouă etapă  // Jurnalul de soluții de rețea / LAN. - 2016. - Nr 3 . - S. 47 . Arhivat din original pe 5 septembrie 2017.
  2. Rami Rosen. Ch. 14. Subiecte avansate // Linux Kernel Networking: Implementare și Teorie . - Apress, 2014. - S. 406. - 636 p. — ISBN 9781430261971 . Arhivat pe 5 septembrie 2017 la Wayback Machine
  3. „Parallels angajează dezvoltatori proeminenți pentru a pătrunde în nucleul Linux” Arhivat 9 ianuarie 2014. // Cnews, 2011/08/12
  4. Jonathan Corbet, Checkpoint/restart: it's complicated Arhivat 13 februarie 2012 la Wayback Machine // LWN.net
  5. Pavel Emelyanov, Punct de control/restaurare mai ales în spațiul utilizatorului Arhivat 15 mai 2012 la Wayback Machine // LWN.net
  6. Punct de verificare/repornire în spațiul utilizator Arhivat 14 noiembrie 2011. // Linux Plumbers Conference, 7-9 septembrie 2011
  7. Linus Torvalds, Git commit title: „Merge branch 'akpm' (aka „Andrew's patch-bomb, take two”)”  (downlink) :

    „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ă.

    Text original  (engleză)[ arataascunde]

    „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

    fi o chestiune simplă de parcurs și de a șterge orice urmă.”
  8. Announce: Checkpoint-restore tool v0.1 Arhivat 14 noiembrie 2012 la Wayback Machine // LKML, 23-07-2012
  9. Checkpoint-restore tool v1.0 Arhivat 2 decembrie 2013 la Wayback Machine // CRIU
  10. Repararea conexiunii TCP Arhivat 16 iunie 2012 la Wayback Machine // LWN.net

Literatură

Link -uri