Solaris 資料一覧
ZFSスナップショット作成/ロールバック/破棄
2008/12/5更新
対応バージョン: 10
ZFSのスナップショットを作成/ロールバック/破棄する手順を示す。
スナップショット作成
ここではrz2/fooストレージプールが/Users/fooにマウントされているものとし、1つファイルを作る度にスナップショットを取り、同じ操作を2回やってみる。
まず任意のファイルを作成する。
# dd if=/dev/random of=/Users/foo/file bs=1024 count=10 # digest -v -a md5 /Users/foo/file md5 (/Users/foo/file) = e3a8f135f20af45e062a3e8ff5e6267e
次にこのストレージプールのスナップショットを取る。
# zfs snapshot rz2/foo@one
先ほどと同様の手順で任意のファイルを作成する。
# dd if=/dev/random of=/Users/foo/file bs=1024 count=10 # digest -v -a md5 /Users/foo/file md5 (/Users/foo/file) = e17036a607b01e416d8fc35b19946f79
最初のファイルとはMD5値が違っている。
さらに2つ目のスナップショットを取る。
# zfs snapshot rz2/foo@two
三たび、任意のファイルを作成する。
# dd if=/dev/random of=/Users/foo/file bs=1024 count=10 # digest -v -a md5 /Users/foo/file md5 (/Users/foo/file) = 1802165c4a2585ec77ead86f50b6238f
今回もMD5値が違っている。
ここまででスナップショット2つ、各スナップショットに任意のファイルが存在する状態になっている。
スナップショットには各ファイルシステムの先頭から.zfs/snapshotでアクセスできるので2つのスナップショットの状態を見てみる。
# ls -l /Users/foo/.zfs/snapshot/{one,two}/file ... 10240 12月 5日 03:20 /Users/foo/.zfs/snapshot/one/file ... 10240 12月 5日 03:21 /Users/foo/.zfs/snapshot/two/file # digest -v -a md5 /Users/foo/.zfs/snapshot/{one,two}/file md5 (/Users/foo/.zfs/snapshot/one/file) = e3a8f135f20af45e062a3e8ff5e6267e md5 (/Users/foo/.zfs/snapshot/two/file) = e17036a607b01e416d8fc35b19946f79
このように各スナップショットにはそれぞれ独立したファイルが保存されているので必要なファイルを簡単に復元することができる。
# cp /Users/foo/.zfs/snapshot/one/file /Users/foo/file.old # digest -v -a md5 /Users/foo/file* md5 (/Users/foo/file) = 1802165c4a2585ec77ead86f50b6238f md5 (/Users/foo/file.old) = e3a8f135f20af45e062a3e8ff5e6267e
スナップショットロールバック
直近のスナップショットをロールバックするには以下のようにする。
# zfs rollback rz2/foo@two # digest -v -a md5 /Users/foo/file md5 (/Users/foo/file) = e17036a607b01e416d8fc35b19946f79
より古いスナップショットをロールバックするには-rオプションを付ける。
# zfs rollback -r rz2/foo@one # digest -v -a md5 /Users/foo/file md5 (/Users/foo/file) = e3a8f135f20af45e062a3e8ff5e6267e
スナップショット破棄
スナップショットの状態は以下のようにして参照できる。
# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT rz2/foo@one 0 - 35.4K - rz2/foo@two 0 - 35.4K -
スナップショットの破棄はdestroyサブコマンドを使用する。
# zfs destroy rz2/foo@one # zfs destroy rz2/foo@two # zfs list -t snapshot no datasets available
関連資料・記事