仮想化BeyondRAID

LinuxでBeyondRAID的なNASを作ろうというので、マシンを1台用意することを考えていたが、会社でVMWare使っている時に、Ivyの4コア+HTありなら論理8コアもあるので、Linux仮想マシンで起動し、ローカルループバックで接続すればWindows使いながら仮想化RAIDの恩恵にあずかれるんじゃないか?と気が付いた。
VMWareは仮想化HDDのほかに、直接デバイスを接続することもできるので、HDDを丸ごと接続してやればいいのではないか?という考え。


追記
仮想マシンに直接HDDを繋げることを検討したが、その構成だとホストOSのWin7が認識できないパーティションがHDD上に存在することになり、実マシンと仮想マシンの境界が微妙になる。
なので、HDDも仮想HDDファイルとして仮想化し、複数の仮想HDDを仮想Linux上でRAID化して公開するようにし、仮想HDDファイルが実際に冗長になるように複数のHDDに配置されているかはホストOS側のファイルの移動で実現するという切り分けがいいんじゃないかと思った。
この方法のメリットは以下のようなことが考えられる。

  • ホストOS上で全HDDのパーティションを認識でき、パーティションはホストOSの管理下にある
  • SMARTなどの管理もホストOS上で行え、仮想マシンが気にしなくてもよくなる
  • 書き込みに応じて領域を確保する方式にすれば書き込んだ分だけしかHDDの領域を消費しないので、RAIDのデータが少ない時に実HDDをホストOSの別の用途に転用できる
  • 仮想RAIDの構成と実HDDの構成を一致させなくてよくなる(複数の仮想HDDファイルを一つの実HDDにおいてもいい)
  • 実HDDをBeyondRAIDオリジナルのようにパーティションで区切るのではなく、仮想HDDの最大容量で区切るという方法で分割すると、仮想OS上では常に1HDD1パーティションになり見通しがよくなる上に、セクタ数などもそろえられるので仮想RAID構築のときのオーバーヘッドが減る
  • バックアップや実HDD間のデータの移動がホストOSと仮想化マシンの処理だけで行え、仮想OS上で作業しなくてもよくなる
  • 仮想HDDはVMwareの場合60個(4SCSIホスト×15デバイス/ホスト)接続できるので容量の限界に問題にならない

上記に対するデメリットは以下のようなことが考えられる。

  • 仮想HDD処理のオーバーヘッド(特にホストOS上でコピーしやすいように2GBぐらいの分割ファイルにする場合のオーバーヘッドと、初回書き込み時に仮想HDDを拡大するオーバーヘッド)
  • RAIDが本当に冗長かどうかはホストOS上のファイル配置に依存するので、仮置きのつもりで移動したらまったく冗長じゃない状態になっていても気が付かない場合がある


前者は調べたところ初回の拡張以外はそんなに問題にならない程度のオーバーヘッドらしい、後者は気を付けるしかない。
デメリットも含めて考えても仮想HDDにしたほうが使いやすくなると思うので、仮想HDDにするのがよさそう。


これが仮想化による効率化ってやつか。


追記2
仮想HDDにしたのは、にっくるさんに相談したときに出てきた、"ホストOSのスリープのときって直接接続しているHDDの扱いってどうなるんだ?"という意見で不安になったのもある。
仮想HDDなら仮想マシンをスリープした時点でホストマシンのファイルに過ぎなくなるので、仮想マシンのスリープ→ホストのスリープとやれば問題ないはず。