FreeBSDでzfsを試してみた その3
今回はスナップショットを使ってみる。
とりあえず普通にストレージプールとディレクトリの作成。
# zpool create -m /zdevel zpool0 da0s1 da1s1 # zfs create zpool0/hamaco
スナップショット作成
zfs snapshotコマンドでスナップショットを作成できる。適当にファイルを作ってスナップショットを作成してみる。
# mkfile 64M /zdevel/hamaco/hogehoge # zfs snapshot zpool0/hamaco@first
ストレージプール名@スナップショット名という形で指定する。出来上がったスナップショットの中身を見る場合は、以下の様にスナップショットを作成したディレクトリの下にあるzfsディレクトリを見れば良い。
# ls /zdevel/hamaco/.zfs/snapshot/first
hogehoge
スナップショットを作成しても、ストレージプールの使用量に変化はない。もちろんスナップショットなのでファイルの追加とかの操作は一切出来ない。
# zfs list NAME USED AVAIL REFER MOUNTPOINT zpool0 64.2M 912M 19K /zdevel zpool0/hamaco 64.0M 912M 64.0M /zdevel/hamaco zpool0/hamaco@first 0 - 64.0M -
元のディレクトリに何かファイルを追加してもスナップショットの中身には全く変化なし。ただ、何か情報が増えたのか微妙にUSEDは増えている。それにしてもzfs listで見ると、容量表示がおかしい。
shana# mkfile 32M /zdevel/hamaco/fugafuga shana# zfs list NAME USED AVAIL REFER MOUNTPOINT zpool0 88.6M 887M 19K /zdevel zpool0/hamaco 88.4M 887M 88.4M /zdevel/hamaco zpool0/hamaco@first 17K - 64.0M - # df -h /zdevel /zdevel/hamaco /zdevel/hamaco/.zfs/snapshot/first Filesystem Size Used Avail Capacity Mounted on zpool0 880M 0B 880M 0% /zdevel zpool0/hamaco 976M 96M 880M 10% /zdevel/hamaco zpool0/hamaco@first 944M 64M 880M 7% /zdevel/hamaco/.zfs/snapshot/first
# ls /zdevel/hamaco fugafuga hogehoge # ls /zdevel/hamaco/.zfs/snapshot/first hogehoge
とりあえず、この時点でもスナップショットを作成しておく。
# zfs snapshot zpool0/hamaco@second # zfs list NAME USED AVAIL REFER MOUNTPOINT zpool0 96.2M 880M 19K /zdevel zpool0/hamaco 96.1M 880M 96.0M /zdevel/hamaco zpool0/hamaco@first 17K - 64.0M - zpool0/hamaco@second 0 - 96.0M -
スナップショットからの復元
zfs rollbackコマンドでスナップショットから復元が出来る。この時に指定したスナップショットよりも新しいスナップショットがある場合警告が出る。
# zfs rollback zpool0/hamaco@first cannot rollback to 'zpool0/hamaco@first': more recent snapshots exist use '-r' to force deletion of the following snapshots: zpool0/hamaco@second
- rオプションを付ければ復元することが出来るが、新しいスナップショットは全て消えてしまう。
# zfs rollback -r zpool0/hamaco@first shana# zfs list NAME USED AVAIL REFER MOUNTPOINT zpool0 64.2M 912M 20K /zdevel zpool0/hamaco 64.0M 912M 64.0M /zdevel/hamaco zpool0/hamaco@first 0 - 64.0M - # ls /zdevel/hamaco hogehoge
スナップショットの破棄
zfs destroyコマンドで破棄出来る。
# zfs destroy zpool0/hamaco@first
また、そのディレクトリのスナップショットを全て破棄したい場合は以下の様に-rオプションを付ければ良い。
# zfs destroy -r zpool0/hamaco
まとめ
zfsでは凄く簡単にスナップショットが作成出来る。なにか影響のありそうな事をやる前にとっておけば、なにかあった時にすぐに戻せて便利。
次はスナップショットのバックアップとかをやってみる。