SE の雑記

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

Archive for the ‘Hyper-V’ Category

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