CRIU

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 5. května 2022; ověření vyžaduje 1 úpravu .
CRIU

Kontrolní bod a obnovení v uživatelském prostoru
Typ Nástrojový software
Vývojář Tým OpenVZ
Zapsáno v C a Assembler
Operační systém linux
Nejnovější verze 3.17.1 (23. července 2022)
Licence GNU GPL v.2
webová stránka criu.org

CRIU (z anglického  Checkpoint / Restore In Userspace ) - software pro operační systém Linux , který vám umožňuje vytvořit kontrolní bod zvenčí během provádění libovolného programu s možností obnovit program z tohoto bodu, včetně v jiné instanci operačního systému ( funkce živé migrace ) [1] .

Hlavním rysem projektu je jeho převládající implementace v uživatelském procesním prostoru , nikoli v jádře operačního systému (jako např. v projektu OpenVZ ), a také schopnost pracovat s libovolnými procesy bez dodatečné podpory jejich strana [2] .

Historie

V roce 2011 Parallels oznámil [3] v ruském tisku plány na integraci svého projektu Parallels Virtuozzo Containers do hlavního proudu linuxového jádra . Jedním z hlavních rysů projektu je možnost živé migrace procesů. Pochopení předchozích neúspěšných pokusů o integraci takových technologií do jádra operačního systému [4] vedlo vývojáře k poznání, že migraci procesů je nutné implementovat v adresním prostoru uživatelských aplikací.

Prvotní verzi projektu CRIU vyvinul Pavel Emelyanov, vedoucí vývojového týmu OpenVZ , a 15. července 2011 byla představena komunitě vývojářů operačního systému Linux [5] . V září téhož roku byl projekt představen na konferenci Linux Plumbers [6] .

Celkově byl projekt přijat s optimismem, což potvrzuje i zařazení některých změn nezbytných pro projekt do jádra. Nicméně správce Andrew Morton, jehož git strom se změny dostaly do hlavního jádra, byl ve svých komentářích poněkud skeptický [7] .

První vydání projektu proběhlo 23. července 2012 [8] . Dne 25. listopadu 2013 vývojáři oznámili první velké vydání svého projektu – 1.0 [9] . CRIU této verze může běžet na architekturách ARM a x86-64 a nevyžaduje dodatečné úpravy jádra - stačí nainstalovat hlavní jádro verze 3.11 nebo vyšší.

Funkce

Jelikož je projekt vyvíjen v rámci projektu OpenVZ , hlavním cílem vývojářů je podpora kontejnerové migrace . Pomocí CRIU je však možné zachránit a obnovit stav jednotlivých procesů nebo jejich skupin.

Od poloviny roku 2010 jsou podporovány dvě architektury  – x86-64 a ARM  – a následující linuxové objekty:

Veškerá požadovaná podpora jádra je součástí linuxového jádra verze 3.11.

Migrace TCP spojení

Jedním z cílů projektu je možnost uložit a obnovit stav TCP spojení, přičemž hlavním zájmem je případ, kdy je pouze jedna strana spojení podrobena proceduře uložení s následnou obnovou. Toto prohlášení o problému vzešlo z hlavního případu použití Parallels pro CRIU, ve kterém kontejner migruje z jednoho počítače na druhý, přičemž všechna externí připojení se „pohybují“ s kontejnerem.

K dosažení tohoto cíle byl vyvinut a implementován mechanismus v linuxovém jádře verze 3.5, nazvaný TCP repair mode [10] , který implementuje sadu operací na TCP socketu, který vám umožní jej „rozebrat“ a „sestavit“ bez spuštění kterýkoli z postupů popsaných ve standardu pro výměnu síťových paketů.

Poznámky

  1. Pavel Emeljanov. Virtualizace aplikací je novou etapou  // Žurnál síťových řešení / LAN. - 2016. - č. 3 . - S. 47 . Archivováno z originálu 5. září 2017.
  2. Rami Rosen. Ch. 14. Pokročilá témata // Linux Kernel Networking: Implementation and Theory . - Apress, 2014. - S. 406. - 636 s. — ISBN 9781430261971 . Archivováno 5. září 2017 na Wayback Machine
  3. „Parallels najímá prominentní vývojáře, aby se dostali do linuxového jádra“ Archivováno 9. ledna 2014. // Cnews, 2011/08/12
  4. Jonathan Corbet, Checkpoint/restart: je to komplikované Archivováno 13. února 2012 na Wayback Machine // LWN.net
  5. Pavel Emelyanov, Checkpoint/restore většinou v uživatelském prostoru Archivováno 15. května 2012 na Wayback Machine // LWN.net
  6. Checkpoint/restart v uživatelském prostoru Archivováno 14. listopadu 2011. // Konference Linux Plumbers, 7.–9. září 2011
  7. Linus Torvalds, název commitu Git: "Sloučit větev 'akpm' (také znám jako "Andrewova patch-bomb, vezměte si dvě")"  (downlink) :

    “Poznámka: toto je projekt vyvíjený různými šílenými Rusy, aby vytvořili kontrolní body a restartovali z nich většinou z uživatelské aplikace, s různými podivnými pomocnými kódy přidanými do jádra, kde je taková potřeba ukázána.
    ... Nejsem si však tak jistý jako vývojáři, že tohle všechno někdy bude fungovat! Žádám je tedy, aby makro CONFIG_CHECKPOINT_RESTORE „nabalili“ na každý kousek nového kódu v jádře.
    Pokud to tedy časem vše skončí v slzách a projekt jako celek se rozpadne, bude snadný úkol projít kód a vše beze zbytku zahodit.

    Původní text  (anglicky)[ zobrazitskrýt]

    „Poznámka k tomu: toto je projekt různých šílených Rusů, který provádí c/r hlavně z uživatelského prostoru, s různými pomocnými kódy přidanými do jádra, kde je tato potřeba demonstrována.
    … Nicméně jsem si méně jistý než vývojáři, že to všechno nakonec bude fungovat! Žádám je tedy, aby zabalili každý kousek nového kódu do CONFIG_CHECKPOINT_RESTORE.
    Takže pokud to všechno nakonec dojde k slzám a projekt jako celek selže, mělo by

    je jednoduchá záležitost, kterou projdete a odstraníte všechny stopy.“
  8. Oznámení: Nástroj Checkpoint-restore v0.1 Archivováno 14. listopadu 2012 na Wayback Machine // LKML, 2012-07-23
  9. Checkpoint-restore tool v1.0 Archivováno 2. prosince 2013 na Wayback Machine // CRIU
  10. Oprava TCP spojení Archivováno 16. června 2012 na Wayback Machine // LWN.net

Literatura

Odkazy