Checkpoint/Restart

Linux Container等で使われるCheckpoint/Restartの仕組みについてちょっと調査した。もともとの動機は、Containerでもライブマイグレーションが出来ることから、どんな風に実装しているのかな?ということ。そして、実装方法は主に2つの方法がある。プロセスの状態を取るために、ユーザ空間のライブラリで対処する方法と、カーネル空間のシステムコールやドライバで対処する方法である。いずれも、アプリ側かカーネル側に手を入れる必要がある。ちょっとびっくりしたのが、プロセッサにCheckpoint/Restartを組み込むやり方である。いろいろなやり方があると感心した。
さて、応用観点では、Checkpoint/Restartは、障害対処等でバックアップを取ったりするのに便利なことから、学術用途等の大規模計算でも10年以上の長い間使われてきた。商用計算機でもCheckpoint/Restartの技術は使われており、IBM WPARやVirtuzzo(LinuxWindows)等のいくつかのコンテナ技術では、インクリメンタルにCheckpointingができる。また、ライブマイグレーションも出来るコンテナ技術もある。