| 開発者 | VirtuozzoのOpenVZチーム |
|---|---|
| 初回リリース | 2012年7月23日[1] |
| 安定版リリース | 3.18 (2023年4月22日[2] ) [±] |
| リポジトリ |
|
| 書かれた | 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接続の移行
当初のプロジェクト目標の 1 つは、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 プロジェクトとの比較」。
