HDDが届いたので、早速zfsの設定を行っています。
(1) 旧HDD構成はada0〜ada4で、ada4が起動ディスクで/, /var,
/usrもada4上にある。そこで/etc/fstabをeditして、ada4以外
はmountしないようにコメントアウトする。
(2) 5個の旧HDDを外して、新しいHDDと入れ替える。
(3) 旧ada4をESATAで6個目のHDDとして接続する。(当初、SATAで
繋ぐつもりだったのですが、SATAケーブルをどこにしまったの
か忘れてしまい探すのが面倒だったのでESATAで接続した。)
ESATAが5個目の内蔵HDDよりも前に来るので、新HDDはada0〜
ada3、ada5になり、旧HDDはada4になる。
(4) 6個目のHDD(ada4)から起動した後、別マシンからsshでログイン
して作業する。5個の新設HDD(ada0〜ada3, ada5)にswapと
raidzを作成。更にada0にはbootcodeを書き込む。
# for a in 0 1 2 3; do
> gpart create -s GPT ada$a
> gpart add -t freebsd-swap -s 2g -l freebsd-swap$a \
ada$a
> gpart add -t freebsd-zfs -l freebsd-zfs$a ada$a
> done
# gpart create -s GPT ada5
# gpart add -t freebsd-swap -s 2g -l freebsd-swap4 \
ada5
# gpart add -t freebsd-zfs -l freebsd-zfs4 ada5
# gpart delete -i 1 ada0
# gpart add -i 127 -t freebsd-boot -s 512k \
-l freebsd-boot ada0
# gpart add -t freebsd-swap -l freebsd-swap0 ada0
# gpart bootcode -b /boot/pmbr ada0
# gpart bootcode -p /boot/gptzfsboot -i 127 ada0
# zpool create -o altroot=/mnt -m none hoge \
raidz ada0p2 ada1p2 ada2p2 ada3p2 ada5p2
# zfs set compression=lz4 hoge
# zfs set atime=off hoge
# zfs create -o mountpoint=none hoge/ROOT
# zfs create -o mountpoint=/ hoge/ROOT/default
(snip)
# zpool set bootfs=hoge/ROOT/default hoge
# reboot
(5) ここでrebootしてsingle user modeで旧HDDから新HDDへ
dump/restoreする。しかし、何故かESATA接続が安定せず、エ
ラーを吐くのでada5を外し、ada4をESATAではなく内蔵SATAで
接続して作業を行う。(raidzはada5が故障したのと同じ状況に
なる。)
(6) 旧ada4から起動した後、
# zpool import -f -R /mnt hoge
# cd /mnt
# dump 0af - / | restore rf -
# cd /mnt/usr
# dump 0af - /usr | restore rf -
(その他のパーティションも同様にdump & restoreする)
(7) 旧ada4のdump & restoreが全て終了したら一旦shutdownして、
旧HDDを交換して、全ての旧HDDをdump & restoreする。なお、
旧ada4のdump & restoreが終了した時点で新HDDでzfs boot
できる状態なので、旧HDD交換後は新HDDからzfs bootしてssh経
由で他のマシンから作業を行っている。
(8) 現在、旧HDDからのdump & restore途中なので、本日はここま
で。約4TB/日しかdump & restoreできないので、完了までには
4日近くかかる見込みです。(ということは50MB/sec程度しか
出ていないことになるなぁ。300MB/sec出る訳はないけど、も
うちょっと速いといいのになぁ。)
