VMWare + FreeNAS で RAID-Z2その2
昨日(→ http://d.hatena.ne.jp/yaneurao/20110303 )の続き。
USB3.0接続のHDD4台 + VMWare + FreeNAS 8.0RC2でRAID-Z2構成にしたところディスクの書き込みパフォーマンスが著しく悪かった。
この原因をもう少し突っ込んで考える。
・ USB3.0のPCIe用ボードか外付けHDD側で律速しているのでは?
なら内蔵HDD上にVMWareの仮想HDD(10GB)×4を作って同じ実験をしてみる。以下の条件で試した。
・ゲストOSのメモリは8GB。
・ゲストOSのプロセッサ数1。
・仮想ディスクは事前に10GBを割り当てた。(4つの仮想ディスクの実体はすべてCドライブに作成した)
・ホストOS側でFreeNASの共有ドライブにドライブレターを割り当ててCrystalDiskMarkで測定。
書き込みがめっぽう遅い。これでわかったのは、
1) 仮想ディスク領域を事前に割当てしていないからと言って著しくパフォーマンスが劣化しているということはない
2) USB3.0だから悪いというわけではなさそう
ということだ。RAID-Z2にするためのパリティ計算がそんなに重いのか?
・ゲストOSのプロセッサ数を4に変更
してみた。
あまり変わっていない気がする。プロセッサ数は関係ないか。
・4台でRAID-Z2をやめて3台でRAID-Zに
してみた。
わー。すこぶる改善された。この速度なら使えるのになぁ…。
さて次は
・4台でRAID-Z
にしてみた。
少し速くなった気がするけど、誤差の範疇かな?
※ 仮想ディスク×4は、単一の物理ドライブ上に配置してます。
結局、RAID-ZとRAID-Z2だと書き込み時間が大差だとわかった。
しかしいまさらRAID-Zなんて使いたくないので、もうちょっと調査してみようと思う。
↓
なんとなく原因がわかった。
どうもWestern DigitalのWD20EARSのような4KBセクターを採用しているHDDでは、512バイトの書き込みをドライバがエミュレーションで行なうので、512バイト書きだすときに無駄に4KB書き出されていることになって、このせいでzfsでRAIDを組むときに書き込みパフォーマンスが著しく悪いのだと思う。
↓そのものすばりの記事発見。FreeBSD界隈の人にとっては常識なのかな?
ZFS and 4k sector drives
http://forum.nginx.org/read.php?23,150920,151257
↓
じゃあ、ZFSが改良されるのを指をくわえて待ってる。
とりあえずいまはZFSにするならWestern DigitalのHDDは避けたほうが無難みたい。でもここのが一番安いんだよね…。
とりあえず、FreeNASの今後のバージョンではいまハード構成でもRAID-Z2が使い物になるかも知れないということで今回の調査はここまででいいや。
↓その後、わかったこと。
物理セクタ4KB(Advanced Format Technology = AFT)を採用しているHDDに対応させるために、FreeNAS 0.7.2ではzfsプールを作るときに「Advanced Format を有効にする」というオプションを選択するとAFT用に最適化されるらしい。ところがFreeNAS 8.0RC2は、ディスクの個別フォーマットは出来ないようで(作りかけ?)、AFTなHDDだとどうしようもないようだ。
また、FreeNAS 0.7.2でもAFTのHDDと非AFTのHDDとを混在させるとパフォーマンスが落ちる等、いろいろ悩ましい問題があるようで、HDD交換のときに気をつけないといけないらしい。AFT採用のHDDが今後主流になるかも知れないので、AFTのHDDだけで統一するのがいいのかも知れない。
↓ USB3.0外付けHDD×4にVMWareの仮想ディスクを作って、ゲストOSとしてFreeNAS 0.7.2を入れて同じ実験をしてみた。
メモリを8GBにすると書き込みの値が異常に上がったが、たぶんcacheか何かの影響で、実際は読み書きともに30MB/sec程度しか出ていないと思う。
一昔前のNASだと思えば許せる範疇ではあるが、HDDが安価になっている現在、この程度の速度しか出ないならRAID-Z2を選択するより、(同じくVMWare + FreeNASを使って)HDD3台でミラーリングするほうがよっぽど安心感が得られると思う。
■ おまけ
FreeNASでHDDのミラーリングした場合どんな性能が出るのか実験。
仮想ディスクをUSB3.0接続のHDD×3台の上に作成して、その3台をFreeNAS側でzfs + mirror設定して、ホスト側で測定。
BuffaloのUSB3.0外付けHDD1台だけに読み書き込みしたときの値のちょうど1/3ぐらい。
PCIeに刺してあるUSB3.0ボードか、USB3.0Hubかで律速しているのだろうか。
→ よく考えたら、Star-USB3はPCI Expressのx1なので、ここで律速しますね。後日x4なAsusのU3S6とか買ってきて実験やりなおします。