| CRIU | |
|---|---|
| 開発者 | VirtuozzoのOpenVZチーム |
| 初回リリース | 2012年7月23日[1] (2012-07-23) |
| 安定版リリース | 3.18 (2023年4月22日[2] ) [±] (2023-04-22) |
| リポジトリ |
|
| 書かれた | C言語とアセンブリ言語 |
| オペレーティング·システム | リナックス |
| プラットフォーム | x86-64、ARM、Power ISA、IBM System/390 |
| タイプ | アプリケーションチェックポイント |
| ライセンス | GNU GPL v.2 |
| Webサイト | criu.org |
Checkpoint/Restore In Userspace ( CRIU ) (発音:kree-oo、/kriu/ ) は、 Linuxオペレーティングシステム用のソフトウェアツールです。このツールを使用すると、実行中のアプリケーション(またはその一部)をフリーズし、ファイルの集合として永続ストレージにチェックポイントとして保存することができます。その後、これらのファイルを使用して、フリーズした時点からアプリケーションを復元し、実行することができます。CRIUプロジェクトの特徴は、カーネルではなく、 主にユーザー空間で実装されていることです。
歴史
CRIUソフトウェアの初期バージョンは、OpenVZカーネルチームのリーダーであるPavel Emelyanovによって2011年7月15日にLinux開発者コミュニティに発表されました。[3]
2011年9月、このプロジェクトはLinux Plumbers Conferenceで発表されました。[4]参加者の大半は概ねプロジェクトに好意的な評価を示しており、これはプロジェクトの実装に必要なカーネルパッチがメインラインカーネルに多数含まれていたという事実からも明らかです。 しかし、アンドリュー・モートンはやや懐疑的でした。
注記:これは、主にユーザー空間からc/rを実行するための、複数の狂ったロシア人によるプロジェクトです。必要に応じてカーネルに様々な奇妙なヘルパーコードが追加されています…しかし、開発者たちほど、最終的にすべてがうまくいくとは思っていません!そこで、彼らにお願いしたいのは、新しいコードをすべてCONFIG_CHECKPOINT_RESTOREで囲むことです。そうすれば、もし最終的にすべてが失敗し、プロジェクト全体が失敗したとしても、その痕跡をすべて削除するのは簡単なはずです。[5]
— アンドリュー・モートン
使用
CRIUツールはOpenVZプロジェクトの一環として開発されており、カーネル内のチェックポイント/リストアを置き換えることを目的としています。主な焦点はコンテナの移行をサポートすることであり、ユーザーは実行中のプロセスおよびプロセスグループの現在の状態をチェックポイント化およびリストアできます。このツールは現在、x86-64およびARMシステムで使用でき、以下の機能をサポートしています。
- プロセス:階層、PID、ユーザーおよびグループの認証子 ( UID、GID、SIDなど)、システム機能、スレッド、実行状態と停止状態
- アプリケーションメモリ:メモリマップファイルと共有メモリ
- ファイルを開く
- パイプとFIFO
- Unixドメインソケット
- ESTABLISHED 状態のTCPソケットを含むネットワーク ソケット(下記参照)
- システムV IPC
- タイマー
- 信号
- ターミナル
- Linuxカーネル固有のシステムコール:
inotify、、signalfdおよびeventfdepoll
2013年9月現在[update]、必要な機能はすべて2013年9月2日にリリースされたカーネルバージョン3.11以降、Linuxカーネルメインラインにすでに統合されているため、カーネルパッチの適用は必要ありません。 [6] [7]
TCP接続の移行
当初のプロジェクト目標の一つは、TCP接続の移行をサポートすることでしたが、最大の課題は接続の片側のみを一時停止し、その後復元することでした。これは、OpenVZのチェックポイント/リストア機能の主な用途である、物理サーバー間でコンテナ(およびそれらのアクティブなネットワーク接続すべて)のライブマイグレーションを実行するために必要でした。この問題に対処するために、「TCP修復モード」という新機能が実装されました。この機能はLinuxカーネルメインラインのバージョン3.5 [8]に含まれており、接続の反対側とネットワークパケットを交換することなく、TCPソケットを分解および再構築するための追加手段をユーザーに提供します。
参考文献
- ^ パベル・エメリャノフ (2012-07-23)。 「チェックポイント復元ツール v0.1」。
- ^ 「リリーススケジュール」.
- ^ Pavel Emelyanov (2011-07-15). 「チェックポイント/リストアは主にユーザー空間で行われる」
- ^ 「ユーザー空間でのチェックポイント/リスタート」。Linux Plumbers Conf 2011。
- ^ 「ブランチ 'akpm' をマージ(別名「Andrewのパッチ爆弾、第2弾」)」Linuxカーネルソースツリー. 2012年1月13日.
- ^ 「インストール:Linuxカーネル」。Linux
カーネルv3.11以降が必要で、特定のオプションが設定されている。
- ^ 「Linuxカーネル3.11、セクション1.5。タスクが書き込むページの詳細な追跡」kernelnewbies.org . 2013年9月2日. 2016年5月3日閲覧。
- ^ Pavel Emelyanov (2012-02-29). 「TCP接続の修復」. Linux Netdevメーリングリスト.
さらに読む
- Sanidhya Kashyap. 「再起動不要のカーネルアップデートと検証」
- Rami Rosen. 「Linux コンテナと将来のクラウド」(PDF)。
- CRIUチーム。「他のCRプロジェクトとの比較」。