メイン コンテンツにスキップ
Codename

Blog

検索開始
ホーム
アカウントの作成・管理
Blog
Windows SharePoint Services
GroupBoard Workspace
Outlook Web Access
Exchange ActiveSync
  

Codename is all free! > Blog > カテゴリ
Hyper-Vのクライアント制御コード
TechNetフォーラムでコマンドでHyper-Vのクライアントを制御したいとの質問がありましたので、その回答です。
 

Sub Start (strNmae)
    Dim objWMI, VMList, VM
    Set objWMI = GetObject("winmgmts:\\.\root\virtualization")
    Set VMList = objWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem")  
    For Each VM In VMList
        If VM.Caption = "仮想マシン" then 
            If VM.ElementName = strName Then
                VM.RequestStateChange(2)
            End If
        End if 
    Next
End Sub

Sub Shutdown(strName)
    Dim objWMI, VMList, VM, objVMShutdown, objRes
    Set objWMI = GetObject("winmgmts:\\.\root\virtualization")
    Set VMList = objWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem")
    For Each VM In VMList 
        If VM.Caption = "仮想マシン" and VM.EnabledState = 2 then
            If VM.ElementName = strName Then
                If Not VM.EnabledState = 32769 Then
                    Set objVMShutdown = objWMI.ExecQuery("SELECT * FROM Msvm_ShutdownComponent WHERE SystemName='" & VM.Name & "'") 
                    objRes = objVMShutdown.ItemIndex(0).InitiateShutdown(True,"Scripted Shutdown") 
                Else
                    Msgbox "NG"
                End If
            End if
        End if
    Next
End Sub

VirtualServer <--> Hyper-V
 ネットで検索してみると、VirtualServerからHyper-Vへの移行記事はすぐ見つけることができます。
 
手順としては
・VirtualServerのゲストOSにインストールされている「バーチャルマシン追加機能」を削除します。
 
・移行するゲストOSがインストールされているVHDファイルのみをHyper-Vサーバーに移行する
 
・Hyper-Vの管理ツールにて移行したVHDファイルを使用して仮想マシンを新規作成する。
 
・Hyper-V用の統合サービスをインストールする。
 
以上、で簡単にVirtualServerからHyper-Vに移行が完了します。
 
さて、次にHyper-VからVirtualServerへの移行を調べてみますと・・・
ほとんど情報らしきものがありません。
ましてや、いずれも移行できずといった結果となっています。
 
考えられる手順としては
・Hyper-V用の統合サービスを削除する。
 
・ViertualServerへVHDファイルを移行する。
 
・移行したVHDファイルを使用して仮想マシンを新規作成する。
 
・「バーチャルマシン追加機能」をインストールする。
 
となるはずです。
 
まず、統合サービスの削除ですが確認した限りではコントロールパネルの「プログラムの削除」から削除できるはずなのですが、Windows Server2003とWindowsXPには該当項目があるのですが、WindowsServer2008とWindowsVistaにはそれらしきものが見当たりません。
よくよく調べてみると、WindowsServer2008とWindowsVistaではWindowsUpdateの更新ファイルとして提供されているので、コントロールパネルの「インストールされた更新プログラムを表示」から削除します。
 
WindowsVista  KB950214 WindowsServer2008では KB951634 として提供されていました。
 
さて、こちらを削除していざVierualServerにて仮想マシンを作成し、起動してみましたが、黒い画面でフリーズしてしまい起動に失敗してしまいます。
ネットでしらべた限りではこれより先に進んだ例がありませんでした。
 
予想ですが、おそらくHyper-V用の統合サービスをインストールしたことでHALが書き換えられ、そのHALではVierualServerのドライバが対応していないことが原因と考えられます。
残念ながらHyper-V用の統合サービスを削除しただけではHALが元にもどるということはないようです。
VertualServer対応のHALに書き換えができれば先に進めそうな気がするのですが果たしてその方法は・・・。
VirtualServer2005R2 SP1 インストール時の注意

VirtualServer2005R2 SP1 から様々な追加機能が提供され、これまで VirtualServer2005R2 を使用していたユーザーには是非ともお勧めしたいものとなっています。

VirtualServer2005R2 にSP1を適用する場合はマイクロソフトのサイトからダウンロードします。
このとき、.NetPassportが必要になりますので予め取得しておいてください。

インストール時に注意しておきたのが、稼働中のVirtualServerのゲストOSの取扱です。
インストール時にはVirtualServerのサービス停止を要求されます。
このとき、稼働中のゲストOSに対して「状態の保存」を行い、SP1インストール後に「保存された状態から復元」しようとすると、以下のエラーで復元ができません。



VirtualServer2005R2 SP1 というものの、実際のインストールを見た感じではサービスパックを適用しているというよりは、新しいサーバアプリケーションをインストールしているように見受けられますので、これはおそらく状態保存ファイルの*.vsvファイルの互換性の問題ではないかと思われます。

従って、SP1インストール時には、稼働中のゲストOSはすべてシャットダウンし、SP1インストール後起動しなおす必要があります。

また、SP1との互換性という点で、「バーチャルマシンの追加機能」もバージョンアップしているようで、SP1インストール後に

このようなイベントログが表示されます。
再度、「バーチャルマシンの追加機能」をインストールする必要があります。

IntelVT
IntelVTという機能があります。
これは簡単に言うと、いままでソフトウェアが負担してきた仮想化のタスクをハードウェアが実現する機能です。(詳細
これにより、これまでバーチャル環境で稼働していたWindowsのパフォーマンスが数段アップすることとなります。
 
VirtualServer2005R2のSP1とVirtualPC2007がこの機能に対応しました。
IntelVTという名称はアプリケーションごとに様々な名称があるようです。
VirtualServer2005R2のSP1では「ハードウェア依存の仮想化」
VirtualPC2007では「ハードウェアの仮想化」
という名称になっています。
 
このIntelVTを使用するためには、まずハードウェアが対応している必要がります。
最近のCPUであるCore 2 DuoやXeonなど、x64対応のCPUであれば問題なく使用できるようです。
また、BIOS設定で「Virtualization」といった設定箇所ががパフォーマンス関連の設定項目にあり、こちらを有効にすることでハード的な設定は完了です。
 
VirtualServer2005R2のSP1での設定項目は、各バーチャルマシンの「全般のプロパティー」で「ハードウェア依存の仮想化機能を有効にする (利用可能な場合)」のチェックを入れます。
 
VirtualPC2007での設定項目は、各バーチャルマシンの設定で「ハードウェア仮想化」の項目で「ハードウェア依存の仮想化機能を有効にする」のチェックを入れます。
 
ソフトウェア的な設定はこれで完了です。
このように、特に難しい設定は必要ではなく簡単にIntelVTの恩恵にあずかることができます。
 
詳細なベンチマークを取ったわけではありませんが、体感的にこれまでバーチャルマシンでのデスクトップ操作がもっさりとしていたものに比べると、通常のリアルマシンを操作しているかのうような軽快さを体感できます。
 
もちろん、デスクトップOSだけではなく、サーバーOSののサービスもパフォーマンスの向上を図ることができるはずです。
 
是非一度おためしあれ。