クライアントHyper-Vの使いこなし方などについては今後別記事で詳しく解説する。ここでは、Windows Virtual PCと比較した場合のWindows 8のHyper-Vの特長的な機能をいくつか解説しておく。
従来の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ファイルの利用例
巨大なVHDXファイルの利用例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 2.0(厳密にはWindows Server 2008 R2 Service Pack 1)で導入されたメモリ管理に関する新機能である。最初から固定的に各仮想マシンにメモリを割り当てるのではなく、需要に応じて必要なメモリだけを仮想マシンに与えたり、不要になった領域があれば回収してほかの仮想マシンに割り当てるといったことができる。サーバに比べて搭載メモリ量が少なかったり、ほかのアプリケーションとの関係でメモリの需要が大きく変動するクライアントPCでは、この動的なメモリ割り当ては重宝するだろう。
Hyper-V 2.0の動的メモリと比較すると、「スタートアップ RAM」の項目が追加されている点が異なる。通常は、スタートアップ時には多めにメモリを割り当てておき、定常運用時には必要最低限になるように設定しておく。以前のHyper-Vでは初期値と最大値だけを設定していたが、これだと仮想マシン起動時に徐々にメモリ使用量が増加するようなケースではページフォルトの発生数が多くなり、パフォーマンスが悪くなっていた。これに対してWindows 8/Windows Server 2012のHyper-Vでは、最初にまとまった量のメモリを割り当てることができるので無用なページフォルトを避けることができる。そして初期タスクがすべて終了して安定稼働する状態になったら、必要最低限のメモリだけを割り当てるようにして、メモリを有効活用できる。
 仮想マシンに対するメモリ割り当ての設定
仮想マシンに対するメモリ割り当ての設定以上、簡単にクライアントHyper-Vの機能について見てきた。Hyper-Vの各機能の使い方や活用方法などについては、今後別記事で詳しく解説する予定である。
Copyright© Digital Advantage Corp. All Rights Reserved.