ねこみみどーらくblog

nekomimistのよしなしごと

サーバ統合して省エネを目指すぜ! (作業編)

まずはLULLIを止めて、古いCPUとM/Bとグラフィックカードを外し、新しいCPUとM/Bを入れた。入れるのはCore i7 2600Kの内蔵GPUを使う分だけ楽なのだが、SATAケーブルの配線に予想通り難儀した。見た目のわりに中身が狭すぎるよP182……。

なんとか組み入れられたので、ソフト的な準備を行う。統合サーバは当然のようにFreeBSDで運用する。ぶっちゃけKONAの環境そのままでいいのだが、せっかくSSDが余ってるので、rootとZFSのZILとL2ARCをそこに置きたいのでそういう作業を行う。

  1. まずはKONAを止めて、SSDをつなぐ。あ、SSDは事前にSecure Eraseしたよ。
  2. gpart create -s GPT ad6
  3. gpart add -b 40 -s 128 -t freebsd-boot ad6
  4. gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ad6
  5. 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を/にマウントするよう変更しておしまい。

以降は新マシンで作業。

  1. SSDともともとKONAについてたIntel CTとRocket RAID 2314と外付けHDD4台を新マシンに移行。
  2. 新マシンをSSDから起動 (外付けHDDはda0-3で変わってないので普通に起動する)。
  3. 1TB×5で新規にraidz1なpoolを作る。 zpool create tank-new raidz1 ada1 ada2 ada3 ada4 ada5だったかな。
  4. KONAのZFS構成と同じになるようにひとつひとつ新poolでzfs createする。
  5. 旧poolの各FSでsnapshotを取る。 zfs snapwhot -r tank/pub@nowのような感じ。(@nowとか名前適当すぎだよね :-p)
  6. 旧poolの各FSからそのsnapshotをsendして、新poolでrecvする。 zfs send -vR tank/pub@now | zfs recv -vdF tank-newのような風味。
  7. 全部コピーが終わったら旧poolをexportして外す。
  8. 新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のパーティションを作って割り合てておしまい。

  1. gpart add -s 16G -t freebsd-zfs -l zfs-log ada0
  2. zpool add tank log /dev/gpt/zfs-log
  3. gpart add -s 96G -t freebsd-zfs -l zfs-cache ada0
  4. zpool add tank cache /dev/gpt/zfs-log

のような感じだったはず。ZILはメモリ16GBだと1/2の8GBで十分なのかな?まあ、適当。

しばらく動かして問題を感じなかったので、古いpoolを構成していたHDD4台で、新しいraidz1を作ってtankに統合して作業終了。