第11回 クライアントHyper-V:Windows 8レボリューション(3/3 ページ)
従来はサーバOS向けに提供されていたHyper-Vが、クライアントOSであるWindows 8でも利用できるようになった。従来のWindows Virtual PCとの違いやサーバ版Hyper-Vとの違い、およびVirtual PCのディスク・イメージをクライアントHyper-Vで利用する方法を解説する。
クライアントHyper-Vの使いこなし方などについては今後別記事で詳しく解説する。ここでは、Windows Virtual PCと比較した場合のWindows 8のHyper-Vの特長的な機能をいくつか解説しておく。
VHDX新仮想ファイル形式
従来のWindows OSおよび仮想環境では、VHDという仮想ファイル形式をずっと利用していたが、Windows 8/Windows Server 2012のHyper-Vでは新しくVHDXという仮想ファイル形式が導入されている(VHD形式も引き続きサポートされる)。VHD形式と比較すると、最大サイズの拡大や内部ブロック・サイズの拡大、データ構造の調整によるアクセス速度の向上、耐障害性の向上などの機能強化が図られている。
ディスク・タイプ | VHD形式 | VHDX形式 |
---|---|---|
仮想ディスクの種類 | 固定/動的/差分/パス・スルー | 固定/動的/差分/パス・スルー |
仮想ディスクのサイズ | 3M〜2Tbytes | 3M〜64Tbytes |
内部ブロック・サイズ | 2Mbytes | 1M〜256Mbytes(デフォルトでは、動的ディスク=32Mbytes、差分ディスク=2Mbytes) |
内部セクタ・サイズ | 512bytes | 512/4096bytes |
パフォーマンス対策 | 特になし | ・4Kbytesセクタ(AFT)のサポート ・内部データ構造を4Kbytes境界に配置することにより、AFT形式のディスクでのパフォーマンス低下を抑止 |
耐障害性 | 特になし | メタデータのロギング |
利用可能なOS/環境 | Windows Virtual PC/Hyper-V | Windows 8/Windows Server 2012が必要 |
ユーザー独自のメタデータの埋め込み | − | ○(最大1024項目) |
ストレージ・デバイスのTrim/Unmapコマンド・サポート | − | ○(Windows 8がゲストOSの場合のみ利用される) |
仮想ディスクの作成/変換 | ディスクの管理ツール/diskpart/PowerShell | |
仮想ディスクのネイティブ・マウント/イジェクト | ディスクの管理ツール/diskpart/PowerShell/エクスプローラ | |
仮想ディスクの仕様比較 |
仮想マシンを利用する場合、通常は何Tbytesものサイズの仮想ディスクは使うことはないだろうが、例えばテストのために巨大なボリュームを作成してアプリケーションが正しく動作するかどうかをチェックするという用途に利用できる。Windows 8では最大64Tbytesまでの仮想ディスクを作成できるので、より大きなディスク環境のエミュレーションなどが可能になる(OSによってはもっと小さいサイズのディスクしか扱えない。「Windowsのディスク管理をマスターする」も参照)。
なお仮想マシンはUEFIブートには対応していないので、MBR方式の限界である2Tbytes以上のサイズの仮想ディスクを作成しても、データ・ボリュームとしてしか利用できない。またその場合、仮想ディスクはMBR形式ではなく、GPT形式で初期化/フォーマットしてしてマウントする必要がある(MBR方式では最大2Tbytesまでしかアクセスできない)。「2Tbytesの制限」の詳細や、UEFI、MBR、GPTといった用語については、連載「PCハードウェア強化ラボ」の第3回「2Tbytes超ディスクをデータ用ストレージとして利用する」を参照していただきたい。
VHDファイルは、仮想マシンだけでなく、物理マシン上でWindows OSをインストールしてVHDブートさせたり、データ用ディスクとしてVHDマウントさせて利用することもできたが、同様のことはVHDXファイルでも可能である。ただしブート用として利用する場合は、ブート・コードの制限により、128Gbytes以下でないと使えない。
巨大なVHDXファイルの利用例
64TbytesのVHDX仮想ディスクを作成して、実PCにマウントしたところ。64TbytesのNTFSボリュームを作成できた。このボリューム・サイズの場合、NTFSのクラスタ・サイズは16K/32K/64Kbytesのいずれかしか指定できない。4Kbytesクラスタにしたければ、最大サイズは16Tbytesにする必要がある。
(1)実ディスク。1Gbytesのハードディスク。
(2)80GbytesのVHD仮想ディスク。このOS(Windows 8 Pro)をインストールしてブートしている。
(3)64TbytesのVHDX仮想ディスク。GPT形式でフォーマットして利用している。
150以上のPowerShellコマンドレット
Windows 8/Windows Server 2012のHyper-VではPowerShellのサポートが強化され、Hyper-V用に150以上のコマンドレットが用意されている。Windows Server 2008 R2の場合とは異なり、Hyper-VとHyper-V管理ツールで可能な作業はほぼすべてPowerShellを使って自動化できるようになっている。
※Hyper-V関連のコマンドレットの表示
PS C:\> Get-Command -module hyper-v
CommandType Name ModuleName
----------- ---- ----------
Cmdlet Add-VMDvdDrive hyper-v
Cmdlet Add-VMFibreChannelHba hyper-v
Cmdlet Add-VMHardDiskDrive hyper-v
Cmdlet Add-VMMigrationNetwork hyper-v
Cmdlet Add-VMNetworkAdapter hyper-v
Cmdlet Add-VMNetworkAdapterAcl hyper-v
Cmdlet Add-VMRemoteFx3dVideoAdapter hyper-v
Cmdlet Add-VMScsiController hyper-v
Cmdlet Add-VMStoragePath hyper-v
Cmdlet Add-VMSwitch hyper-v
Cmdlet Add-VMSwitchExtensionPortFeature hyper-v
Cmdlet Add-VMSwitchExtensionSwitchFeature hyper-v
Cmdlet Checkpoint-VM hyper-v
Cmdlet Compare-VM hyper-v
Cmdlet Complete-VMFailover hyper-v
Cmdlet Connect-VMNetworkAdapter hyper-v
Cmdlet Connect-VMSan hyper-v
Cmdlet Convert-VHD hyper-v
Cmdlet Disable-VMEventing hyper-v
…(以下省略)…
※「vm*」という名前を含む仮想マシンを起動する
PS C:\> get-vm …仮想マシン一覧の取得
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
Server 2012 Ent Eval Running 0 2048 00:48:21 正常稼働中
vm1 Off 0 0 00:00:00 正常稼働中
vm2 Off 0 0 00:00:00 正常稼働中
Windows 8 Ent Eval Off 0 0 00:00:00 正常稼働中
XPSP3 Running 0 1024 00:49:57 正常稼働中
PS C:\> get-vm vm* | start-vm …仮想マシンを起動する
PS C:\>
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
Server 2012 Ent Eval Running 0 2048 00:41:18 正常稼働中
Windows 8 Ent Eval Off 0 0 00:00:00 正常稼働中
XPSP3 Running 0 1024 00:42:54 正常稼働中
PS C:\>
リモート管理
Windows 7のWindows Virtual PCと違い、Hyper-Vでは管理ツールやPowerShellなどを使って、リモートからも管理できる。また、Hyper-Vではユーザーがログオフしても仮想マシンの実行は継続されるため、実験的な用途だけでなく、サーバ上のサービスのように、常にバックグラウンドで動作させるような用途でも活用できる。
Hyper-Vの管理ツール
これはHyper-Vの仮想マシンを管理するHyper-Vマネージャ。リモートのHyper-Vのサービスも管理できる。32bit版のWindows 8では、Hyper-Vのサービスは利用できないが、このツールを使ってリモートのHyper-Vを管理することは可能である。見た目は以前のHyper-V 2.0とあまり違いはないが、Windows 8/Windows Server 2012のHyper-Vでは仮想ディスクの更新の仕組みなどが改良されたため、例えばスナップショットの作成や削除といった操作は以前よりも素早くなっており、仮想マシンを停止しなくてもマージや削除ができる(連載「仮想PCで学ぶWindowsシステム管理」の第6回「Hyper-Vのスナップショット機能を使う」参照)。
(1)仮想マシンの一覧。Windows Virtual PCよりも仮想マシン全体の様子が分かりやすい。
(2)実行中の仮想マシンの画面は、リモートからでも「Hyper-V仮想マシン接続」ツールを使って操作/確認できる。
動的メモリ管理
動的メモリ(またはダイナミック・メモリ)は、Hyper-V 2.0(厳密にはWindows Server 2008 R2 Service Pack 1)で導入されたメモリ管理に関する新機能である。最初から固定的に各仮想マシンにメモリを割り当てるのではなく、需要に応じて必要なメモリだけを仮想マシンに与えたり、不要になった領域があれば回収してほかの仮想マシンに割り当てるといったことができる。サーバに比べて搭載メモリ量が少なかったり、ほかのアプリケーションとの関係でメモリの需要が大きく変動するクライアントPCでは、この動的なメモリ割り当ては重宝するだろう。
Hyper-V 2.0の動的メモリと比較すると、「スタートアップ RAM」の項目が追加されている点が異なる。通常は、スタートアップ時には多めにメモリを割り当てておき、定常運用時には必要最低限になるように設定しておく。以前のHyper-Vでは初期値と最大値だけを設定していたが、これだと仮想マシン起動時に徐々にメモリ使用量が増加するようなケースではページフォルトの発生数が多くなり、パフォーマンスが悪くなっていた。これに対してWindows 8/Windows Server 2012のHyper-Vでは、最初にまとまった量のメモリを割り当てることができるので無用なページフォルトを避けることができる。そして初期タスクがすべて終了して安定稼働する状態になったら、必要最低限のメモリだけを割り当てるようにして、メモリを有効活用できる。
仮想マシンに対するメモリ割り当ての設定
動的メモリとは、仮想マシンに割り当てるメモリを実行時に動的に変更する機能。これがないと、同時に実行する予定の仮想マシン数と物理的な空きメモリ容量に応じて、事前にメモリ割り当てを慎重に計画しなければならない。Windows 8/Windows Server 2012のHyper-Vでは、初期値とは別に上限と下限値を設定できるようになっている。これにより、例えば最初に1Gbytes割り当てて仮想マシンを起動するが、メモリの需要が少なければ512Mbytesまで減少させるといった使い方ができる。起動時だけ多くのメモリを要求するような仮想マシンの実行に向いている。なお動的メモリが有効なゲストOSは限られている。この例ではWindows XP SP3で動的メモリを有効にしているが、Windows XPでは動的メモリがサポートされないため、実際にはスタートアップのサイズのまま固定的に割り当てられることになる。
(1)起動時に割り当てるメモリ・サイズ。
(2)最小メモリ・サイズ。初期値と同じかそれ以下に設定できる。初期値より大きくはできない。
(3)最大メモリ・サイズ。デフォルトでは1Tbytesになっているが、実際には物理空きメモリ・サイズによって制限される。
(4)空きメモリ・サイズがここで指定した割合を下回ると、仮想マシンに対してメモリが追加で割り当てられ、上回ると不要な分が解放される。
以上、簡単にクライアントHyper-Vの機能について見てきた。Hyper-Vの各機能の使い方や活用方法などについては、今後別記事で詳しく解説する予定である。
Copyright© Digital Advantage Corp. All Rights Reserved.