既存Linuxコンテナのディレクトリをコピーして、LXCのクローン環境を作るのではなく、既存のコンテナの差分だけを記録するoverlayfsを使ってみた。
クローン作成時にコピーがほぼゼロのため、一瞬でクローンが完了しますし、ディスクの節約にもなります。
使い方は、コマンドのオプションを以下のように指定するだけです。以下の例では、ubuntu01をクローンして、ubuntu02を作っています。-s がスナップショット、-Bでoverlayfsを指定します。
# lxc-clone -o ubuntu01 -n ubuntu02 -s -B overlayfs
差分のファイルは /var/lib/lxc/ubuntu02/delta0/ に保存されていました。
ちなみに、スナップショットといいつつも、overlayfs は元コンテナのファイルを修正したり、削除したりすると、それが新しいコンテナにも反映されてしまうようなので注意が必要です。
つまり
- ubuntu02で未更新のファイルをubuntu01で更新 → ubuntu02に反映される
- ubuntu02で未更新のファイルをubuntu01で削除 → ubnntu02でも削除される
- ubuntu02に存在しないファイルをubuntu01に追加 → ubuntu02にも追加される
- ubuntu02で更新したり削除したファイルと同名のフィアルをubuntu01で更新・削除 → ubuntu02に影響なし
のようです。 よって、スナップショット元のコンテナはスナップショット取得後はいじらない方がよさそうです。
(追記 2014/09/07)
inotify をサポートしていないようで、tail -f が使えないのは痛い・・・