ML110 G6の起動ディスクをUSBメモリに変更

投稿者: | 2011年10月27日

うちではMLシリーズをいくつも買って160GB HDDがたくさん余っているので、代々サーバの起動ディスクはHDD 二台のミラーリング構成だったんだけど、電気代や発熱の点で無駄なのでUSBメモリ(x2)に変えることにした。
ちょうど、ML110 G6にはオンボードのUSBソケットがありBIOSのサポートで起動ドライブとして選択できるのでこれを利用する。USBメモリは何でもいいが、FreeBSDなので赤いやつにした。FreeBSD/amd64なのでたぶん8GBの壁はないが、どうせ/だけ(/tmp, /usr/local, /varなどは外出し)なので大きくても意味がない。緊急時のために/usr/srcのコピーを持っておき、ビルド用のスペースも残し、それらをひっくるめてメジャーアップグレードする際にZFS snapshotを取る余裕を考えても、8GBもあれば十分だ。

届いたUSBメモリを差すと、(ほかにSCSIやumassのデバイスがなければ)da0として認識される。初期状態ではFATでフォーマットされているのでこれをクリアしてセットアップ開始。

  1. まずは確認
  2. 上の出力を見てMBRパーティションテーブルを消去
  3. GPTパーティションを作ってZFS-only FreeBSDの起動ディスクにする
  4. USBメモリなのでnoatimeが重要
  5. 事前に/tmp, /var, /usr/localなどはパーティションを分けておく(/tmpはメモリが潤沢にあるならtmpmfs推奨)
  6. 現在の/zrootだとして、zusbrootにコピーする手順
  7. 新しい/boot/loader.confvfs.root.mountfrom="zfs:zusbroot"を設定
  8. 新しい/etc/fstabzusbroot / zfs rw 0 0を設定
  9. /usrを分けている場合は/usrも作ってコピーした後、zfs unmountしてからマウントポイントを/usrに設定
  10. /は自動マウントの対象外
  11. あとは/root/usr/share/man/**/cat*などを何とかして、平時はread onlyにしたい

何か抜けてるかもしれないし間違ってるかもしれないので自分で意味を考えながらリスクを承知でやってください。

リセットしてF10でBIOSセットアップに入って二箇所(USB Device Boot PriorityをHighにして、起動デバイス順序でUSBメモリを他のHDDより上に移動)直したら、ちゃんとブートするか確認。
うまく起動できたら、もう一つUSBメモリを背面にでも差して、da1について同様に設定する。zpool createのプール名をzusbroot2のように変え、今度は上記操作をzusbrootzusbroot2と読み替えればいい。以後、大きめのアップグレード、特にZFSのバージョンが上がった際にrsync -xaHAXでファイルを同期し、gpart bootcodeでbootcodeの更新を行えばいいだろう。寿命を気にしてのUSBメモリ化なのでミラーリングはしない。なお、最初はattachでミラー後にdetachして置いておけばいいかと思ったら、detachした時点でどこのプールにも属さなくなってしまうため、/をマウントできずブートできないディスクになってしまうのでダメだ。
最後に、時々はsudo find -x / -mtime -1hで最近いじられたファイルやディレクトリがないかを調べ、da0に頻繁に書き込みアクセスが発生したりしていないか見るといいだろう。また、gstat(8)も見た方がいい。俺はそれでatime=offし忘れに気付いたりした。
そんな感じで、うちのサーバは赤いやつで動いています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です