ZFS初体験

ファイルサーバー(FreeBSD 8-STABLE amd64)の1.5TBディスク(HD154UI)が調子悪くて、アクセスするだけでリブートしたりします。
fsckでなんとか回復させたのですが、イマイチ信用がおけません。 SUJが使えればいいのですが、9-CURRENT にはまだ手を出したくないし。

先日、Webサーバーのケースを購入したときに、2TB HDD(WD20EARX)も購入していました。

R0011048.jpg

本来なら 3TBに移行するはずでしたが、予定外の出費だったので安さに負けて 2TBにしました。 これで4台目です。 3TBも通常価格で1万円を切るようになったので、TB単価は変わらないんですけどね。

調子の悪いディスクからデータを移す作業を行ったのですが、壊れたファイルが悪さをしていたようで、ディスクのローレベルは問題なかったみたいです。
まだ信用は出来ませんが、この1.5TBのディスクもテスト用としてなら使えそうです。

そこで ZFSを使ってみることにしました。 ZFSは耐障害性が高く、fsckが不要なのだそうです。
以前 FreeNAS 0.7でトライしたことがありますが、その時は使い方がよくわからず挫折しました。
OracleによるSun買収で将来が危ぶまれた ZFSですが、その後もオープンソースとして開発は続いており、BSD系OSで発展していくと思います。


んで、以下覚え書き。
まず、

# kldload zfs.ko
# kldstat

として、zfs.ko と opensolaris.ko がロードされたのを確認。

パーテションが切ってない空のHDD(例として ada6とします)を使うとして、

# gpart create -s GPT ada6
# gpart add -t freebsd-zfs -i 1 ada6

てな感じで、ZFS ボリュームを含むパーテションを作成します。
物理セクタが4KBのHDDの場合は、開始セクタを指示してやった方がいいと思います。

ZFSではまずプールというものを作り、その下にファイルシステムをぶら下げる形になります。
プール名は任意ですが、「poolzfs」とした場合は

# zpool create poolzfs /dev/ada6p1
# zfs create poolzfs/photo

これで、photoというファイルシステムができました。 確認は「zfs list」です。 df コマンドでも確認できますね。

ここまで出来たら、再起動しても ZFSが使えるように、/boot/loader.conf に「zfs_load="YES"」を、/etc/rc.conf に「zfs_enable="YES"」を追記しておきます。
4GB以上メモリがない場合はリードプリフェッチが無効になるようです。 有効にしたい場合は、/boot/loader.conf に「vfs.zfs.prefetch_disable=0」を追加します。

ちなみに /etc/fstab には何も追記しなくていいようです。 というか、UFSでマウントしていた古い記述は削除しましょう。 でないと再起動時にシングルユーザーモードになってしまいます。


再起動してログを確認したら、ZFSのバージョンが v28になっていました。 そういやそんな記事があったような。

FreeBSD Daily Topics:2011年6月16日 FreeBSD 8系にZFSv28登場,FreeBSD 8.3-RELEASEに正式搭載|gihyo.jp … 技術評論社

FreeBSD 9-CURRENTへマージされています。当初は1ヵ月後を目処に8-STABLEへマージされる予定でした。若干遅れましたが,8-STABLEへのマージが実施されました。

ブートパーティションまでZFSにすると、ちょっと面倒なのかもしれません。