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] .
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.
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.
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.
"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.
"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
Gratis och öppen källkod | |
---|---|
Huvudsaken |
|
gemenskap |
|
Organisationer | |
Licenser | |
Problem | |
Övrig |
|
|