SE の雑記

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

Archive for the ‘Hyper-V’ Category

SCVMM 2012 Beta をインストール

without comments

SCVMM 2008 R2 SP1 の提供の少し前に SCVMM 2012 Beta の提供が開始されました。
今回のバージョンが最初の Public Beta になるみたいですね。

System Center Virtual Machine Manager 2012 Beta ? Evaluation

まずは、簡単にインストールの手順をまとめてみたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 26th, 2011 at 9:49 pm

Posted in Hyper-V,System Center

Tagged with

SCVMM 2008 R2 SP1 RC を RTM にアップグレード

without comments

先日 SCVMM 2008 R2 with SP1 の提供が開始されました。

その少し前には SCVMM 2012 Public Beta も提供され、SCVMM の環境をどうしようかと悩ましい毎日です。

まずは、自宅の検証環境の SCVMM 2008 R2 SP1 RC を RTM にアップグレードしてみたいと思います。

SCVMM 2008 R2 NonSP から SP1 へのアップグレードについては以下に技術情報が公開されています。
Upgrading to VMM 2008 R2 Service Pack 1 from VMM 2008 R2

Read the rest of this entry »

Written by Masayuki.Ozawa

3月 26th, 2011 at 2:48 pm

Posted in Hyper-V,System Center

Tagged with

Hyper-V 上の Windows Server 2008 R2 でリモート オーディオ再生を使用

with 3 comments

タイトルは Hyper-V 上のとしていますが、物理環境で Windows Server 2008 R2 を実行している場合も同じになります。

リモートデスクトップにはオーディオリダイレクトの機能があります。
image
image

オーディオリダイレクトをすることで以下のように、接続先で再生したマルチメディアファイルの内容をリモートデスクトップの接続元のスピーカーで再生することができます。

image

リモート オーディオ再生が有効な場合、リモートデスクトップで対象の端末に接続した場合、タスクトレイのスピーカーマークが有効な状態となり、接続をした端末で再生したマルチメディアファイルの内容を接続元で再生することが可能となります。
image

VDI などでよく使われるシナリオですね。

Read the rest of this entry »

Written by Masayuki.Ozawa

1月 22nd, 2011 at 2:24 pm

Hyper-V 2.0 のスナップショットを一から勉強

with 2 comments

今日は Hyper-V 2.0 のスナップショットを改めて一から勉強していきたいと思います。

■Hyper-V のゲスト OS の基本的な構成

?
まずは、Hyper-V のゲスト OS の基本的な構成のおさらいを。
Hyper-V のゲスト OS を作成すると以下のファイルが作成されます。

拡張子 内容
VHD ゲスト OS で使用している仮想ハードディスクファイル
XML 構ゲスト OS の構成が記載されている構成ファイル
BIN ゲスト OS の保存時に使用される、メモリ情報を保存するファイル
ゲスト OS に割り当てられているメモリと同一量のファイルが作成される
VSV ゲスト OS の保存時に使用される、CPU のプロセス状態を保存するファイル

※ 起動時にファイルが作成されます。
ファイルの構成は以下のようになります。
# SCVMM 2008 R2 で作成した時の状態です。
?image

■スナップショットを取得

?
それではスナップショットを取得してみます。
スナップショットを取得すると、スナップショットツリーが作成されます。
image
スナップショットを取得するとファイルの構成は以下のようになります。
image
スナップショットは [差分 HD] が使用されますので、スナップショットを取得したタイミングで [AVHD ファイル] が作成されます。
現在の状態は、作成された AVHD ファイルが使用されるようにゲスト OS が構成されることになります。
# スナップショット 1 はルートのスナップショットツリーになりますので、スナップショット 1 で設定されている、仮想ハードディスクは 差分ではなく、オリジナルの VHD ファイルが設定された状態になっています。
また、[Shanshots] ディレクトリが作成され、その中に構成ファイル等が作成されます。
この時に BIN と VSV も Snapshots ディレクトリに作成されるのですが、このファイルがスナップショット取得時のメモリと CPU の内容になります。
もう一度スナップショットを取得すると以下の構成になります。
新規に取得したスナップショットが以下の図で [スナップショット 2] として記載しているものになります。
仮想ハードディスクに関しては新規に AVHD が作成され、新規に作成された AVHD が現在の状態で使用されます。
それまで使用していた AVHD が取得したスナップショットで設定されている、仮想ハードディスクになります。
スナップショットが取得されるまでに使用されていた差分の仮想ハードディスクと、CPU / メモリの状態を復元することで、スナップショット取得時点の状態が復元されることになります。
image
スナップショットツリーの状態はこのようになります。
image
このファイル構成は以下のようなスナップショットツリーを作成した場合でも変わりません。
image

■スナップショットの削除と結合について

?
以下のようなスナップショットを取得した状態にします。
image
この場合、各スナップショットと、AVHD の関係は以下のようになります。
一階層目のスナップショットに関しては、VHD + AVHD となり、2 階層目以降は、AVHD + AVHD となります。
現在は、スナップショット 1-3-1 の下になっているので、ディスクに関しては、1-3-1 の AVHD を親としてた差分ディスクが使用されています。
image
ここで、[スナップショット 1-3-1] を削除してみます。
スナップショットを削除すると、このようなスナップショットツリーとなります。
image
スナップショットを削除すると、スナップショット 1-3-1 で使用されている BIN / VSV とディレクトリが削除されます。
ただし、現在の状態の VHD に関しては、OS が起動中のため構成に変化はありません。
image

スナップショットを削除後にゲスト OS をシャットダウン (停止でも) すると AVHD の結合 (マージ) 処理が実行されます。
# ゲスト OS 上で再起動 / リセットでは結合は実行されません。
image
今回の場合では、親ディスクとして使用していたスナップショット 1-3-1 の AVHD にそれまで (現在) 使用していた AVHD の内容がマージされます。
そうするとスナップショットの状態は以下のようになります。
image?
スナップショットを削除した場合、一度シャットダウンをしないと結合が行われないという点がスナップショット削除時の注意点ですね。
差分ハードディスクの内容が多いと、シャットダウン時の結合処理にもかなりの時間がかかりますので。
スナップショットのディスクの親子関係ですが、スナップショットの設定を開いて、対象のディスクの [検査] を実行することで確認できます。
image
image
設定はスナップショットだけでなく、スナップショットツリーで [現在] となっているものに対しても確認ができます。
image?
現在起動中の状態がどのディスクを使って起動されているかを確認することも可能です。
一から勉強しようと思ったのですが、あまりうまくまとめられていないですね…。
あらためてスナップショットを勉強してみたのですが、差分ハードディスクの状態を文章にまとめることが難しく、きちんと理解できていないんだな~と実感しました。
ルートを 2 つにしてみたり、スナップショットツリーの途中を消した場合の動作に関しても勉強する必要があると思いますので、これに関しては別の投稿としてまとめていきたいと思います。

Written by Masayuki.Ozawa

9月 26th, 2010 at 3:03 pm

Posted in Hyper-V

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

without comments

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 設定について

without comments

[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 を設定

without comments

昨日の 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