LXCは,Linuxのためのコンテナ仮想化ツールである.lxc-snapshotは,LXCコンテナのスナップショットを管理するためのツールである.本記事では,lxc-snapshotの使い方について概説する.
スナップショットを作成する
lxc-snapshotでは,コンテナファイルシステムのスナップショットを作成することができる.ここでは,btrfsをバックエンドとしたときのスナップショットの作成について説明する.btrfsは,ファイルシステムレベルでのスナップショット作成に対応している.lxc-snapshotはbtrfsに対応しているので,この2者を組み合わせて使うと,高速かつ小容量でスナップショットを実現することができる.
仮に,c1
というコンテナが存在するとする.c1
コンテナのスナップショットは,次のコマンドにより作成することができる.スナップショット名は,指定が無い場合はsnap0
というような形式になる.
# lxc-snapshot -n c1
スナップショット名を指定したい場合は,lxc-snapshot -n c1 newsnap
というように指定する.実際にスナップショットが作成されているかどうかは,次のコマンドにより確認することができる.
# lxc-snapshot -n c1 -L
snap0 (/var/lib/libvirt/lxcsnaps/c1) 2014:12:28 19:10:26
これは,/var/lib/libvirt/lxcsnaps/c1/snap0
に,c1
のルートファイルシステムのスナップショットsnap0
が存在するという意味である.スナップショットは,btrfsのサブボリュームとして作成される.作成されたスナップショットの概要を次に示す.
# ls /var/lib/libvirt/lxcsnaps/c1/snap0
config fstab rootfs ts
# ls /var/lib/libvirt/lxcsnaps/c1/snap0/rootfs
bin dev home lib64 mnt proc run selinux sys usr
boot etc lib media opt root sbin srv tmp var
# btrfs subvolume list /
...
ID 423 gen 651825 top level 258 path var/lib/libvirt/lxcsnaps/c1/snap0/rootfs
...
スナップショットから復元する
lxc-snapshotは,作成したスナップショットから,コンテナを過去の状態に復元することができる.前セクションで作成したスナップショットを復元することを考える.コンテナc1
は,あらかじめ停止しておく.このとき,次のようなコマンドにより,コンテナc1
をスナップショットsnap0
の状態に戻すことができる.
# sudo lxc-snapshot -n chef-0.umireon.info -r snap0
まとめ
lxc-snapshotは,LXCコンテナのスナップショットの作成および復元を行うことができる.