カーネル/VM Advent Calendar 4日目

この記事はカーネル/VM Advent Calendar2011のために書かれたものです.
今回の記事はZFSNASについて書いてあります.

ZFSを復旧!!

ZFS Root*1なマシンが此処にありますが,1台ディスクが壊れています.
このマシンの構成は,hdd 1TB * 6,ZFS v.15, raidzとなっています.
このディスクはどうやらプラマリディスクのようです.

ので起動しませんorz
まず,故障ディスクを入れ換えます.

入れ換えたあとはのディスクは,replaceでディスクを指定すると入れ替え
てくれ,自動復旧します.ここで故障したディスクはad6のディスクが故障
してます.また,入れ替えたディスクは,ad10となっていますので,この
ディスクをGPTパーティションとして切ってZFS用の領域とboot用の領域に
分けます.分割したあと,新しく入れ替えたディスクと元々あったディスク
を入れ替えます.

# gpart create -s gpt ad10
# gpart add -b 34 -s 64k -t freebsd-boot ad10
# gpart add -t freebsd-zfs ad10
# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad10
# zfs replace polytank ad6p2 ad10p2

あとはZFSが自動で修復してくれます.

ZFS v.28では,dedup, triple prityなどが機能として追加されています.
特にdedupが使えるとディスクスペースの消費が抑えられるので使わねば!!

ZFSをv.15 -> v.28へ!!

ZFSをupgrade*2しますが,その前にFreeBSDをupgradeします.FreeBSDZFS
dedupを利用するためには9.0以上でないとだめですが,まだ9.0 RELEASEは
リリースされてませんがRC1がでてるのでこれを利用します.ソースをcsup
から落としてきてmake buildworld, make installworldでupgradeします.

# cd /usr/src
# make buildworld
# make KERNCONF=MYKERNEL buildkernel
# make KERNCONF=MYKERNEL installkernel
# make installworld
# reboot
# uname -a

ZFSのバージョンをupgradeします.upgradeするには以下のコマンドを実行
します.

# zfs upgrade
# zpool upgrade
# zfs upgrade -v
# zpool upgrade -v

これだけでZFSのバージョンアップが終了です.まず,ZFSのバージョンを
upgradeして,つぎにZFSのpoolのバージョンをupgradeします.

Dedup (重複排除)

ZFSのpoolのバージョンが,v.28になりましたのでこれでdedupが使える
ようになりました.その効果を確かめてみます*3.証拠とってなかった…
一応,以下のコマンドで効果は確認できます.

# zfs list

でかいファイルをコピーするとよくわかります.

そして…

また壊れた…もういやだ…

マシン構成

インストールマニアックスでもらったサーバ
CPU: Pentium Dual Core
MEM: DDR2 512MB * 4
HDD: WD, Hitachi 1TB * 6
OS : FreeBSD 8.0-RELEASE -> 9.0-RELEASE-RC1
ZFS: RAIDZ, polytank zfs v.4 -> v.5 zpool v.15 -> v.28
パーティション構成:
/     polytank/system
/home polytank/system/home
/tank polytank/system/tank Sambaで共有
/tmp  polytank/system/tmp
/usr  polytank/system/usr
/var  polytank/system/var