seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

[Windows] HVRemote.wsfでリモートで仮想マシンを使ってみた。(Hyper-V挫折の記録)。

※ 2009/02/21追記

前提

ハードウェアはHPの格安サーバML115(たぶん初期型。G5ではない)。

CPUはOpteronデュアルコア。HPで選んだ標準のCPUのまま、換装はしていない。メモリは6GB。

BIOSAMD-Vを有効にするようなオプションは存在せず*1
某ブログで紹介されていたハードウェアのHyper-V ReadyチェックではHardware Virtualizationは有効ではないよ、という結果が得られる。(すでにHyper-Vを有効にした状態で試したからかもしれないけれど。)

でも、このマシンにはWindows Server 2008 SP1を入れることができ、Hyper-Vも動いている。

Windows Server 2008を入れるにあたり、NvidiaWindows Vista64ビット用のRAIDドライバを入れて、ハードウェアRAID1で動作中。

ネットワークカードは標準のドライバでは安定してなかったので、Windows 2008 64ビット用のものに入れ替えたら安定したっぽい。

でも、IDEバイスを動かすとネットワークが不安定になる不可解な現象が2度発生しているので、実験が終了したらWindows 2003に戻そうかとも思っている。

Hypver-Vをリモートで管理する利点?


Virtual Server 2005では、サーバ上に複数のゲストOSを立ち上げておくことができ、管理コンソールはウェブ画面になっている。

ウェブ画面からゲストOSのサムネイルをクリックすると、ActiveXによってゲストOSのコンソール(モニタ)が表示されて、ここでVirtualPC2007のような感じでマウスやらキーボードやらで操作することが可能となる。


ActiveXであるのでゲストOSをホストしているマシンとは別のマシンで操作できる。このActiveXを切り出したかのようなクライアントアプリもある。


なので、たとえばML115のようなサーバ機をヘッドレスで運用していたとしても、別の作業PCから「バーチャルマシンリモートコントロールクライアント」*2を使ってつなげば、あたかもVirtualPCかのように制御できるわけである。*3

これと同じことをしたいと思うわけだが、もちろん、Hyper-Vでもリモート操作は可能になっている。
Hyper-Vにはウェブ画面はないけれど、リモートPCからHyper-Vを制御する「Hyper-Vマネージャ」というものがある。


これは単に管理するだけでなく画面の表示や操作もできるものであるから、Vista上からリモート上にあるホストOSを操作して、そのゲストOSの画面をVista上で操作することもできるようになる。


※ホストOSにリモートデスクトップで入った場合

ホストOSにリモートデスクトップで接続し、その中でHyper-Vマネージャを動かす場合、もちろん、動かすことは可能だが問題がある。

リモートデスクトップ上では「統合サービス」をインストールするまで、仮想マシンの画面にマウスがキャプチャされない。

OSのインストール程度ならなんとかキーボードだけで進めることができるが、ATL+TABやらWindowsキーやら、いろいろな特殊キーがホストOSにとられてしまうし、かなり使い勝手が悪い状態になる。

そのうえ、「統合サービス」をインストールできるのは限られたOSなので、可能ならば早い段階でリモートからHyper-Vを制御できるようにしておいたほうが良いようである。(なお、私の環境では、仮想マシン、仮想ディスクをリモートから作成することはできなかった。リモートデスクトップでホストOS上で固定サイズの仮想ディスク、仮想マシンの設定を済ませてから、リモートから仮想マシンを起動してOSをインストールした。)

Virtual Server 2005よりもいい点?

「ハイパーバイザ型だからパフォーマンスが云々」というのもあるかもしれないが、「64ビットOS」を入れられるというところがいいと思う。

VMWareのほうは64ビットOSを入れることは可能であるが、VMWareVirtualPCは共存できない*4

VMWare Playerはタダだけれど、ヘッドレスなサーバにいれたらリモート操作するのがめんどくさいことになる。*5

しかし、ついにHyper-Vによって64ビットOSを入れることが可能になった。

Hyper-VはVirtual Server 2005と共存できる(ようである)。

実験した限りでは両方ともゲストOSを起動した状態で問題なく動作している。

※ 2009/02/21追記

 Hyper-Vを入れたRoot-OS側(Windows Server 2008)にVirtual Server 2005 R2を入れてWindows XP Pro(SP3)32ビットをインストールしてみた。

 結論的に言えば、ただの屍のように、あるいは閉鎖空間かのように時間が停滞した世界にあってインストールがハイパースローモーションで何時間たっても終わらない。

 Windows XPインストーラで「残り39分」とか出ていたのに1時間たって確認すると「残り36分」とかおっしゃる。どう考えても、この世界では時間が停滞しているようだ。

 それでは、と思い立ち、Hyper-VのゲストOSとしてWindows Sverer 2003 R2を入れて、そこにVirtual Server 2005 R2をインストールしてみた。

 結論的にいえば、まるで鏡像の世界であるかのようにホストOSのときと何ら寸分違わず同じパフォーマンスが得られた。つまり、馬鹿かと思うほど死んでいる。

  一応ね、仮想ハードディスクは固定容量にしてみたり、Hyper-Vで物理ディスク*6に接続してみたりして試したけれど、ディスクの遅さとVirtual Server 2005 R2の遅さは関係ないようだ。

 単純に、仮想化状態で、さらにCPUを仮想化することのオーバーヘッドが非現手的なほどに遅いものなのだと思う。

 また、ホストOSに入れた場合でも全然パフォーマンスがでない理由は、たぶん、Hyper-Vがハイパーバイザ型なので、ゲストOS/ホストOSの区別なく、両方とも仮想マシン上で動作してCPUリソースをシェアリングしていることに起因するのだと思う。

 これはタスクマネージャを見てもわかるが、ゲストOS側がCPU100%になっていてもホストCPU側で何も処理が走ってなければ0%のアイドル状態を示すことからも推測できる。

 つまり、Hyper-Vが有効となっているWindows 2008でVirtual Server 2005を動かすのは、動くかもしれないが全然現実的ではない、という結論が得られた。

 もう、ぜんぜんダメ。二度と試すことはないだろう…。

これで、気兼ねなくML115仮想マシン専用機にすることができる。浅はかでした。

※ 2009/2/19追記

…というよりも、どうも64ビットOSでないとHyper-Vの統合サービスが意味不明な動きをするようだ。


Windows XP Homeは「統合サービス」の対象外だが、Virtual Server 2005で作成したvhdイメージをHyper-Vに乗せて動かしたところ、統合サービスのインストールは可能だったが、まともに動かなかった。入れないほうがマシな状況に。

Virtual Server 2005で作った仮想ディスクをHyper-Vで動かしたからかな、などと思いつつ新たにWindows XP Pro(32ビット)を入れてみた。統合サービスを入れたとたんに、さっきと同じような状況に。


WindowsXP64や、Vista64は問題なく動作していただけに、これは非常に意外な感じ。
たしかに統合サービスをいれなければ、とりあえず使えないことはないし、リモートデスクトップでつなぐ分には統合サービスはなくてもよいかもしれない。

しかし、Hyper-Vは体感的にはVirtual Serverよりも遅いので、ハイパーバイザの強みが生かせない状況では全然メリットがない。

さしあたり、32ビットOS&32ビット未満は引き続き、Virtual Serverで運用するのがよいのかもしれない。

Hyper-Vのリモート設定はめんどくさいらしいのでツールを使わせてもらう。


ドメインに参加していないワークグループのコンピュータでHyper-Vをリモートから管理しようとする場合、DCOMとかいろいろ設定を変更しなければならないようである。

ちょっと検索すると、いろいろひっかかる。
どう見ても、とてもめんどくさい。
そもそも各操作の意味がわからないので手順を間違えたらドツボにはまりそう。


しかし、これらを簡単にするツールができている。

http://code.msdn.microsoft.com/HVRemote

設定方法は、以下を参考にした。*7

http://www.atmarkit.co.jp/fwin2k/win2ktips/1106hvremote/hvremote.html

で、注意しなければならないことはサーバ側(Hyper-Vの載っているWindows Server 2008側)での作業が完了したら、マシンリブートが必要ということである。

そのあと、クライアント側の設定を行う。

基本的には、上記手順に従って、このHVRemote.wsfだけで、Hypver-VをリモートのVista(SP1)から操作できた。

この「再起動が必要」という一文を見逃したために、かなり悩みまくった。

なのでメモしておく。


なお、付け加えるのならば、Windows Server 2008での作業はビルトイン「Administrator」で作業すると良いと思う。

*1:G5にはAMD-Vを有効するか選択できるオプションがあるけれど。

*2:Virtual Serverのインストーラをクライアントで実行してクライアントのみインストールする。もしくはウェブ画面からActiveXで接続する。

*3:別解としては、リモートデスクトップを使う、というのもあるけれど、Windows XP HomeのようなリモートデスクトップをサポートしていないOSもあり得るわけで、BIOS画面とかを表示させたかったりする場合には、リモートデスクトップでは無理だし。

*4:同時実行できないだけでインストールはできる。

*5:ホストOSにリモートデスクトップで接続して、その中でVMWareを立ち上げるとか?。Hyper-Vのリモート管理もサポートしているのは同じWindows2008かVistaなのでクライアントがXPしかない場合には、やはり、そうゆう使い方になってしまうとは思う。

*6:ちなみに、NvidiaRAIDバイスはオフライン状態にしても選択肢にでてこない。RAIDを解除して、ただのSATAで起動しなおしたところ物理ディスクとして選択可能になった。どうやればRAID化できるのか、RAIDバイスによっては可能であるのかはわからない。

*7:ちなみに、ここのリンクから取得されるHVRemoteはちょっと古かったみたい。