btrfsはまだtechnical preview だけど、lvmのsnapshotを使うとI/Oが遅いので代替案としてやってみた。
OS: CentOS 6.3 64bit
# yum install -y btrfs-progs # mkfs.btrfs /dev/mapper/vg_hoge-lv_home WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using fs created label (null) on /dev/mapper/vg_svxxx-lv_data nodesize 4096 leafsize 4096 sectorsize 4096 size 300.00GB Btrfs Btrfs v0.19
# mkfs.btrfs /dev/mapper/vg_hoge-lv_home # mount /dev/mapper/vg_hoge-lv_home /home # btrfs subvolume create /home/active # touch /home/active/{1..5} # ls /home/active 1 2 3 4 5 # btrfs subvolume create /home/.snapshot # btrfs subvolume list /home ID 258 top level 5 path active ID 259 top level 5 path .snapshot # btrfs subvolume snapshot /home/active /home/.snapshot/20120712 # ls /home/.snapshot/20120712/ 1 2 3 4 5 # btrfs subvolume list /home ID 258 top level 5 path active ID 259 top level 5 path snapshot ID 263 top level 5 path snapshot/20120712
追記
作ったsnapshot以下のファイルに変更を加えたあと、そのsnapshotを削除するとOSがハングアップする??しかも削除したはずのsnapshotのvolumeが再起動後にはなぜか復活している。*1 *2
# btrfs subvolume list /data ID 257 top level 5 path active ID 258 top level 5 path .snapshot ID 259 top level 5 path .snapshot/snap1 ID 260 top level 5 path .snapshot/snap2 ID 261 top level 5 path .snapshot/snap3 # rm -f /data/.snapshot/snap3/* # btrfs subvolume delete /data/.snapshot/snap3 Delete subvolume '/data/.snapshot/snap3' # btrfs subvolume list /data ID 257 top level 5 path active ID 258 top level 5 path .snapshot ID 259 top level 5 path .snapshot/snap1 ID 260 top level 5 path .snapshot/snap2 #### ここでハングアップ #### 再起動後にもう一度list実行 # btrfs subvolume list /data ID 257 top level 5 path active ID 259 top level 5 path .snapshot/snap1 ID 260 top level 5 path .snapshot/snap2 ID 261 top level 5 path .snapshot/snap3 #### snap3 が復活している