SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘Hyper-V’ Category

Hyper-V のゲスト OS で XP Mode を実行できるのか?

leave a comment

XP Mode は提供当初は、CPU の仮想化支援機能が必須となっていましたが、以下の修正プログラムの提供で、
仮想化支援機能が無くても動作するようになりました。

Windows 7 を実行しているコンピューター上の Windows Virtual PC での Windows XP Mode のハードウェア支援による仮想化に関するエラー メッセージ

仮想化支援機能がなくても動作するようにするための修正プログラムをインストールすることで、Hyper-V の
ゲスト OS でも XP Mode の検証ができるのか試してみました。
# すでに試されている方はいらっしゃいますが、自分でもやってみたかったので。

Hyper-V 上でゲスト OS が起動することで以下の検証を仮想環境上で、実施することができるようになります。

  • XP Mode
  • MED-V v2
  • (MED-V 1.0)

MED-V 1.0 は XP Mode ではなく Vritual PC 2007 ですが、ゲスト OS 上で Virtual PC 2007 を実行することも可能です。
以前、Windows Server 2008 のゲスト OS として実行した場合は、結構動作が重かった記憶があったのですが、
Windows Server 2008 R2 で実行したところ以前のようなストレスは感じることはなく、検証に使えるレベルでした。

?

■ゲスト OS で XP Mode

OS は Windows 7 Enterprise Edition x86 を使用しています。

仮想化支援機能が無い CPU で実行可能にするためのパッチを適用しない状態では XP Mode のセットアップを起動すると、
以下のエラーとなります。
image

KB977206 のパッチを適用した状態で XP Mode を実行してみます。
仮想化支援機能がなくても動くようにすると、XP Mode のセットアップを起動することができるようになります。
image

?

自宅には以下の CPU の検証環境があります。

  • AMD Phenom X4 9950
    image image
  • Intel Core i3 M330
    image image
  • Intel Core? 2 Duo T7100
    image?image
  • Intel Xeon 3350
    image image

それぞれで稼働検証をしてみました。

?

■AMD Phenom X4 9950

Phenom X4 9950 では正常に起動しました。

image

?

■Intel Core i3 M330

Core i3 でも正常に起動することができました。
image

?

■Intel Core? 2 Duo T7100

Core 2 Duo の場合は、XP Mode のセットアップを完了することができませんでした…。

image

?

■Intel Xeon 3350

こちらもセットアップを完了することができませんでした。

image

ただし、Xeon 3350 ではそのまま放っておくと起動しました…。
image?

仮想化の上で仮想化。CPU のスペックが求められる構成なのかもしれないですね。
Core 2 Duo の場合は、スタートメニューの XP Mode からではなく、KB977206 と Windows Virtual PC の統合機能を手動で

ンストールして環境を作ると XP Mode の検証をすることができます。

?

今回は x86 で検証しているのですが、x64 の Windows 7 でも検証したところ OS がフリーズしてしまいました。
下がフリーズしている状態なのですが、パッと見は OS が起動しているように見えますが、
image

Hyper-V マネージャーでゲスト OS の状態を見ると、ハートビートが、[通信の切断] となってしまっています。
image

Windows Virtual PC ではなく、MED-V 1.0 SP1 用に Virtual PC 2007 をインストールして起動してみたのですが、
そうすると OS が突然落ちてしまいました…。
# こちらは、Corei3 で試した結果です。

Phenom X4 9950 だと x64 でも XP Mode が動作したのですが。
image

CPU のスペックや機能でこの辺の違いが出ているのでしょうか??
情報を調べきれいていないため、原因まではわかっていません。

?

スペックの高い CPU (Nehalem 系)? があれば試してみたいのですが、さすがに自宅の検証環境として導入できるレベルは超えてしまいますね。

x86 であれば、動く環境が多そうなので MED-V v2 が提供されたときは、物理環境を用意しなくても初期の検証は実施できそうです。

Written by Masayuki.Ozawa

9月 8th, 2010 at 9:27 pm

Posted in Hyper-V

Windows Server 2008 R2 SP1 Beta の仮想マシンの Reservation 設定について

leave a comment

[T2-401]? Effective Hyper-V R2 SP1 ? 詳説 Dynamic Memory ? で Dynamic Memory が有効になっている、
仮想マシンで Reservation の設定ができるという話がありました。

この設定は WMI で実施する必要があるとのことでしたので、先日の投稿で設定用のスクリプトを作成してみました。

WMI で仮想マシンに Reservation を設定

?

この設定をした時の動作を軽く検証してみました。

?

■仮想マシンの Reservation の設定箇所

Hyper-V 上の仮想マシンの構成情報は XML ファイルに記載されています。

image

WMI で [rootVirtualization] 名前空間の [Msvm_MemorySettingData] クラスから情報を参照することもできます。

以下の情報は WMI で取得したメモリの情報になります。

Address ?
AllocationUnits MB
AutomaticAllocation True
AutomaticDeallocation True
Caption メモリ
Connection ?
ConsumerVisibility ?
Description Microsoft Virtual Machine メモリの設定です。
DeviceID ?
DeviceIDFormat ?
DynamicMemoryEnabled True
ElementName メモリ
HostResource ?
InstanceID Microsoft:A4A7173B-7DA6-42B8-8EE1-4DA2849E91184764334d-e001-4176-82ee-5594ec9b530e
IsVirtualized True
Limit 65536
MappingBehavior ?
OtherResourceType ?
Parent ?
PoolID 15129609-B465-4916-AA13-0CF4B109ADB0
Reservation 1024
ResourceSubType Microsoft Virtual Machine Memory
ResourceType 4
TargetMemoryBuffer 20
VirtualQuantity 1024
Weight 5000

?

初期状態では、[Reservation][VirtualQuantity (スタートアップ RAM)] と同一の設定になっています。
また、Reservation を設定するためには、[DynamicMemoryEnabled][True (有効)] に設定する必要があります。
DynamicMemory を有効にしていない状態では、WMI でReservation の値を設定しても設定が保存されません。
また、仮想マシンが起動している状態では変更ができないので設定をするときには仮想マシンを停止状態にする必要があります。

仮想マシンの構成ファイルは [Hyper-V のサービス (Hyper-V Virtual Machine Management)] でファイルにロックがされていますので、
XML ファイルを直接変更して Reservation の設定をすることができないようです。
そのため、WMI を使用して設定を変更する必要があるようです。
# サービスを停止すればファイルを直接変更することが可能です。
image
image

?

?

■Reservation を有効にした際の現在のメモリの遷移

Reservation を設定していない仮想マシンは、初回起動時にはスタートアップ RAM のメモリで起動され、必要に応じてメモリは
拡張されますが、最小ののメモリ設定としてはスタートアップ RAM の値になります。
# 今回は 1,024 MB をスタートアップ RAM として設定しています。

image

image?

パフォーマンスモニタでメモリの使用量を確認するとメモリも一定のサイズで遷移しています。
# アプリケーションは何も実行していない状態で稼働させています。
image

Reservation を 784 MB に設定して、メモリの遷移を見てみたいと思います。
起動時は、スタートアップ RAM の値で起動されるという動作は変わりません。

image

そのまま起動した状態にししばらくすると現在のメモリが下がります。
image

パフォーマンスモニタを見ていると、[Memory Remove Operations] が発生し、[Physical Memory]
減っていることが確認できます。
image

Reservation の設定が働き、スタートアップ RAM 以下までメモリが減っていることが確認できますね。
Reservation を 8 に設定するとどうなるかも試してみました。
# 設定の最小値は 8 になるようです。
image
image

解放できるところまで解放しているようですね。

スタートアップ RAM と Reservation の使い分けをどうするかはまだ考えていませんが、設定して動作するところまで確認してみました。

Written by Masayuki.Ozawa

8月 29th, 2010 at 4:17 am

Posted in Hyper-V

WMI で仮想マシンに Reservation を設定

leave a comment

昨日の Tech・Ed Japan 2010 の [T2-401]? Effective Hyper-V R2 SP1 ? 詳説 Dynamic Memory ? のセッション内で
以下のお話がありました。

  • WMI のクラスにプロパティが追加されている。
  • Reservation プロパティは WMI でしか設定できない。(GUI では設定できない)
  • 安定稼働してきたときに最低限確保しておくメモリ。Startup RAM より小さく設定できる。

早速、PowerShell で WMI を使用してこのプロパティを設定するためのスクリプトを書いてみました。

# 設定をする仮想マシン
$VMName = "RemoteFX"

# Reservation として設定するメモリサイズ (MB)
$MemReserve = 256

# 仮想マシンの管理サービス用のオブジェクト作成 (設定を Commit するのに使用)
$VM_Service = Get-WmiObject -namespace rootvirtualization -Class Msvm_VirtualSystemManagementService

# 対象の仮想マシンのベース情報を取得 (設定変更を Commit するにはこのクラスの PATH を指定する)
$VMC = Get-WmiObject -Namespace rootVirtualization -Class Msvm_ComputerSystem -Filter "ElementName=’$($VMName)’"

# 仮想マシンの設定情報を取得
# SettingType = 3 は現在の仮想マシンの構成情報 SnapShot が存在すると 5 の情報が増える
$VMS = Get-WmiObject -Namespace rootVirtualization -Query "Associators of {$VMC}? Where ResultClass=Msvm_VirtualSystemSettingData" `
| Where-Object {$_.SettingType -eq 3}

# 仮想マシンのメモリ設定情報の取得
$VMMS = Get-WmiObject -Namespace rootVirtualization -Query "Associators of {$VMS}? Where ResultClass=Msvm_MemorySettingData"

# 変更前のメモリ情報
Write-Output "Before : $($VMS.ElementName) , $($VMMS.DynamicMemoryEnabled) , $($VMMS.Reservation)"

# Reservation を設定するためには、DynamicMemoryEnabled を True にする必要がある。
$VMMS.DynamicMemoryEnabled = $true
$VMMS.Reservation = $MemReserve

# 変更後のメモリ情報
Write-Output "After : $($VMS.ElementName) , $($VMMS.DynamicMemoryEnabled) , $($VMMS.Reservation)"

# 変更を確定
$Result = $VM_Service.ModifyVirtualSystemResources($VMC.__PATH, $VMMS.psbase.Gettext(1))

?

WMI でプロパティを設定する場合、[ModifyVirtualSystemResources] を設定しないと変更は確定されないですね。
また、[ModifyVirtualSystemResources] が True でないと Reservation の設定が反映されないようです。

今回、初めて WMI で仮想マシンを触ったのでこの辺がわからず、四苦八苦しました。
開発はもうあまり携わらいのですが、このようなスクリプトをもっと可読性と汎用性を高めて作成するようになりたいものです。
# 今回も見づらいコードですよね。

Written by Masayuki.Ozawa

8月 28th, 2010 at 8:27 am

Posted in Hyper-V

256 MB の GPU 搭載サーバーでRemoteFX が有効なゲスト OS は何台起動できるか。

leave a comment

検証環境の一台には RemoteFX を検証するために 256 MB の GPU を搭載しています。
以下が、GPU-Z というツールで取得した GPU の情報になります。
image
この環境で何台 RemoteFX 3D ビデオアダプターが有効になっているゲスト OS を起動できるかを試してみました。
結論から言ってしまいますと 1 ~ 3 台起動することが可能です。
RemoteFX 3D ビデオアダプターの技術情報として以下の情報があります。
Hardware Considerations for RemoteFX
この情報の中に、解像度と使用するモニター数の設定による必要となるメモリについての記載があります。
RemoteFX 3D ビデオアダプターで使用される GPU のメモリですが、解像度とモニター数に依存するようです。
RemoteFX 3D ビデオアダプターを追加した直後のデフォルトの状態では、
[モニターの最大数][1]
[モニターの最大解像度][1280 × 1024]
となります。
image
この状態ですと、[125 MB] のメモリが消費されることになります。
[125 MB × 2 = 250 MB] ではありますが、GPU に搭載しているメモリがフルに使えるかといわれるとそうでもないはずですので、
この状態では 1 台までRemoteFX 3D ビデオアダプターが有効になっているゲスト OS を起動することが可能です。
2 台目を起動しようとすると GPU のメモリが不足して以下のエラーになります。
image
[モニターの最大数][1]
[モニターの最大解像度][1024 × 768]

の場合は、使用されるメモリは [75 MB] となりますので [75 MB × 3 = 225 MB] で 3 台起動することが可能です。
RemoteFX ~ RemoteFX4 のゲスト OS で RemoteFX を有効にして解像度を 1024 × 768 にして起動できる台数を
確認した結果がこちらになります。
image
4 台目の起動でエラーになりましたが、[1280 × 1024] と比較して起動できる台数が増えています。
解像度とモニター数の設定による GPU のメモリの使用量ですが、RemoteFX USB デバイスリダイレクトにも影響します。
USB デバイスリダイレクトですが、RemoteFX 3D ビデオアダプターが追加されているゲスト OS でしか利用できません。
Web カメラのようなグラフィックを使用するデバイスをリダイレクトするのであれば、GPU のメモリを使用するのが良いと
思うのですが、グラフィックを利用しないデバイスを利用するのであれば、最低限の解像度にしてメモリの割り当てを
抑えるのは手段としてあるかと思います。
自宅に Web カメラ以外に何かリダイレクトできそうなデバイスがないかを探したところ、USB NIC がありました。
LAN-USB
いろいろと試してみたところこの USB デバイスをリダイレクトすることができました。
Windows 7 x86 SP1 Beta に LAN-USB を接続して、接続しているコンピュータ側にデバイスドライバをインストールしてない
状態だと USB デバイス リダイレクトの対象として表示されました。
image
デバイスドライバをインストールして、接続をしに行く端末上でデバイスが正常に認識できている状態ではリダイレクト可能な
デバイスとしては表示がされないのですよね…。
デバイスマネージャーでこの状態 (デバイスドライバをインストールしていない) であれば、リダイレクト可能ですが、
?image
この状態 (デバイスドライバインストール済み) だと、USB デバイスリダイレクト対象として表示されません。image
?image
どのようなデバイスがリダイレクトできるのか私はまだよくわかっていないので、この辺はきちんと調べてみたいと思います。
今回は、たまたまリダイレクトできたのでひとまず使用してみたいと思います。
USB NIC をリダイレクト対象として、選択して Windows 7 x86 SP1 Beta のゲスト OS に接続をしてみます。
上がゲスト OS、下がリモートデスクトップを実行している (USB 機器を接続している) 端末になります。
image
image
接続している USB NIC (AX88772) が Hyper-V 上のゲスト OS にリダイレクトされていることが確認できます。
実際に USB NIC で IP も取得できており、USB NIC から PING の疎通も確認できました。
同様の設定で、RemoteFX 3D ビデオアダプターを追加していないゲスト OS に接続をしてみます。
この場合、USB NIC がリダイレクトされません。
image?
リダイレクトできる機器の条件がわかっていないのですが、RemoteFX USB デバイスリダイレクトを使用する場合、
リダイレクトする機器の種類によって解像度を変更することも検討する必要がありそうですね。
それと、以前の投稿では BUFFALO の BWC-130H01 という Web カメラを使用してうまくカメラから動画をとることが
できなかったのですが、今回使用している LOOX U/B50N だとカメラを使用することができました。
GPU の問題ではなかったみたいですね。
合わせ鏡状態ではありますが、下の画像は Hyper-V のゲスト OS で Web カメラを使って取得したものになります。
image
途中から話がずれてしまった投稿ではありますが、RemoteFX について新しく検証してみたとことまとめてみました。

Written by Masayuki.Ozawa

8月 21st, 2010 at 1:27 am

Posted in Hyper-V

仮想ハードディスクを縮小する方法

one comment

以前、以下の投稿をしました。
仮想ハードディスクの拡張と縮小

縮小には VHD Resizer というツールも検証してみたのですが、仮想ハードディスクのサイズを
縮小することができませんでした。

以下の仮想ディスクを VHD Resizer で開いてみます。
image

現在 40 GB のディスクになっているのですが、[Min] が 40gb となっており、ディスクサイズを縮小することができませんでした。
image

前回はここで終わっていたのですが、先月以下の記事が投稿されました。
Shrink VHD size

VHD Resizer を使って、仮想ハードディスクのサイズを縮小する方法が紹介されていました。
「あれ。VHD Resizer でディスクサイズを縮小できるんだ。」と思って再度検証してみました。

?

■VHD Resizer で仮想ハードディスクを縮小するためには

VHD Resizer で仮想ハードディスクを縮小するためには、事前にパーティションを縮小して、[未割り当ての領域] としておく必要があるようです。
image
image
image

未割り当ての領域を作った仮想ハードディスクを VHD Resizer で開いてみます。
image
そうすると、前回 (未割り当ての領域を作る前) は [40 gb] となっていたのが [20 gb] となっています。

VHD Resizer はベースの仮想ハードディスクはそのままで、新規の仮想ハードディスクを作成します。
Min が 20 gb になっているので、New Size に 20 gb を指定しても [resize] を押すことができません。
image

Size を MB にすると理由がわかります。
MB だと 20531 mb となっています。New Size には Min より大きい数を入力する必要がありますので、今回の場合は、[21 GB] か
[20532 MB] を設定する必要があります。

[resize] を押すと、Destination に指定したパスに縮小した VHD が作成されます。
image

[resize] を押すとオリジナルの仮想ハードディスクが読み込まれ、新規の仮想ハードディスクに順次書きだされていきます。
image

終了するとダイアログが表示されます。
今回は他の仮想ハードディスクのサイズは変更しませんので、[いいえ] をクリックします。
image

VHD Resizer で縮小が完了した仮想ハードディスクがこちらになります。
image
未割り当ての領域もなくなってディスク全体が縮小できていることが確認できました。

未割り当ての領域にしないと [Min] が変更されないとは気づきませんでした。

Written by Masayuki.Ozawa

8月 9th, 2010 at 9:25 pm

Posted in Hyper-V

RemoteFX 3D ビデオ アダプターに再チャレンジしてみました。

2 comments

前回、RemoteFX 3D ビデオ アダプターを試してみようとしたときには、オンボードのグラフィックチップだけでしたので、
ゲスト OS を起動した際に以下のエラーが発生してしまいました。

image

ちょっと、悔しかった (?) ので会社帰りに大手家電量販店に行って、以下のグラフィックボードを購入してきました。
RH4350-LE256HD/HS2

定価で 3,500 ぐらいで、たまっていたポイントを使って 1,900 円でお買い上げできました。
まぁこれぐらいの値段なら失敗しても、「悔しくなんかないやい!!」と強がってちょっとしょんぼりするレベル。

この グラフィックボードをML 115 G5 に搭載して、RemoteFX 3D ビデオ アダプター を試してみました。

?

■ML115 G5 に搭載した時の問題

わくわくしながら、ML115 G5 にグラフィックボードを搭載して、電源を入れてみたらなぜか画面が表示されない…。
BIOS のアップデートしたら何か変わるかな~と思ったのですが、状況に変化はなし…。
# オンボードのディスプレイアダプタ / 追加したグラフィックボードのディスプレイアダプタのどちらにさしても表示されない。

まぁ、OS 自体は起動しているようなので、リモートデスクトップで接続ができれば支障はないので今回は無視して進めることにしました。

デバイスドライバはこちらから入手可能です。(Windows 7 x64 用を使っています。)
Display Driver Only

?

■RemoteFX の情報

RemoteFX の情報をいろいろと調べてみました。
以下の技術情報を参考にすると良さそうです。(全部英語…。)

Deploying a Single Microsoft RemoteFX Server Step-by-Step Guide
Deploying Microsoft RemoteFX for Personal Virtual Desktops Step-by-Step Guide
Deploying Microsoft RemoteFX for Virtual Desktop Pools Step-by-Step Guide
Deploying Microsoft RemoteFX on a Remote Desktop Session Host Server Step-by-Step Guide

Hardware Considerations for RemoteFX
Microsoft RemoteFX

?

■RemoteFX 3D ビデオ アダプター を有効にする

今回はグラフィックボードを追加しているので、RemoteFX 3D ビデオ アダプターを追加してゲスト OS を起動することができます。
image

こちらが起動直後のゲスト OS のデバイス マネージャーの画面になります。
ディスプレイ アダプターは [標準 VGA グラフィック アダプター] となっています。
不明なデバイスとして表示されているのが、3D ビデオ アダプターになります。
image

3D ビデオ アダプターを使うためには Windows 7 を SP1 Beta にする必要があります。

In order to use RemoteFX in a virtual desktop, you must be running one of the following editions:

  • WindowsR 7 Enterprise with SP1
  • WindowsR 7 Ultimate with SP1

?

ということでさっそく SP1 をインストール。

?

■RemoteFX 3D ビデオ アダプターを追加すると、VM のコンソールから接続できない。

インストールが終わったらさっそく接続をしてみます。

そうすると以下のような画面が表示されます。
image

RemoteFX 3D ビデオ アダプターを追加すると、[仮想マシン接続コンソール] (VMConnect.exe) から接続ができなくなるようですね。
メッセージに表示されているようにリモート デスクトップ接続からは接続が可能です。

ちなみに SCVMM で接続をしようとすると以下のようなちょっとさびしい画面になります。
image

■リモートデスクトップで接続して確認

リモートデスクトップであれば接続することができます。

Windows Server 2008 R2 SP1 で統合サービスも更新がされていますのでインストールしました。

image?

image

Windows 7 SP1 Beta をインストールした環境で、RemoteFX 3D ビデオ アダプターを追加すると、ディスプレイ アダプターが
[Microsoft RemoteFX Graphics Device ?WDDM] に変更されます。
# 統合サービスはインストールしなくても変更はされていました。
image?

テストするための方法はこれから調べていきたいと思います。

Written by Masayuki.Ozawa

7月 17th, 2010 at 12:00 pm

Posted in Hyper-V

Dynamic Memory を試してみました。

leave a comment

続いては Dynamic Memory について調べてみたことをまとめたいと思います。

■Dynamic Memory の設定

Dynamic Memory の設定ですが、ゲスト OS のメモリを [動的] に設定することで使用することができます。
image

動的なメモリでは [スタートアップ RAM][最大 RAM] の 2 種類を設定します。
# Hyper-V でバッファーとして予約しておくべきメモリの割合についてはヘルプに記載がないので正確なことは言えないのですが、
 おそらく ホスト OS 用のメモリ予約なのかな~と思っています。

今回は複数のゲスト OS は起動していないので、[メモリの優先度] に関してはデフォルトのままとしています。

?

■ゲスト OS 起動後の状態

Dynamic Memory を設定して、ゲスト OS を起動してみます。

起動時には、[スタートアップ RAM] のサイズまでメモリが確保されます。
image

SP1 を適用すると Hyper-V マネージャー も表示が変更され、[現在のメモリ][使用可能なメモリ] が表示されるようになります。
こちらも 512 MB となっており、[スタートアップ RAM] まで確保されていることが確認できますね。
image

?

■動的なメモリ拡張を発生させる

それでは、この状態で Dynamic Memory による動的なメモリ拡張を発生させて見たいと思います。

てっとり早くメモリを消費させるため、[fsutil コマンド] を使用して、ファイルサイズの大きいテキストファイルを作ってみたいと思います。

fsutil file createnew c:test.txt 536870912

これで 512 MB のテキストファイルが作成できました。

それでは、このテキストファイルをメモ帳で開いてメモリの割り当てがどのようになるか確認してみたいと思います。image

実装メモリが [1.67 GB] に拡張されていることが確認できます。
Hyper-V マネージャーの [現在のメモリ] も拡張されています。
image

再起動をしないでも動的にメモリを拡張できるのが Dynamic Memory の機能となります。

同じファイルを別のメモ帳で開き、さらにメモリを使用してみたいと思います。
image

image

今回は、[最大 RAM] を [2048 MB] に設定していますので、メモリが [2 GB] で止まります。

こちらがホスト OS のタスクマネージャの内容です。
利用可能メモリが 1.3 GB 程度となっていることが確認できます。
image

?

?

■メモリを使用していたプログラムを終了する

大量のメモリを使用していたメモ帳を終了するとどうなるか試してみます。

閉じたタイミングで、Hyper-V マネージャーの [使用可能なメモリ] が増えていることが確認できます。
# 1.6 GB 程度が使用可能なメモリとなっています。
image

メモ帳を閉じてしばらく待つと、[現在のメモリ] が [スタートアップ RAM] のサイズまで縮小されます。
# 今回はメモ帳以外プログラムは実行していないため、最小まで縮小されています。
image?

一度拡張されたメモリですが、ゲスト OS の実装メモリから見ると縮小はされないみたいですね。
image

Hyper-V マネージャーの [現在のメモリ] が縮小されたタイミングで、ホスト OS の [利用可能] メモリが増えていますので、
ゲスト OS では [2GB] と表示されていても使用していたメモリが解放されていることが確認できます。
image

?

■パフォーマンスカウンター

Dynamic Memory のメモリの割り当て、解放ですがホスト OS のパフォーマンスモニターから確認することができます。

Balancer に関しては、[System Balancer] というインスタンスしか表示されていないのですが、VM に関しては起動している
ゲスト OS をインスタンスとして選択することができます。

VM の Added Memory / Physical Memory / Removed Memory を取得するとゲスト OS で動的にメモリの変化があった時の
状況を確認することができそうです。

オブジェクト カウンター 説明
Hyper-V Dynamic Memory Balancer Added Memory このカウンターは、VM に追加されたメモリの累積量を表します。
Available Memory このカウンターは、ノード上に残されたメモリ量を表します。
Averag Pressure このカウンターは、バランサー ノード上の平均負荷を表します。
Memory Add Operations このカウンターは、追加操作の合計数を表します。
Memory Remove Operations このカウンターは、削除操作の合計数を表します。
Removed Memory このカウンターは、VM から削除されたメモリの累積量を表します。
Hyper-V Dynamic Memory VM Added Memory このカウンターは、VM に追加されたメモリの累積量を表します。
Averag Pressure このカウンターは、VM の平均負荷を表します。
Current Pressure このカウンターは、VM の現在の負荷を表します。
Guest Visible Physical Memory このカウンターは、VM で表示されるメモリ量を表します。
Maximum Pressure このカウンターは、VM の最大負荷帯域を表します。
Memory Add Operations このカウンターは、VM に対する追加操作の合計数を表します。
Memory Remove Operations このカウンターは、VM に対する削除操作の合計数を表します。
Minimum Pressure このカウンターは、VM の最小負荷帯域を表します。
Physical Memory このカウンターは、VM の現在のメモリ量を表します。
Removed Memory このカウンターは、VM から削除されたメモリの累積量を表します。

?

アイドル時にはメモリを解放してくれるようなサービスが実行されているとメモリが有効活用できそうですね。
VDI 環境で、クライアントアプリを実行するような場合も有効に利用できそうですね。

Written by Masayuki.Ozawa

7月 13th, 2010 at 3:19 pm

Posted in Hyper-V

RemoteFX を試せませんでした…。

leave a comment

昨日より提供が開始された Windows Server 2008 R2 SP1 Beta ですが、昨夜に環境を構築し、今朝の通勤時間から
少し触り始めてみました。

SP1 で大きな機能としては、RemoteFXDynamic Memory の 2 つかと思います。

まずは、RemoteFX について調べて見た事をまとめて見たいと思います。

?

■ゲスト OS で RemoteFX を有効にするためには

SP1 を適用することで、Hyper-V のゲストで RemoteFX を有効にすることができるようになります。
RemoteFX の有効化ですが、ゲスト OS に [RemoteFX 3D ビデオ アダプター] を追加することで有効にできます。
image

ただし、SP1 を適用したらすぐに使えるようになるというわけではありません。
適用直後の状態で、ハードウェアの追加に項目が表示されるようになるのですがグレーアウトした状態となっています。

RemoteFX 3D ビデオ アダプターを追加するためには、リモート デスクトップ サービスの [リモート デスクトップ仮想化ホスト]
[RemoteFX] の役割をインストールする必要があります。
image?

この役割は VDI 環境を作成するときにインストールするものになります。
Windows Server 2008 R2 SP1 の RemoteFX ですが、VDI 環境での利用を意識しているみたいですね。

役割のインストールが終わると、ゲスト OS で RemoteFX 3D ビデオ アダプター が追加できるようになります。

image

?

■RemoteFX 3D ビデオ アダプターを追加して起動

それでは、RemoteFX 3D ビデオ アダプターを追加してみます。

ゲスト OS のハードウェアの追加をすると、アダプターの項目が追加されます。
image

モニターの最大数は [1 / 2 / 3 / 4] 、モニターの最大解像度は [1024×768 / 1280×1024 / 1600×1200 / 1920×1200] から
選択することが可能となっています。

アダプターを追加して [さぁ起動しよう] と起動したところ、私の環境では以下のエラーとなってしまいました…。
image?

今回の環境ですが、ThinkPad x201i を使っています。
この環境では Intel のオンボードのグラフィックアダプターが使われており、グラフィックボードを追加してはいません。
このような環境だと、RemoteFX を使ってゲスト OS を起動できないみたいなんですよね…。

今回発生したエラー [Microsoft Synthetic 3D Display Controller] を元に調べて見たところ、グラフィックボードのメモリとして、
最低でも 200 MB は必要みたいでした。
推奨のグラフィックボードは 1GB のメモリのようで、私の環境にはそのような環境は一台もありません。
ということで、今回は RemoteFX を試せませんでしたとなっている次第です。

?

■パフォーマンスカウンター

Remote FX 用のパフォーマンスカウンターがありましたので少しまとめてみました。

オブジェクト カウンター 説明
RemoteFX Hardware Available General Memory Displays RemoteFX available general memory
General Memory Pool Size Displays RemoteFX size of the general memory pool
Number of Active Sessions Displays RemoteFX number of active sessions
RemoteFX Software Capture Rate RemoteFX キャプチャ比率を表示します。
Compression Ratio RemoteFX 圧縮率を表示します。
Hardware Blt Displays ASIC Blt Processing Time
Hardware DmaIn Displays DmaIn Processing Time
Hardware DmaOut Displays ASIC DmaOut Processing Time
Hardware Encode Displays ASIC Encode Processing Time
Hardware Frame Count Displays RemoteFX Frame Count
Hardware Sessio ID Displays RemoteFX Session ID
Hardware Total Frame Count Displays ASIC Total Frame Count
Output Bytes RemoteFX 出力バイトを表示します。

?

?

ML115 G5 にグラフィックボードを追加すれば何とかなりそうな気もするのですが、すぐに環境を整備するのも難しそうです。

サーバー機ではグラフィックボードは最低限のものになっていることが大半だと思いますので、RemoteFX を使用する際には
気をつける必要がありそうですね。

Written by Masayuki.Ozawa

7月 13th, 2010 at 12:02 pm

Posted in Hyper-V

コマンドでライブ / クイックマイグレーションを実行

leave a comment

今日はコマンドで Live Migration / Quick Migration を実行する方法について。

[Quick Migration の実行]

まずは Quick Migration の実行から。
ゲスト OS のクラスターグループを移動することで QuickMigration を実行することができます。
Hyper-V のコマンドではなく、クラスターのコマンドを使ってグループを移動させることで実行することが可能です。

  • PowerShell (Windows Server 2008 R2)
    Import-Module FailoverClusters
    Move-ClusterGroup “<クラスターグループ名>” ?Node “<ノード名>”

    例)
    Import-Module FailoverClusters
    Move-ClusterGroup "SCVMM 2008R2-OWA-01 Resources" -Node "T60-01"

  • Cluster コマンド
    Cluster Group “<グループ名>” /MOVETO:”<ノード名>”

    例)
    Cluster Group "SCVMM 2008R2-OWA-01 Resources" /MOVETO:"T60-01"

  • SCVMM 2008 R2
    Move-VM -VM "<ゲスト OS 名>" -VMHost "<ノード名>" -UseCluster

    例)
    Move-VM -VM "2008R2-OWA-01" -VMHost "T60-01" ?UseCluster

?

[Live Migration の実行]

続いて Live Migration の実行です。
Live Migration ですが Cluster コマンドでは実行できないようです。
PowerShell と SCVMM 2008 R2 からは実行可能です。

  • PowerShell (Windows Server 2008 R2)
    Import-Module FailoverClusters
    Move-ClusterVirtualMachineRole "<クラスターグループ名>" -Node "<ノード名>"

    例)
    Import-Module FailoverClusters
    Move-ClusterVirtualMachineRole "SCVMM 2008R2-OWA-01 Resources" -Node "T60-01"

  • SCVMM 2008 R2
    Move-VM -VM "<ゲスト OS 名>" -VMHost "<ノード名>"

    例)
    Move-VM -VM "2008R2-OWA-01" -VMHost "T60-01"

?

今回は単純なコマンドベースで実行してみたのですが、WMI を使っても実行できるようですね。

[関連情報]
I want to know the wmi function for live migration as moveToNode perfrom quick migration
CLUSCTL_RESOURCE_VM_START_MIGRATION Control Code
ClusterResourceControl Function
ExecuteResourceControl Method of the MSCluster_Resource Class
CLUSCTL_RESOURCE_VM_START_MIGRATION Control Code
External Resource Control Codes
Internal Resource Control Codes

param
(
??? $Name = $(throw New-Object ArgumentNullException -Args "Name"),
??? $Target = $(throw New-Object ArgumentNullException -Args "Target")
)

# Get the desired virtual machine resource from the Failover Cluster WMI Provider
$Query = @"
??? Select * From MSCluster_Resource Where Type=’Virtual Machine’ And Name=’$Name’
"@

$Vm = Get-WmiObject -Namespace rootmscluster -Query $Query

# Tell the virtual machine resource to move.
try
{
??? $vm.ExecuteResourceControl(`
??????? 23068676, [System.Text.Encoding]::UNICODE.GetBytes($Target))
}
catch [System.Management.ManagementException]
{

Written by Masayuki.Ozawa

5月 27th, 2010 at 1:53 pm

Posted in Hyper-V

異なるベンダーの CPU のホスト OS 間でライブ / クイックマイグレーションを実行

one comment

以前、Twitter でつぶやいた内容をブログとしてまとめてみました。

私の家の検証環境は ThinkPad で 3 ノードクラスターを構築している環境があります。

ThinkPad では、CPU としては Intel の Core 2 Duo が使用されています。
image

それとは別に AMD の Phenom 9950 を使用している ML115 G5 もあります。
image?

同一のベンダーの CPU であれば、プロセッサ バージョンが異なった場合でも、ゲスト OS の設定で CPU の機能制限をすることで、
Live Migration / Quick Migration を実行することができます。
image?

この動作を全く別のベンダーの CPU で実行するとどうなるんだろうというのが今回の検証です。

私の検証環境に Intel のマシンとして、ML110 G5 がありこちらは Xeon を使用しているのですが、Core 2 Duo とさほど
機能的には変わらなかったので、ThinkPad と ML115 G5 間でゲスト OS を移行させてみたいと思います。

参考となりますが、Xeon の CPU 情報はこちらとなります。
image

?

[クラスターを構築]

Live Migration / Quick Migration をするためにはまずは、クラスターを構築しなくてはいけません。
ThinkPad は T60 と T61 を使って 3 ノード構成のクラスターを構築しているので、ここに ML115 G5 を追加させたいと思います。
# ML115 G5 は共有ディスクに接続済みです。

image
?

クラスターにノードを追加する前に [ノードの検証] を実行します。
すでにクラスターを構築しているノードと今回使用する ML115 G5 を選択して検証を実行してみます。
image

テスト項目としては全テストを実施するようにしています。
image

テストが終了するとレポートを表示することができるので、今回は CPU についてのレポートを確認してみたいと思います。
CPU については [同じプロセッサ アーキテクチャの検証] というテストで確認されるのですが、このテストではベンダーの
確認はしていないようです。
image?

そのため、異なるベンダーの CPU を使っていてもクラスターを構築することは可能です。image

image

SCVMM でも 4 ノードクラスターとして認識できています。
# クラスターとしてノード追加した後に追加したサーバーを最新の状態に更新すれば自動的にクラスター配下の
  サーバーとして認識されます。
image

それでは、Live Migration と Quick Migration を実行していきたいと思います。

?

[SCVMM で Live Migration を実行]

Live Migration ですが、SCVMM とフェールオーバークラスターマネージャーで実行することができます。
まずは SCVMM で Live Migration を実行したいと思います。

  • 今回、[2008R2-OWA-01] というゲスト OS を CSV 上に配置していますので、このゲスト OS であれば
    Live Migration をすることができます。
    # このゲスト OS は Intel の CPU の T61 で実行されています。
    対象のゲスト OS を右クリックして、[移行] をクリックします。
    image?
  • T61 から ML115 に移行をしようとすると、異なる CPU ということで移行対象として選択することができないようになっています。
    [t61-01] に監視ては単純にメモリが足りていないので移行ができないのですが、[t61-02] に
    関しては Live Migration で
    移行可能なサーバーとして選択ができるようになっていますね。
    image

SCVMM を使用している場合、異なるベンダーの CPU のホスト OS には移行ができないように制御がされていますね。

?

[フェールオーバー クラスター マネージャーで Live Migration を実行]

つづいて、クラスターの管理ツールで Live Migration を実行してみたいと思います。

  • 管理ツールで ML115 に Live Migration を実行してみます。
    image?
  • クラスターの管理ツールでも同様にエラーとなりますね。
    メッセージとしてはこちらの方がわかりやすい気がします。
    ?image

異なるベンダーの CPU 間では Live Migration の実行はできないようですね。
続いて Quick Migration を試してみたいと思います。

?

[フェールオーバー クラスター マネージャーで Quick Migration を実行]

Quick Migration の実行ですが、Live Migration が可能な場合は SCVMM からは実行できないようです。
# ライブ移行しかできないようです。

Live Migration が実行できる環境で、Quick Migration を実行するためにはクラスターの管理ツールで実行する必要があります。

  • ML115 に [クイック移行] をしてみます。
    image
  • 異なるベンダーの CPU を使用しているホスト間で Quick Migration を実行すると以下のエラーになります。
    Quick Migration は [保存→移動→開始] という流れになるのですが、この方法は使用できないようですね。
    [はい、仮想マシンをシャットダウンして移動します] をクリックするこちで [シャットダウン→移動→開始] という形で
    クラスターのノード間でゲスト OS を移行することが可能です。
    image
  • [はい、~] をクリックするとシャットダウンが開始され
    image
  • 他のノードに移動がされます。
    image?
  • ここまでの操作は、[クイック移行] で試してみましたが、[仮想マシンの移動] を実行することでも、Quick Migration を
    実行することができます。
    image
  • 移動をするとゲスト OS が保存され、移動先として指定したノードに移動がされます。
    image
  • 保存された状態を復元するのですが、失敗します。
    image
    image

@IT の以下の記事では Quick Migration が成功することもあるということが書かれているのですが、私の環境では NG でした。
Hyper-V実践サーバ統合術 第4回

保存されたままでは、元のノードでしか起動できませんのでこの状態で他のノードで起動したい場合は、[保存された状態を破棄する] で
保存状態を破棄して、解除する必要があります。
image

異なるベンダーの CPU 間でゲスト OS を Live Migration / Quick Migration を実行することはできないみたいですね。
ゲスト OS の CPU に関してはこのような技術情報もあるようで
す。
Partition Properties

今回は GUI から実行してみましたが、Live Migration / Quick Migration はコマンドでも実行することができます。
次の投稿でコマンドから Live Migration / Quick Misgration を実行する方法をまとめてみたいと思います。

Written by Masayuki.Ozawa

5月 24th, 2010 at 2:36 pm

Posted in Hyper-V