ML110 G6の起動ディスクをSSDに変更

投稿者: | 2012年5月11日

先に起動ディスクをHDDからUSBメモリに変更してからしばらく運用を続けていたところ、深刻な性能問題に直面してHDDに戻したのは先月のことだった。
定常的に書込が発生するディレクトリは当然ながら外出ししており、たまのmake installworldくらいしかろくな書込が発生することはなかったにも関わらず、気が付くと、そのmake installworldに8時間も掛かるようになってしまっていた。
単に、USBメモリ自体がずっと通電しての読み書き(書くのはまれだが)に耐えうる設計になっていないからなのか、特定部分へのアクセスが重なった結果へたってしまったのかはよくわからないが、ともかく常時稼働は荷が重かったということは言えるだろう。

HDDに戻したところたちまち安定して快適にはなったが、ただの撤退ではおもしろくないので、安くなってきたSSDを導入することにした。ちょうど、Crucial m4 64GBが7,000円を切っているので、これを採用した。

さて、FreeBSDに限らないが、SSDを使う上で当然気になるのがTRIM命令のサポート有無である。FreeBSD 9.0や8.3ではadaドライバ、GEOM、UFS2がこれをサポートしており、シンプルな非冗長構成ではすんなりこれを享受できる。だが、ZFSは未サポート、さらにGEOMもmirrorやjournalを通すとUFS2がTRIM命令のサポート有無を検知できず無効になってしまうようだ。
何とも残念な現状だが、システム(前述のように/usr/local/var等は含まない)は書込がほとんど発生せず、また同居予定のZFS ZIL, L2ARCパーティションは多くの書込があるものの、冗長化した上でたまに片肺にしてTRIMすれば十分だと考えた。そして/のファイルシステムは、ZFSとUFS+GEOM mirrorを比較検討し、読み込み主体であることと、先にTRIMがサポートされそうなことから後者にした。信頼性を重視し、ジャーナリングはGEOM journalではなくSUJを選択。

前置きが長くなったが、購入したSSD二台にシステムを載せ替える手順のメモを開陳。

こんな感じです。けっこう簡単だよね。
ポイントは、移行後の新システムを作る際、単一パーティションでGEOM mirrorを構成し、そこに/を作って構築すること。GEOM mirrorは、マウントした状態のファイルシステムパーティションをミラー構成にすることはできないようだ。上記のように片肺(というか単肺)のGEOM mirrorボリュームを作ってそこからブートすれば、あとは二肺目をそこにアタッチ(GEOM用語ではinsert)するだけで良い。

おまけ情報1

こうして構築は完了したが、不意のシステムダウンが起きると、リブート後にZFSボリュームが見えない(zpool importしないといけない)問題が発生しており少し困っている。最近VirtualBoxが不安定(4.1.10くらいから?)で、たまにカーネルパニックを起こすので少し深刻だ。
そのときは/var/named/etc/namedbが見えないため/etc/rc.d/named/etc/namedbを壊してしまうので、シングルユーザモードで

と直してからスタートアップする必要がある。

おまけ情報2

GEOM mirrorは何やら曲者で、まちがえて作ってしまったときなどに、削除しようとgmirror stop nameとしてもGPTラベル名やGPTIDやらのデバイス名で設定が生き残ってしまう。ちゃんと削除するには、

と一時的に別名デバイスが生えない状態にしてから

とすれば良いようだ。

おまけ情報3

以前発見した問題が解決。少なくともFreeBSD 9.0では、eSATA port multiplierにディスクを差したときに既存ディスクのデタッチが発生しないようになっていた。ヤッタネ\(^o^)/

コメントを残す

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