ZFS で snapshot と rollback を試す ― 2009年03月29日 10時32分26秒
$ zfs mount
scratch /scratch
scratch/obj /usr/obj
scratch/src /usr/src
$ ls /usr/src
RELENG_7_2 head
/usr/src に RELENG_7_2 と head が入っていて、scratch/src から割り当てられている。
スナップショットを取る。
$ time zfs snapshot scratch/src@today
0.000u 0.004s 0:03.97 0.0% 0+0k 0+0io 0pf+0w
あっと言う間に終わった。
さて、どんな感じだか見てみよう。
$ zfs mount
scratch /scratch
scratch/obj /usr/obj
scratch/src /usr/src
$ zfs mount -a
$ zfs mount
scratch /scratch
scratch/obj /usr/obj
scratch/src /usr/src
zfs の mount 系のコマンドではスナップショットは出て来ないようだ。cd や ls で .zfs の中を探検してみる。
$ cd /usr/src/
$ ls -lsd .zfs
0 dr-xr-xr-x 3 root wheel 3 Mar 13 13:22 .zfs
$ cd .zfs
$ ls -l
total 2
drwxr-xr-x 4 uyota uyota 4 Mar 18 09:45 today
$ cd today/
$ ls
RELENG_7_2 head
$ pwd
pwd: .: No such file or directory
$ ls
RELENG_7_2 head
$ id
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
スナップショット内での pwd に問題があるようだ。これは、7.0-RELEASE の ZFS version 6 を使っている。nullfs や unionfs を用いた時に、非 root ユーザだと同じような問題に遭遇するが、root でこのエラーは始めてみた。
何も作業を行なっていないが、折角なので roollback も試す。逆に何も行なっていないから、何の被害もでなくて良いのかも知れない。
$ time zfs rollback scratch/src@today
0.000u 0.994s 0:24.94 3.9% 104+1887k 0+0io 0pf+0w
こちらも早かった。
$ ls -la /usr/src/
total 8
drwxr-xr-x 4 uyota uyota 4 Mar 18 09:45 .
drwxr-xr-x 21 root wheel 512 Mar 4 02:12 ..
drwxr-xr-x 3 uyota uyota 3 Mar 18 09:45 RELENG_7_2
drwxr-xr-x 23 uyota uyota 39 Mar 18 09:42 head
$ ls -la /usr/src/.zfs/snapshot/
total 2
dr-xr-xr-x 3 root wheel 3 Mar 13 13:22 .
dr-xr-xr-x 3 root wheel 3 Mar 13 13:22 ..
drwxr-xr-x 4 uyota uyota 4 Mar 18 09:45 today
rollback を行なっても、スナップショット自体は消えない。
$ mount -t zfs
scratch on /scratch (zfs, local, noatime)
scratch/obj on /usr/obj (zfs, local, noatime)
scratch/src on /usr/src (zfs, local, noatime)
scratch/src@today on /usr/src/.zfs/snapshot/today (zfs, local, noatime, read-onl
y)
mount だとスナップショットを含めたマウントポイントを教えてくれるようだ。
最近のコメント