ZFSでリハウス 完?
や、やっとできた。。。
これまでのあらすじ
1TBx2のZFS mirrorを2TBx2に交換すべく、HDDを片方ずつzpool replaceしてやればいいかと思えばさにあらず。
- HDDの2台目(ad6)の方は、置き換えから同期まで、まあ順調にできた
- HDDの1台目(ad4)を新品HDDに置き換えたら、起動しなかった
- 8.1-BETA1のmemstickで起動して、Fixitで同期させた
朝起きたら、同期が終わってた。
続き
Fixitを抜けて、memstickを抜いて再起動したところ、loaderまではいくが、boot: の後でくるくる回った後で固まる。
直感的に、zpool.cacheを作り直さんといかんのかなぁと思い(結果的には関係なかった)、もいちどFixitで起動して
Fixit# kldconfig /dist/boot/kernel Fixit# mkdir /boot/zfs Fixit# zpool import -R /mnt -f pool1 Fixit# zpool set cachefile='' pool1 Fixit# mkdir /mnt3 Fixit# mount -t zfs pool1 /mnt3 Fixit# cp /boot/zfs/zpool.cache /mnt3/boot/zfs/
詳細は省く、というか、半日くらい試行錯誤した結果が上のだけど、詳細は忘れた。
で、リブート→気分的にくるくる回る時間が延びたような気がしたけど、結局固まる。
も一度リブートして、boot: のプロンプトでいろいろやってたら、やっぱり固まる。うー、そもそもZFS以前の問題か?ひょっとして4kセクタのアクセスがうまくいってなくて、固まってるんじゃなくて時間がかかってるだけ?とか考えて、しばらくほっといたけどやっぱりダメ。キーボードのNUMLOCKが反応しないし、フリーズ確定。
最後は、これでダメなら1TBに戻すかなぁと思いながら、memstickからでなく、同期済みの/bootにあるpmbrとgptzfsbootをad4に書き込んでリブートしたら。。。起動した!
何だったのか?
ad4を新しいのに取り替えて起動したら、ad6から起動しなかったので、手元にあったfreeNASのUSBイメージで起動して、ad4のGPTを切った。
そのときにbootcodeも書き込んだはずなので、FreeBSD-7ベースのpmbrとgptzfsbootで、そいつが古かったということ。。。かなぁ。。。
最終的に
無事に2TBになりました。OFFLINEとかUNAVAILとかは、ad4のreplaceが完了直後は見えていたけど、そこでリブートした後は消えていた。
$ zpool status pool: pool1 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool1 ONLINE 0 0 0 mirror ONLINE 0 0 0 ad6p2 ONLINE 0 0 0 ad4p2 ONLINE 0 0 0 errors: No known data errors $ zfs list NAME USED AVAIL REFER MOUNTPOINT pool1 877G 957G 55.6M legacy pool1/home 739G 957G 739G /home pool1/share 25.1G 957G 25.1G /share pool1/space 93.2G 957G 93.2G /space pool1/swap 2G 959G 134M - pool1/usr 17.2G 957G 14.6G /usr pool1/var 46.1M 957G 46.1M /var