When it’s ready.

出来るまで出来ない

リストアが出来れば、バックアップは要らないのだ

よくバックアップが速いとか、賢いとかそういうの見るけど、そういう事言ってる人に聞いてみたい「バックアップがしたいのですか?」と・・・何のためにバックアップしてるのか?と誰かに聞くと「安心の為」とかいうけど、バックアップだけで安心なの?どうやって戻すのですか?と聞くと明確な返答がある事は、少なかったりする。そもそも、好きな粒度で好きなタイミングで好きなバージョンがリストア出来ればバックアップなんて要らないと思う。出来ればだけど・・・

ストレージの、信頼度が完璧になってどんなことがあっても絶対にファイルが壊れたり消えたりする事が無くても、人的ミスでファイルは居なくなる。ゴミ箱から戻せるときがあるかもしれないけど、上書きしてしまったらどうしようもない。そんなときのために、バックアップforリストアが必要だと思う。

人的ミスなので影響範囲が小さいと考えて、ストレージ丸ごとのフルリストアはそれほど重要じゃない。ファイル単位のリストアが出来る必要がある。ミーハーだが、zfsのsnapshot機能が非常に気になるので試してみた。ソラリスなんて手元にないので、zfs on osxで試してみた。以下手順

zpool作ってzfsを切出す

ディスク代りのファイルを用意する。64m以下だとだめらしいので70mのファイルを3つ用意した。

atusiAIR% mkfile 70m disk1
atusiAIR% mkfile 70m disk2
atusiAIR% mkfile 70m disk3 
atusiAIR% ls -l
total 430080
-rw-------  1 atusi  staff  73400320  9 18 03:04 disk1
-rw-------  1 atusi  staff  73400320  9 18 03:03 disk2
-rw-------  1 atusi  staff  73400320  9 18 03:04 disk3
atusiAIR% zpool list
no pools available
atusiAIR% zfs list
no datasets available

zpoolもzfsもまだ無い。適当に準備する。

atusiAIR% zpool create vol1 /Users/atusi/local/src/zfs/disk1
atusiAIR% zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
vol1                   65.5M   92.5K   65.4M     0%  ONLINE     -
atusiAIR% zfs list
NAME   USED  AVAIL  REFER  MOUNTPOINT
vol1   150K  33.4M  62.5K  /Volumes/vol1

65MのVol1というzpoolと/Volmes/vol1というマウントポイントが出来た。
Vol1の中にzfsをさらに追加(切出し)して、ついでにクオータの設定してみる。

atusiAIR% zfs create vol1/one
atusiAIR% zfs create vol1/two
atusiAIR% zfs list
NAME       USED  AVAIL  REFER  MOUNTPOINT
vol1       202K  33.3M  63.5K  /Volumes/vol1
vol1/one    22K  33.3M    22K  /Volumes/vol1/one
vol1/two    18K  33.3M    18K  /Volumes/vol1/two

atusiAIR% zfs set quota=10m vol1/one
atusiAIR% zfs set quota=20m vol1/two 
atusiAIR% zfs list
NAME       USED  AVAIL  REFER  MOUNTPOINT
vol1       208K  33.3M  65.5K  /Volumes/vol1
vol1/one    22K  9.98M    22K  /Volumes/vol1/one
vol1/two    22K  20.0M    22K  /Volumes/vol1/two

すばらしい。クオータを外してみる。

atusiAIR% zfs set quota=none vol1/one
atusiAIR% zfs list
NAME       USED  AVAIL  REFER  MOUNTPOINT
vol1       208K  33.3M  65.5K  /Volumes/vol1
vol1/one    22K  33.3M    22K  /Volumes/vol1/one
vol1/two    22K  20.0M    22K  /Volumes/vol1/two

zpoolにさらにディスクを追加してみよう

zpoolにディスクを追加してみる。全体の容量が上がるはず。クオータの設定は引継がれるかな?

atusiAIR% zpool add vol1 /Users/atusi/local/src/zfs/disk2
atusiAIR% zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
vol1                    131M    225K    131M     0%  ONLINE     -
atusiAIR% zfs list
NAME       USED  AVAIL  REFER  MOUNTPOINT
vol1       213K  98.8M  65.5K  /Volumes/vol1
vol1/one    22K  98.8M    22K  /Volumes/vol1/one
vol1/two    22K  20.0M    22K  /Volumes/vol1/two

全体で増えてるし、クオータの設定もずれてない。sasのインターフェースがたくさん欲しくなるなコリャ

zfsで作業してみて、スナップショットを取ろう

適当にone two の中身にファイルを作ってみる。

atusiAIR% ls                                  [/Volumes/vol1]
one/ two/
atusiAIR% touch one/1                         [/Volumes/vol1]
atusiAIR% touch one/3                         [/Volumes/vol1]
atusiAIR% touch one/5                         [/Volumes/vol1]
atusiAIR% touch one/6                         [/Volumes/vol1]
atusiAIR% touch two/a                         [/Volumes/vol1]
atusiAIR% touch two/b                         [/Volumes/vol1]
atusiAIR% touch two/c                         [/Volumes/vol1]

ココまでで下準備完了。では、スナップショットをとってみる。

atusiAIR% zfs snapshot vol1/one@one-backup1
atusiAIR% ls -la
total 13
drwxr-xr-x  3 atusi  staff  7  9 18 03:24 ./
drwxr-xr-x@ 6 atusi  staff  7  9 18 03:13 ../
drwxrwxrwt  3 atusi  staff  3  9 18 03:13 .Trashes/
-rw-r--r--  1 atusi  staff  0  9 18 03:23 1
-rw-r--r--  1 atusi  staff  0  9 18 03:23 3
-rw-r--r--  1 atusi  staff  0  9 18 03:24 5
-rw-r--r--  1 atusi  staff  0  9 18 03:24 6

.zsh というreadonlyのフォルダーが出来る筈なんだけど出来ない。ドコに行ってしまったんだろう?zfs全体はどうなったのかというと?

atusiAIR% zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
vol1                   252K  98.8M  65.5K  /Volumes/vol1
vol1/one              40.5K  98.8M  22.5K  /Volumes/vol1/one
vol1/one@one-backup1    18K      -    22K  -
vol1/two                22K  20.0M    22K  /Volumes/vol1/two

悲しすぎる・・・スナップショット分がlistには見えてるけど、こいつがどこにあるのかが分らない。本来の目的のふぃある単位のリストア失敗・・・

スナップショットからロールバックしてみよう

全く使う事はないかと思うけど、zfsまるごとロールバックしてみる

atusiAIR% pwd
/Volumes/vol1/one
atusiAIR% ls
1  3  5  6
atusiAIR% rm ?
remove 1? y
remove 3? y
remove 5? y
remove 6? y
atusiAIR% ls -latotal 9
drwxr-xr-x  3 atusi  staff  3  9 18 03:41 ./
drwxr-xr-x@ 6 atusi  staff  7  9 18 03:40 ../
drwxrwxrwt  3 atusi  staff  3  9 18 03:13 .Trashes/
atusiAIR% cd ..atusiAIR% zfs rollback -r vol1/one@one-backup1
atusiAIR% cd one
atusiAIR% ls 
1  3  5  6

はえっ!ファイルサイズがないかもだけど、こんな簡単に戻せたらうれしすぎるかもと一瞬思った。.zfsのフォルダーがどこにあるのか本気で気になる。行先ご存じの方はいませんか?

後片付けは大切だよ

まず、デスクトップにマウントされているドライブをEjectする。

なんか怒られた・・・
無視してデストロイしてしまう。

atusiAIR% zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
vol1                   246K  98.8M  60.5K  /Volumes/vol1
vol1/one                40K  98.8M    22K  /Volumes/vol1/one
vol1/one@one-backup1    18K      -    22K  -
vol1/two                22K  20.0M    22K  /Volumes/vol1/two
atusiAIR% zpool destroy vol1
atusiAIR% cd /Volumes
atusiAIR% ls
Macintosh HD@
atusiAIR% zpool list
no pools available
atusiAIR% zfs list
no datasets available

atusiAIR% cd ~/local/src/zfs
atusiAIR% ls
disk1  disk2  disk3
atusiAIR% rm disk*
remove disk1? y
remove disk2? y
remove disk3? y
atusiAIR% ls -la
total 0
drwxr-xr-x   2 atusi  staff   68  9 18 04:03 ./
drwxr-xr-x  11 atusi  staff  374  9 18 01:45 ../

はぁ、すっきりすっきり