FreeBSD:ZFSでraidz作ってみた。

ZFSの説明やらなんやらは面倒なので割愛(それどころじゃないって理由もあるが。。。)
一応参考はこんな感じ

ZFS – Wikipedia
http://ja.wikipedia.org/wiki/ZFS

@IT:一瞬でのバックアップを実現するSolaris ZFS(1/4)
http://www.atmarkit.co.jp/flinux/rensai/opensolaris04/opensolaris04a.html

Solaris ZFS 管理ガイド – Sun Microsystems
http://docs.sun.com/app/docs/doc/819-6260

ZFS Best Practices Guide – Siwiki
http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

RAIDシステムとちがって”ファイルシステム”で冗長化を実現したってのがポイントですか。
ディスクの管理も今時のハイエンド外部ストレージシステムの考え方が入っていて
使うだけなら管理がすごく楽になってる。パーテッション作るどころかフォーマットすらいらないし
コマンド一発で望みのアレイを作ってプールとしてマウントしてくれる。
fstabにちまちまとマウント情報を書くのも不要

一応個人的な欠点としては、前も書いたけど、RAIDレベルのアップデート、ダウングレードが不可
ディスクをRAIDアレイに追加不可、書き込みが遅いってあたり
Solarisには実装されてるけど、FreeBSDには無い機能とかもあるから
今のZFSのフルセットを使用したいならOpenSolarisを使うのがベスト
上の欠点もそのうち克服されるだろうけど、FreeBSDのRに降りてくるまでには少し時間がかかるはず
今回のオイラのHDD構成なら、よほどのことが無ければHDDを増やそうとかは思わないはずだ!w

ATA channel 3:
    Master:  ad6 <WDC WD10EADS-00L5B1/01.01A01> Serial ATA II
    Slave:       no device present
ATA channel 4:
    Master:  ad8 <WDC WD10EACS-00D6B1/01.01A01> Serial ATA II
    Slave:       no device present
ATA channel 5:
    Master: ad10 <WDC WD10EADS-00L5B1/01.01A01> Serial ATA II
    Slave:       no device present
ATA channel 6:
    Master: ad12 <WDC WD10EADS-00L5B1/01.01A01> Serial ATA II
    Slave:       no device present
ATA channel 7:
    Master: ad14 <WDC WD10EADS-00L5B1/01.01A01> Serial ATA II
    Slave:       no device present

raidzで約4Tのストレージを作るヽ(・∀・ )ノ キャッ キャッ
一応、zfsを利用するための呪文は必要

ZFSTuningGuide – FreeBSD Wiki
http://wiki.freebsd.org/ZFSTuningGuide

カーネルに”options KVA_PAGES=512″を追加して再構築、インストール
/boot/loader.confに下記を追加

zfs_load=”YES”
vm.kmem_size_max=”1536M”
vm.kmem_size=”1536M”
vfs.zfs.arc_max=”512M”
vfs.zfs.vdev.cache.size=”20M”

メモリ4Gなので、パフォーマンス重視の設定です
早速作ってみる、とりあえずベンチ目的のストライプで。

>

[root@nekosaba]/# zpool create zpool0 ad10 ad12 ad14 ad16 ad18
[root@nekosaba]/# zpool status
pool: zpool0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM zpool0 ONLINE 0 0 0 ad10 ONLINE 0 0 0 ad12 ONLINE 0 0 0 ad14 ONLINE 0 0 0 ad16 ONLINE 0 0 0 ad18 ONLINE 0 0 0
errors: No known data errors

そしてbonnie++でベンチマークしてみる。

[root@nekosaba]/# bonnie++ -d /zpool0/ -n 0 -b -u root
Using uid:0, gid:0.
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Version 1.93d       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
nekosaba.nekolov 7G    90  98 155798  54 124857  47   171  86 338094  70 202.0  19
Latency               173ms    1473ms    1937ms     335ms     514ms     204ms
1.93c,1.93d,nekosaba.nekolove.jp,1,1233734113,7G,,90,98,155798,54,124857,47,171,86,338094,70,202.0,19,,,,,,,,,,,,,,,,,,173ms,1473ms,1937ms,335ms,514ms,204ms,,,,,,

読み330Mbyte/sぐらい?
書きは155Mbyte/sぐらいか・・・ストライプにしては遅いけど、ZFSはこんなもん

[[root@nekosaba]/# df
Filesystem  1K-blocks      Used      Avail Capacity  Mounted on
/dev/ad8s1a    2026030   414162    1449786    22%    /
devfs                1        1          0   100%    /dev
/dev/ad8s1e    2026030     1138    1862810     0%    /tmp
/dev/ad8s1f  199947006 88419976   95531270    48%    /usr
/dev/ad8s1d   24372460  9973930   12448734    44%    /var
linprocfs            4        4          0   100%    /usr/compat/linux/proc
devfs                1        1          0   100%    /var/named/dev
zpool0      4804853504        0 4804853504     0%    /zpool0

-h付けるの忘れて見にくいけど。。。
4.5Tbyteぐらい?おっそろしー
一度ぶっ壊して目的のraidz(RAID5相当)で作り直す

[root@nekosaba]/# zpool destroy zpool0
[root@nekosaba]/# zpool create zpool0 raidz ad10 ad12 ad14 ad16 ad18
[root@nekosaba]/# zpool status
pool: zpool0
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM zpool0 ONLINE 0 0 0 raidz1 ONLINE 0 0 0 ad10 ONLINE 0 0 0 ad12 ONLINE 0 0 0 ad14 ONLINE 0 0 0 ad16 ONLINE 0 0 0 ad18 ONLINE 0 0 0
errors: No known data errors [root@nekosaba]/# bonnie++ -d /zpool0/ -n 0 -b -u root Using uid:0, gid:0. Writing a byte at a time...done Writing intelligently...done Rewriting...done Reading a byte at a time...done Reading intelligently...done start 'em...done...done...done...done...done... Version 1.93d ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP nekosaba.nekolov 7G 88 97 130865 46 98056 39 193 97 262815 59 73.8 9 Latency 327ms 1278ms 2254ms 124ms 298ms 486ms
1.93c,1.93d,nekosaba.nekolove.jp,1,1233733157,7G,,88,97,130865,46,98056,39,193,97,262815,59,73.8,9,,,,,,,,,,,,,,,,,,327ms,1278ms,2254ms,124ms,298ms,486ms,,,,,, [root@nekosaba]/# df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad8s1a 1.9G 405M 1.4G 22% / devfs 1.0K 1.0K 0B 100% /dev /dev/ad8s1e 1.9G 1.1M 1.8G 0% /tmp /dev/ad8s1f 191G 128G 48G 73% /usr /dev/ad8s1d 23G 9.5G 12G 45% /var linprocfs 4.0K 4.0K 0B 100% /usr/compat/linux/proc zpool0 3.6T 0B 3.6T 0% /zpool0 devfs 1.0K 1.0K 0B 100% /var/named/dev

3.6Tのストレージキタコレヽ(・∀・ )ノ キャッ キャッ
読みは262Mbyte/s、書きは130Mbyte/sぐらいかな?結構変動するみたいだけども
十分すぎるほど高速なストレージタンクだ
PT1であれこれしたデータを置いておくには十分だのう

ZFSの良いところは、イニシャライズとかアレイ作成時のビルドがいらないってところ
コマンドで作ったら即フルスピードで使えるのがいい
↑のテストもbonnie++動かすのに時間かかっただけで、アレイの作成、解放は一瞬で終わる
ストレージプールの拡張は即座に反映され、わざわざボリューム拡張などしなくとも良いのはいい

まあ、こいつはただのストレージタンクとしてしか使わない予定だから、あんまり余計な機能はいらないっちゃいらないが。

で、こっからは涙のトラブルシューティング
前回のエントリはいい死亡フラグだったぜ。。。

zpool0作ってヽ(・∀・ )ノ キャッ キャッしてたら、一時的に外したHDDを付け直した時に動かなくなってたの巻

経緯はこんな感じ・・・

システム用のHDDx1,zpool0用HDDx5でマザーのオンボードSATAポートを使い切る

仕方がないので玄人志向のSERIALATA1.5-PCI(相当古い製品)を刺してHDD2台を接続

何故かカードBIOSでフリーズ状態、先に進まない

何度かトライしてダメだったのでBIOSに問題があると判断

Webで情報げっと、BIOSのアップデートがneed

Sil3112のBIOSをダウンロードしてきてアップデートする

もっかい繋いで立ち上げたらHDDを認識せず

あまりに静かなのでこれHDDの電源入ってないんじゃ疑惑

別PCに繋げて立ち上げ→やっぱダメでした

\(^o^)/オワタ

HDD自体はどうでもいいが、中身のデータは困るんだ(;´Д`)
ディスクが死んだ訳じゃなくて、コントローラが死んだっぽい予感
生きてるHDDから基盤載せ替えにチャレンジするか・・・?

タイトルとURLをコピーしました