CRIU

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 5 maj 2022; verifiering kräver 1 redigering .
CRIU

Checkpoint och återställ i användarutrymme
Sorts Verktygsprogramvara
Utvecklaren OpenVZ -teamet
Skrivet i C och Assembler
Operativ system linux
senaste versionen 3.17.1 (23 juli 2022)
Licens GNU GPL v.2
Hemsida criu.org

CRIU (från engelska  Checkpoint / Restore In Userspace ) - programvara för operativsystemet Linux , som låter dig skapa en kontrollpunkt från utsidan under körningen av ett godtyckligt program med möjligheten att återuppta programmet från denna punkt, inklusive i en annan instans av operativsystemet ( live-migreringsfunktion ) [1] .

Huvuddragen i projektet är dess övervägande implementering i användarens processutrymme och inte i operativsystemets kärna (som till exempel i OpenVZ- projektet ), samt förmågan att arbeta med godtyckliga processer utan ytterligare stöd från deras sida [2] .

Historik

2011 tillkännagav Parallels [3] i rysk press planer på att integrera sitt Parallels Virtuozzo Containers- projekt i den vanliga Linux-kärnan . En av huvuddragen i projektet är möjligheten till liveprocessmigrering. Att förstå tidigare misslyckade försök att integrera sådana tekniker i operativsystemets kärna [4] fick utvecklare att inse att processmigrering måste implementeras i adressutrymmet för användarapplikationer.

Den första versionen av CRIU-projektet utvecklades av Pavel Emelyanov, ledaren för OpenVZ- utvecklingsteamet , och presenterades för Linux-operativsystemutvecklingsgemenskapen den 15 juli 2011 [5] . I september samma år presenterades projektet på Linux Plumbers [6] -konferensen .

I allmänhet accepterades projektet med optimism, vilket bekräftas av att några av de förändringar som krävs för projektet inkluderas i kärnan. Men underhållaren Andrew Morton, genom vars git-träd ändringarna tog sig in i huvudkärnan, var något skeptisk i sina kommentarer [7] .

Den första releasen av projektet ägde rum den 23 juli 2012 [8] . Den 25 november 2013 tillkännagav utvecklarna den första stora utgåvan av sitt projekt - 1.0 [9] . CRIU av denna version kan köras på ARM- och x86-64-arkitekturer och kräver inga ytterligare kärnmodifieringar - det räcker med att installera huvudkärnan i version 3.11 eller högre.

Funktioner

Eftersom projektet utvecklas under OpenVZ- projektet är det huvudsakliga målet som utvecklarna eftersträvar att stödja containermigrering . Men med hjälp av CRIU är det möjligt att spara och återställa tillståndet för enskilda processer eller deras grupper.

Från och med mitten av 2010-talet stöds två arkitekturer  - x86-64 och ARM  - och följande Linux-objekt:

Allt stöd för kärnan som krävs ingår i Linux-kärnan version 3.11.

Migrering av TCP-anslutningar

Ett av målen med projektet är möjligheten att spara och återställa tillståndet för en TCP-anslutning, och huvudintresset är fallet när endast en sida av anslutningen utsätts för sparproceduren med efterföljande återställning. Denna problemformulering uppstod från Parallels huvudsakliga användningsfall för CRIU, där en behållare migrerar från en maskin till en annan, med alla externa anslutningar "flyttande" med behållaren.

För att uppnå detta mål utvecklades och implementerades en mekanism i Linux-kärnan version 3.5, kallad TCP reparationsläge [10] , som implementerar en uppsättning operationer på en TCP-socket som låter dig "demontera" och "montera" den utan att köra något av det som beskrivs i standarden, procedurer för utbyte av nätverkspaket.

Anteckningar

  1. Pavel Emelyanov. Applikationsvirtualisering är ett nytt steg  // Journal of network solutions / LAN. - 2016. - Nr 3 . - S. 47 . Arkiverad från originalet den 5 september 2017.
  2. Rami Rosen. Ch. 14. Avancerade ämnen // Linux Kernel Networking: Implementation and Theory . - Apress, 2014. - S. 406. - 636 sid. — ISBN 9781430261971 . Arkiverad 5 september 2017 på Wayback Machine
  3. "Parallels anställer framstående utvecklare för att bryta sig in i Linux-kärnan" Arkiverad 9 januari 2014. // Cnews, 2011/08/12
  4. Jonathan Corbet, Checkpoint/omstart: det är komplicerat Arkiverad 13 februari 2012 på Wayback Machine // LWN.net
  5. Pavel Emelyanov, Checkpoint/återställ mestadels i användarutrymmet Arkiverad 15 maj 2012 på Wayback Machine // LWN.net
  6. Kontrollpunkt/omstart i användarutrymmet Arkiverad 14 november 2011. // Linux Plumbers Conference, 7–9 september 2011
  7. Linus Torvalds, Git commit titel: "Sammanfoga gren 'akpm' (alias "Andrews patch-bomb, ta två")"  (nedlänk) :

    "Obs: det här är ett projekt som utvecklas av olika galna ryssar för att skapa kontrollpunkter och starta om från dem mestadels från användarapplikationen, med olika konstiga hjälpkoder lagt till kärnan där ett sådant behov visas.
    ... Jag är dock inte lika säker som utvecklarna på att allt detta någonsin kommer att fungera! Så jag ber dem att "linda" makrot CONFIG_CHECKPOINT_RESTORE på varje ny kod i kärnan.
    Så om det hela med tiden slutar i tårar och projektet som helhet faller samman, blir det en lätt uppgift att gå igenom koden och slänga allt spårlöst.

    Originaltext  (engelska)[ visaDölj]

    "En notering om detta: det här är ett projekt av olika galna ryssar för att utföra c/r huvudsakligen från användarutrymmet, med olika udda hjälpkoder lagt till i kärnan där behovet visas.
    … Jag är dock mindre säker än utvecklarna på att allt så småningom kommer att fungera! Så vad jag ber dem att göra är att linda in varje ny kod i CONFIG_CHECKPOINT_RESTORE.
    Så om det hela så småningom kommer till tårar och projektet som helhet misslyckas, borde det

    vara en enkel sak att gå igenom och ta bort alla spår av det."
  8. Tillkännage: Checkpoint-restore tool v0.1 Arkiverad 14 november 2012 på Wayback Machine // LKML, 2012-07-23
  9. Checkpoint-restore tool v1.0 Arkiverad 2 december 2013 på Wayback Machine // CRIU
  10. Reparation av TCP-anslutningen Arkiverad 16 juni 2012 på Wayback Machine // LWN.net

Litteratur

Länkar