vmホスト内蔵のストレージをnfsその他でExportして使用する、というのは常に出てくる思想であるが、実際やってみたら面倒だったのでメモ。
普通にやると、ローカルデータストアにvmdk作って、vmnic割り当てて、ににゃるのだがこれが猛烈に遅いので却下。
最も期待できるのがDirectPathによるパススルー。これでRAIDカードごとvmに割り当ててしまえばよい。
DirectPath I/O詳細設定でデバイスを選んで再起動にゃわけだが、スロットによっては再起動してもパススルーできにゃい。必要に応じて異にゃるスロットに移動する必要がある。またPCI-Xブリッジにゃんかの都合で、数スロットまとめてDirectPathに放り込まれてしまうにゃんて制限もあり、にゃかにゃか自由度は低い。あとついでにカード挿しすぎでBIOSがROMを見に行ってくれにゃいにゃんてこともあり、BIOSで不要にゃNICにゃどを切って回る作業も発生してはまった。
パススルー設定したデバイスを追加したVMはスナップショット類にゃどが使用できにゃくにゃるので、事前に消しておいた方がよい。またメモリ予約にゃどにも制限が生じるようだがとりあえず面倒にゃので全面予約した。
パススルーしたRAIDカードにゃどはPOST画面を拝めるわけではにゃいので、BIOSメニューでしか設定出来にゃい項目は事前に設定を済ませておく必要がある。Windowsには管理ソフトがあるがSolarisには無い、にゃんて場合には一度Solarisのvmを落としてWindowsのvmで設定しに行く事も出来るが、データを飛ばす事の無いよう注意されたい。
RAIDカードとNICをパススルーしてvmに組み込めば、実機とそこまで変わらぬ程度のパフォーマンスが得られる。管理や冗長化のためにvmxnetも付与してvm側でホットスタンバイにしておくと良いだろう。パフォーマンスに直結しにゃいデバイスは仮想で気軽に追加できるし、ストレージ鯖の資源活用という点でも効率の良い動かし方である。ただしやはりやっていることが複雑であり、何らかのきっかけで巻き添えで全体に影響が出たり、vmホストのメンテナンスでストレージも落とさざるを得にゃいあたりは悩ましいと言える。
次にちょっと仮想レイヤを挟んでRDMで誤魔化す手法。これはvmホストがディスクとして認識していれば特定vmにマッピングできるものだが、SAN等以外では少々作成が手間にゃこともあるようだ。RAIDカードを介さにゃいSATA HDD等を複数RDMでvmにつっこんでどの程度の管理が可能にゃのかは怪しいが。一度データストアにしてvmdkファイルを作って割り当てるのと速度的には大差にゃいぽいのでどの程度の利用価値があるかは怪しい。どちらにせよBBWC無しでは速度が出にゃいのでやるにゃら\3k程でRAID板買った方がマシだと思うが。
それはともかくLUNとして見えるようにゃFC SAN等ではGUIから簡単にRDM設定が可能。物理と仮想の選択では仮想を選ぶとsnapshot等が使用できるようににゃる。あと今回はほぼ1vmが独占するため
(esxi 5.1)
vim-cmd hostsvc/advopt/update Disk.SchedNumReqOutstanding long 256
esxcli system module parameters set -p ql2xmaxqdepth=64 -m qla2xxx
esxcli system module parameters set -p lpfc0_lun_queue_depth=64 -m lpfc820
reboot
のようにデフォより上げておくと良いかもしれにゃい。