VMWare + FreeNAS で RAID-Z2


激安USB3.0接続の外付けHDDが動くようになった(→ http://d.hatena.ne.jp/yaneurao/20110302 )ので、次はVMWare + FreeNASでRAID-Z2にしてみることにした。


最初、FreeNAS 0.7.2(stable)を使ったのだが、zfsのバージョンが古いし、zfsストレージが特別扱いされててとても使いにくい。zfsのリビルドもUIから出来ない。RAID0/1/5/10で使うにはいいのかも知れんが、いまどきRAID5なんて怖くて選べない。


HDDが大容量化してリビルドにかかる時間が無視できなくなりつつある。リビルド中に追加で壊れることは珍しくもなんともない。RAID5は信頼できない。せめてRAID6相当(RAID-Z2)でないと!


そんなわけで、FreeNAS 0.7.2でzfsにするぐらいなら、FreeNAS 8.0RC2を使うわってことで、FreeNAS 8.0RC2をインストールすることに。


VMWareUSB3.0接続の外付けHDD上に仮想ディスクを作成。


※ 仮想ディスクを作成せず物理ドライブとして直接マウントしたほうがパフォーマンスはいいのだが、この外付けHDDでは、NTFS以外のフォーマットをするとどうも挙動が怪しげなので、仮想ディスクを作成することにした。また事前に全領域を割り当てることもしていない。これらのためパフォーマンスは本来の半分程度になっているのではないかと思う。以下、そのつもりで読むこと。


FreeNAS 8.0RC2を2GBの仮想HDDドライブにインストール。そのあとブラウザでFreeNASにアクセスして、すんなりRAID-Z2のドライブが出来る。(HDDが壊れた時にGUI上でHDDをリビルドする操作部分はまだ作りかけのようで、現状、コマンドラインからしか出来ない。)





これをWindowsの共有フォルダとして扱うためにCIFSをONにして、CIFSの設定(Windows Sharesのところから)して…



あと、ストレージプールのパーティションを変更しとかないと。



VMWareのホスト側からその共有フォルダをネットワークドライブの割り当てでドライブレターを割り当てて、CrystalDiskMarkで速度を測定してみた。



読み書きともにそこそこ遅いです…。NASだと思えば許せる範囲?
他のPCから同じくドライブレターを割り当てて、CrystalDiskMarkで速度を測定。



512KBの書き込みがすこぶる遅い。8.667MB/sec。イーサネットは1Gbpsなのでそこで律速しているとは考えづらく、速度はもともと安定してなくて、これが本当の値のような気が。


上の実験ではVMWareでゲストOS(FreeNAS)に割り当てたメモリは2GB。
FreeNASはメモリを増やしたほうがいいらしいので8GB割り当ててホスト側で再測定。



別PCからこの共有フォルダへのアクセス速度を再測定。



やはり、書き込みは壊滅的に遅いような…。VMWareを動かしているマシンはCorei7 860。ゲストOSに割り当てたコアは1コア。パリティ計算に時間がかかっているとか、そういう問題でもないような…。


USBのコントローラーがまずく、このHDDに並列して書きこむときに律速しているような気は少しする。あとVMWareの仮想ディスクのパフォーマンス自体もよろしくないのだろう。条件を変えれば使える速度になるのかも知れない。


しかし、いまHDDは非常に安く、単なるファイルサーバーのために専用PCを用意するぐらいなら、普通に外付けHDDを3台つないで、定期的に3台間でミラーリングするほうがよっぽどメンテナンスが楽だし、壊れたときの復旧も楽だし、専用マシンもいらないし、アクセス速度も悪くないと思う。


とりあえず今回はVMWare + FreeNASという運用は見送って、SyncToy + タスクスケジューラで定期的に3台間で定期的にバックアップすることにした。


SyncToyはコマンドラインから実行するためのSyncToyCmd.exeが用意されていて、これの引数に"-R"をつけて起動するとすべてのSyncToyのタスクを実行してくれる。これをタスクスケジューラで設定しておけばいい。



■ まとめ


上記の構成でFreeNASをUSB3.0外付けHDDで運用するのは難しいのかも知れない。もうひと工夫いると思う。


USB3.0外付けHDDに私がこだわるのは、HDDの電源を共有していると、電源が壊れたときに巻き添えで全部のHDDが壊れるような事態を防ぐためだ。そのためには個別電源でなくてはならないし、それぞれのHDDをhotswapみたいなことができなくてはならない。


そのためにはUSB接続でその場で差し替えが利くというのが理想なのだが、VMWare Workstation 7にはUSB3.0のコントローラーが備わっておらず、USB3.0の機器をゲストOS側から直接認識できないので、USB外付けHDDがいざ破損したときにこれをhotswapのように差し替えるにはひと工夫いりそうだ。


また、VMWare Workstation7だとHDDに書き込めない場合、どうするのかを確認するダイアログがホストOS側に出てくる。これを抑制する手段が無い。ダイアログが出てきたら自動的に選択するようなプログラムを別途書いてやらねばならない。なかなか面倒だ。


結局、USB接続の外付けHDDに対してリアルタイムミラーリングを行なう機能がWindows7に備わっていればいいのだが、USB接続だとミラーリング出来ないのだ…。


HDD本体自体は非常に安いので、HDDを効率的に使うことを考えるよりは、運用の楽さや、障害時の復旧の用意さを念頭に置くべきだと思う。


cloneで良ければセンチュリー 裸族のインテリジェントビル5Bay USB3.0 eSATAコンボ CRIB535EU3のような製品があるのだが(この製品は最大5台のHDDでミラーリングできる)、ひとつのボックスにHDDを入れて運用するのは怖いんだ…。


壊れかけのHDDの排熱で他のHDDが巻き添えになるリスク、HDDケースの電源が壊れるときにすべてのHDDを巻き添えにするリスク、HDDケースが壊れたときに予備のHDDケースを用意しておかないという運用面の問題、etc…。


そんなわけで、FreeNAS 8.0の正式版が出たら、条件を変えて再チャレンジしてみたいと思う。