カーネル/VM Advent Calendar 4日目
この記事はカーネル/VM Advent Calendar2011のために書かれたものです.
今回の記事はZFSなNASについて書いてあります.
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します.FreeBSDでZFSの
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