「これからはRELEASEだけで生きていこう!!」と誓ったのもつかの間、7-STABLEで ZFS version 13 になったのに釣られて STABLE にしちゃいました(笑)。でもって zpool upgrade -a。プールをimportした状態でアップグレードできるので、なんともあっけなく作業は終了しました。
toriyu# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 83.8G 374G 25K /tank tank/iscsi 33.3G 374G 20.7G /tank/iscsi tank/root 353M 374G 270M legacy tank/swap 624K 375G 624K - tank/usr 10.3G 374G 5.15G /usr tank/usr.home 3.73G 374G 3.19G /usr/home tank/usr.ports 1.56G 374G 263M /usr/ports tank/usr.src 474M 374G 296M /usr/src tank/var 9.92G 374G 9.70G /var tank/var.smb 23.1G 374G 20.3G /var/smb
さて、これはupgradeには関係ないのですが、7.2-RELESEから7-STABLEにしたことで、zfs list からスナップショットが消えました。一瞬焦ったのですが、実は消えたのじゃなくて表示されなくなっただけ。zfs list -t all などで従来どおり表示されます。何も指定しなかった場合には '-t filesystem,volume' 相当の動作になるようです。普通に考えてスナップショットを常時表示する必要はないですからこちらのほうがありがたい動作ですね。
そして次はアップグレードの恩恵をば・・・ということで下記のコマンドを入力してみました。
# zfs send -RI 過去のスナップショット tank@スナップショット | ssh toriyu10 "zfs receive -Fd tank"
バックアップマシン(toriyu10)にZFSプールツリーの差分を全部送りつけて、送った先でまんまと再構築する・・・ことを期待していたのですが、そううまくはいきませんでした(笑)。どうなったかというと、過去にバックアップしたファイルシステムが消えてしまって、'recv-891-2' 等という名前で置き換えられたファイルシステムがいくつか発生しました。転送元にあったスナップショットが再現されていたので、これは転送された中身なのでしょう。再帰的にzfs sendするとスナップショットがあったりなかったりした場合にどうなるのかな? というのが疑問だったのですが、これまた厄介な動作をしてくれるのですな・・・。まっさらなプールに転送するなら良いのですが、差分バックアップに使うなら従来どおりチマチマとシェルスクリプトを用いて転送するのが安全っぽいです。
なお、これもupgradeは関係ないかもしれませんが、バックアップ先の512MBしかメモリが無いマシンではzfs receiveで受けてる最中に必ずコケるようになってしまいました。これまで /boot/loader.conf に
vfs.kmem_size="256M"
とだけ書いたシステムで長いこと毎日バックアップできていたのですが・・・。でも aoyama さんに習って
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"
vm.kmem_size_max="384M"
vm.kmem_size="384M"
としてみると、ちゃんと動くようになりました。ぱちぱちぱち。てゆーかよく今まで動いてたものだ(^_^)。
今後は make world 時にはもとより、緊急時にUSB-HDDなどからブートする場合でも7.2-RELEASEのCDでインストールしただけのシステムではプールがimportできないでしょうから、ちゃんと覚えておかなくてはなりません。最近はDVDから起動してFixitというが楽ちんメンテナンス方法が取れるようになったのですが、その方法は7.3-RELEASEが出るまでお預けです。