CRIUによる保存と復元の流れ実行中のプロセス群を停止し、状態を読み出してファイルへ保存する。そのファイルから資源を作り直し、プロセスを再開する。実行中のプロセス群停止状態を読み出すimagefiles資源を作り直す再開checkpointrestore
CPU

レジスタとスレッド

命令ポインタ、レジスタ、シグナル、スレッドの関係を保存します。

RAM

仮想メモリ

メモリマップとページの内容をimage filesへ記録します。

kernel resources

ファイルとsocket

ファイルディスクリプタ、パイプ、UNIX socket、TCP接続などの状態を調べます。

identity

PIDとnamespace

プロセス階層とPIDを作り直し、保存時のnamespace構成を復元します。

2000年代

namespaceとkernel内C/Rの研究

PIDなどの識別子をnamespace内へ閉じ込めると、保存前と同じ番号でプロセスを作り直せます。Linux-CRはnamespaceとfreezer cgroupを土台に、カーネル内のcheckpoint/restoreを提案しました。

2011年頃〜

CRIU

Virtuozzoで始まったCRIUは、保存と復元の制御をユーザー空間へ置きました。必要なカーネルAPIを少しずつ上流へ追加し、現在はLXC、Docker、Podmanなどから利用されています。

使われる場面

ライブマイグレーションプロセスの一時停止起動済み状態のスナップショット障害解析