« 2013年06月 | メイン | 2013年08月 »

2013年07月29日

VMお引っ越し

ESXi5.1の環境も作り終わり,iSCSI SANの構築,冗長パス構成なども作り終わったところで止まっていましたが,いよいよ実際に運用するVMをデプロイしていきたい!
(既に実運用もしていますし,もっと環境を大きくいじっていますが,blogへのポストが追いついてません(笑))

当初考えていた目標は,ESXi上でROを常時稼働させる,という妙な目標です.
ただ,VMware環境ではHyper-Vで提供されているRemoteFXのようなグラフィックスアクセラレーションを行うことができません.
nVIDIA GRIDのようなGPU仮想化ソリューションも提供されつつありますが,現状趣味で取り扱っているような個人では導入できない(TeslaなどのハイエンドGPUでしかサポートされていない)ため,今回はESXiのデバイスパススルー機能を使ってGPUをVMから利用します.

で,結論を先に書いておくと,RADEON HD6450を使ったパススルーによるGPU利用が,Windows7(64bit)環境のVMで利用可能でした.
ただ,Windows8(64bit)では成功しませんでしたし,RO程度であればESXiのGPUエミュレーションでも十分動作するので,露店を出す程度なら問題ない,という状況です.
なので,Windows7でのみ運用し,Windows8はしばし放置,という感じです.
Windows8でも動作した,なんて話しも聞いたんですが,詳細が分からなかったので必要性が高まるまで置いておきます.

さて.
まずちまきの場合は手元のVMware Workstation9で動いているVMの一部をESXiに引っ越すところからスタートです.
もちろんVMware Workstation上にも何台かのVMは残すんですが,WindowsとLinuxが1台ずつ有ればとりあえず問題ないので,残りのVM,ここではWindows8(x64)を引っ越すことにしました.
引っ越すといっても,VMware WorkstationからESXiに接続([ファイル]>[サーバに接続])してから,転送したいVMの管理メニューからアップロードする([管理]>[アップロード])だけです.
あとはESXiと転送先データストアを選んでやれば,アップロードされます.
ちなみに,アップロードすると,アップロードしたVMのライセンス情報などはクリアされるようなので,適宜アクティベートなどを行います.
ちまきは,VMware Workstation上にあったVMを削除し,ESXi上のVMにライセンスを移しました(電話による認証が必要でしたが).
ちなみに,ESXiからVMware Workstationへの移動のやり方はよくわかりません(汗)
vSphere Clientのデータストアブラウザを使えば,直接VMDKファイルなどは落とせるので,それを使えばたぶんVMware Workstationへの移行はできると思うけど・・・.

続いて,ビデオカードのパススルー設定なんかを行います.
まずハードウェア構成です.
富士通のTX100 S3pなるサーバに,Xeon 1220v2(内蔵GPU無し(重要))とメモリ24GB,2ポートNIC増設し合計4ポート,ディスクレスでiSCSI SAN Bootしています.
今回は,AMD(旧ATI)のRADEON HD6450を2枚用意しました.
しょぼいビデオカードなのは,サーバ側の電源容量と,発熱の関係です.
両方ともPCIe x16カードですが,x1スロットに挿して使っています.

とりあえず新しくVMを作成し,Windows7(x64)をインストールします.
vCPUは2コア1ソケット,メモリは6GB(8GBは失敗して上手くいかない)でパススルーなどせずに普通に構築します.
VMtoolsもインストールし,ここまでで通常利用としては完了なので,とりあえずスナップショットなどを取っておくといいかもしれません.
インストールして普通に動くことを確認できたら,ここからパススルーなどを行います.

まずvSphere Clientから,ESXiの[構成]タブへ行き,[ハードウェア]の[詳細設定]へ行き,[DirectPath I/O構成]の[編集]からパススルーしたいデバイスのチェックを入れます.
ここでは,GPUだけでなくHDMIオーディオも選択しておきます.
ちなみに,ちまきは2枚同時に追加したので,それぞれ2つずつ選択しますが,同じカードを2枚挿していると区別が難しいです(笑)

続いてWindows7 VMのタブから[設定の編集]を選び,[ハードウェア]タブから[追加]を選びます.
[PCIデバイス]で,先ほどパススルー設定したGPUとHDMIオーディオの2つを追加しておきます.
ここまででパススルー設定は完了なのですが,このまま起動するとBSODで起動しません.
vSphereにはpciHole.start=****を設定するようメッセージが出ますが,そのまま指定してもダメだったので,試行錯誤しました.
この試行錯誤の結果,結局8GBメモリのVMでは上手くいかず,6GBメモリでどうにか動きました.
ちなみに,追加設定は,[pciHole.start=1200]と[pciHole.end=2200]の2つで,それぞれWindows7 VMのタブから[設定の編集]を選び,[オプション]タブから[詳細]>[全般]の[構成パラメータ]に設定します.
ここまでいけば,VMが起動可能となり,BSODで死亡することもなくなります.

ここからは,VM側でのGPU利用とDirectX利用の設定です.
普通にドライバ入れてやれば行けると思っていたんだけど,これでまたはまりました(笑)
先達の技に従い,下記のように行います.

(1)とりあえずMirror-DTCなるリモート接続ソフトを入れます.
(2)パススルーしたデバイスが認識されて不明なデバイスとして通知されますが,とりあえず置いておいて,AMDのドライバセットを使ってCatalystとAudioドライバだけをインストールします.
ちまきはこの時,全部インストールしてしまったんだけど,これが間違いの元です.
うっかりインストールしてしまっていたら,CatalystとAudioドライバ以外を削除することで対応できます.
(3)ビデオカードにディスプレイをつないでからVMを再起動します.
RADEONはディスプレイの接続有無によって挙動を変えるので,(電源ONにしなくても良いが)スタンバイ状態のディスプレイをつないでおく必要があります.
これで,2ndディスプレイとしてRADEONが認識されます.
1stディスプレイはVMware VGAです.
(4)Mirror-DTCから2ndディスプレイに接続して,プライマリに設定します.
また,VMware VGAのデスクトップを非表示にすると,Aeroなども使えるようになります.
弊害もあるようですが,ちまきの環境ではWindows7(x64)なVMで問題なく動きました.

で,Windows8側なんですが,こちらはパススルーや構成オプションの設定などをしてやることで,GPUも認識するんだけど,どうも上手くリモート接続できません.
とりあえずESXiのGPUエミュレーションでROくらいは動くので目的は果たせているんだけど・・・.
まぁ,そのうち機会があればまた挑戦かな?

投稿者 chimaki : 00:07 | コメント (2) | トラックバック

« 2013年06月 | メイン | 2013年08月 »