まずはLULLIを止めて、古いCPUとM/Bとグラフィックカードを外し、新しいCPUとM/Bを入れた。入れるのはCore i7 2600Kの内蔵GPUを使う分だけ楽なのだが、SATAケーブルの配線に予想通り難儀した。見た目のわりに中身が狭すぎるよP182……。
なんとか組み入れられたので、ソフト的な準備を行う。統合サーバは当然のようにFreeBSDで運用する。ぶっちゃけKONAの環境そのままでいいのだが、せっかくSSDが余ってるので、rootとZFSのZILとL2ARCをそこに置きたいのでそういう作業を行う。
- まずはKONAを止めて、SSDをつなぐ。あ、SSDは事前にSecure Eraseしたよ。
gpart create -s GPT ad6
gpart add -b 40 -s 128 -t freebsd-boot ad6
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ad6
gpart add -s 1G -t freebsd-ufs -l root ad6
6.KONAの/をdumpして、SSD側でrestore。
という感じだったはず。ブートのHDDがad4なので、SSDはad6。なぜ4KセクタHDDでもないのに4K境界に合わせて-b 40なのか?とか、なぜZFS rootにしない?とか、そもそもrootに1GBもいるか?という話もあるがまあ気にするな :-) 5.でrootと名前をつけたので、以降は/dev/gpt/root
で扱えるのが楽。そのためにgptにしたのさ。
ちなみにroot以外は全部zfsのpoolに入っているので、HDDと共に新マシンに移動してもらう。
で、/dev/gpt/rootをどっかにマウントして、/boot/loader.confと/etc/fstabをふにふにする。KONAのAHCI無効で使ってのだけど、新マシンはAHCIで使おう!ってことでloader.confにahci_load="YES"
を追加。fstabの方は/dev/gpt/rootを/にマウントするよう変更しておしまい。
以降は新マシンで作業。
- SSDともともとKONAについてたIntel CTとRocket RAID 2314と外付けHDD4台を新マシンに移行。
- 新マシンをSSDから起動 (外付けHDDはda0-3で変わってないので普通に起動する)。
- 1TB×5で新規にraidz1なpoolを作る。
zpool create tank-new raidz1 ada1 ada2 ada3 ada4 ada5
だったかな。 - KONAのZFS構成と同じになるようにひとつひとつ新poolでzfs createする。
- 旧poolの各FSでsnapshotを取る。
zfs snapwhot -r tank/pub@now
のような感じ。(@nowとか名前適当すぎだよね :-p) - 旧poolの各FSからそのsnapshotをsendして、新poolでrecvする。
zfs send -vR tank/pub@now | zfs recv -vdF tank-new
のような風味。 - 全部コピーが終わったら旧poolをexportして外す。
- 新poolもexportして、旧ZFSと同じ名前でimport (
zpool import tank-new tank
みたいな)
ちなみに、旧poolは過去の事情があって(2TB+2TB)×2のmirrorなのだ。4台あるならraidz1にしたいよね?ということで作りなおすに1TB×5のraidz1に新規に移行してみたのだった。
実は初めてsend/recvを使ったのだけれど、6.のようにrecvするだけでtank-new/pub@nowまで作られるのはぜんぜん知らなかった。あと/dev/zvol/dsk/*のようなvolumeもFSと同じように移行できて柔軟性にビビったり :-)
最後にSSDにzilとL2ARCのパーティションを作って割り合てておしまい。
gpart add -s 16G -t freebsd-zfs -l zfs-log ada0
zpool add tank log /dev/gpt/zfs-log
gpart add -s 96G -t freebsd-zfs -l zfs-cache ada0
zpool add tank cache /dev/gpt/zfs-log
のような感じだったはず。ZILはメモリ16GBだと1/2の8GBで十分なのかな?まあ、適当。
しばらく動かして問題を感じなかったので、古いpoolを構成していたHDD4台で、新しいraidz1を作ってtankに統合して作業終了。