CRIUとは

CRIU(Checkpoint and Restore in Userspaceの略)は、Linuxのタスクをチェックポイント/リストアするためのユーティリティです。

このツールを使うと、実行中のアプリケーション(またはその一部)をフリーズさせ、それをファイルの集まりとしてハードディスクにチェックポイントできます。そして、そのファイルを使って、フリーズした時点からアプリケーションを復元して実行できます。

CRIUプロジェクトの特徴は、主にユーザースペースで実装されていることです。LinuxのC/Rをやっているプロジェクトは他にもいくつかありますが、今のところ、CRIUが一番機能が豊富で、カーネルも最新であるように見えます。

CRIUプロジェクトは(ほとんど)終わりのない話です。なぜなら、Linuxカーネルがチェックポイントとリストアをサポートし、それが提供するすべての機能を常に追いかけていかなければならないからです。そのため、フィードバック、バグレポート、テスト、コーディング、執筆など、あらゆる種類の貢献者を募集しています。参加したい方はCONTRIBUTING.mdを参照してください。

このプロジェクトは、OpenVZ Linuxコンテナのライブマイグレーションを行う方法として始まりましたが、その後、より洗練された柔軟なツールに成長しました。現在では、OpenVZ、LXC/LXD、Docker、その他のソフトウェアで利用(統合)されており、プロジェクトはコミュニティから多大な支援を受け、そのパッケージは多くのLinuxディストリビューションに含まれています。

高度な機能

CRIUの主な用途はライブマイグレーションなので、P.Haulというライブラリが用意されています。また、このプロジェクトでは、2つのクールなコア機能をスタンドアローンライブラリとして公開しています。これらは、パラサイトコードインジェクションのlibcompelと、TCPコネクションのチェックポイントとリストアのlibsoccrです。

ライブマイグレーション

CRIUを使った真のライブマイグレーションは可能ですが、すべてのステップを手作業で行うのは複雑かもしれません。phaul サブプロジェクトは、この複雑な作業の大部分をカプセル化した Go ライブラリを提供しています。このライブラリとCRIUのGoバインディングはgo-criuレポジトリに格納されています。

パラサイトコードインジェクション

CRIUは実行中のプロセスの状態を取得するために、このプロセスに必要な情報を取得するためのコードを実行させる必要があります。アプリケーション自体を殺すことなくこれを実現するために、CRIUはパラサイトコードインジェクションという手法を使います。この手法は、libcompelというスタンドアロンライブラリとしても提供されています。

TCPソケットのチェックポイント・リストア

CRIUの機能の1つに、接続を切断することなくTCPソケットの状態を保存・復元する機能があります。この機能はそれだけで有用と考えられるので、libsoccrライブラリとして公開している。

ソフトウェア情報

本家サイト https://criu.org/Main_Page
https://github.com/checkpoint-restore/criu
バージョン 3.16.1 “Petrified Puffin” (14 Oct 2021)
ライセンス GPLv2 license
日本語対応 -
プラットフォーム サーバ:Linux
主要環境 -
カテゴリ システムツール/Linux
オススメ度 ★★★★☆
コメント なし
更新日 2022-04-29