Hyper-V のアーキテクチャ
Hyper-V は、特定の x64 版 Windows 用のハイパーバイザー ベースの仮想化テクノロジです。 ハイパーバイザーは仮想化のコアです。 これは、プロセッサ固有の仮想化プラットフォームで、複数の独立したオペレーティング システムで、1 つのハードウェア プラットフォームを共有できるようにします。
Hyper-V では、パーティションの観点からの分離がサポートされています。 パーティションは、ハイパーバイザーでサポートされている、オペレーティング システムが実行される論理的な分離の単位です。 Microsoft ハイパーバイザーには、Windows を実行する 1 つ以上の親 (つまりルート) パーティションが必要です。 仮想化管理スタックは、親パーティションで実行され、ハードウェア デバイスに直接アクセスできます。 ルート パーティションによって、ゲスト オペレーティング システムをホストする子パーティションが作成されます。 ルート パーティションは、ハイパーコール アプリケーション プログラミング インターフェイス (API) を使用して、子パーティションを作成します。
パーティションは、物理プロセッサにはアクセスできず、プロセッサの割り込みも処理しません。 代わりに、プロセッサの仮想表示により、パーティションは各ゲスト パーティションのプライベートな仮想メモリ アドレス領域で実行されます。 ハイパーバイザーは、プロセッサへの割り込みを処理し、それぞれのパーティションにリダイレクトします。 Hyper-V は、CPU で使用されるメモリ管理ハードウェアに依存せずに動作する、入出力メモリ管理ユニット (IOMMU) を使用することにより、さまざまなゲストの仮想アドレス空間の間でのアドレス変換を高速化することもできます。 IOMMU は、物理メモリのアドレスを子パーティションで使用されるアドレスに再マップするために使用されます。
また、子パーティションは他のハードウェア リソースに直接アクセスすることはできず、リソースの仮想表示が仮想デバイス (VDev) として表されます。 仮想デバイスへの要求は、VMBus またはハイパーバイザーによって、要求を処理する親パーティション内のデバイスにリダイレクトされます。 VMBus は、論理的なパーティションの間の通信チャネルです。 親パーティションは、子パーティションからのデバイスへのアクセス要求を処理するために、VMBus 経由で通信する仮想化サービス プロバイダー (VSP) をホストします。 子パーティションは、VMBus 経由で親パーティションの VSP にデバイス要求をリダイレクトする、仮想化サービス コンシューマー (VSC) をホストします。 このプロセス全体が、ゲスト オペレーティング システムに対して透過的です。
仮想デバイスでは、ストレージ、ネットワーク、グラフィックス、および入力サブシステム用に、Enlightened I/O と呼ばれる、Windows Server の仮想化機能を利用できます。 Enlightened I/O は、デバイスのエミュレーション レイヤーをバイパスして、直接 VMBus を利用する、高レベルな通信プロトコル (SCSI など) の特殊な仮想化対応実装です。 これより、通信はより効率的になりますが、ハイパーバイザーと VMBus に対応した対応ゲストが必要です。 Hyper-V の Enlightened I/O およびハイパーバイザー対応カーネルは、Hyper-V 統合サービスのインストールによって提供されます。 仮想サーバー (VSC) クライアント ドライバーなどの統合コンポーネントは、他のクライアント オペレーティング システムで使用することもできます。 Hyper-V では、Intel VT や AMD Virtualization (AMD-V) テクノロジなどによって提供される、ハードウェア支援による仮想化機能を含むプロセッサが必要です。
次の図は、Hyper-V 環境のアーキテクチャの概要を示しています。
用語集
- APIC: 高度なプログラム可能割り込みコントローラー。割り込み出力に優先順位を割り当てることができるデバイス。
- 子パーティション: ゲスト オペレーティング システムをホストするパーティション。子パーティションによる物理メモリやデバイスへのすべてのアクセスは、仮想マシン バス (VMBus) またはハイパーバイザー経由で提供されます。
- ハイパーコール: ハイパーバイザーと通信するためのインターフェイス。ハイパーコール インターフェイスによって、ハイパーバイザーにより提供される最適化へのアクセスが容易になります。
- ハイパーバイザー: ハードウェアと 1 つまたは複数のオペレーティング システムの間にあるソフトウェアのレイヤー。 ハイパーバイザーの主な目的は、パーティションと呼ばれる分離された実行環境を提供することです。 ハイパーバイザーは、基盤となるハードウェアへのアクセスを制御し調整します。
- IC: 統合コンポーネント。子コンポーネントが他のパーティションやハイパーバイザーと通信できるようにするコンポーネント。
- I/O スタック: 入出力スタック
- MSR: メモリ サービス ルーチン。
- ルート パーティション: 親パーティションと呼ばれることもあります。 デバイス ドライバー、電源管理、デバイスのホット アド/リムーブなどのマシン レベルの機能を管理します。 ルート (または親) パーティションは、物理メモリとデバイスに直接アクセスするパーティションです。
- VID: 仮想化インフラストラクチャ ドライバー。パーティション管理サービス、仮想プロセッサ管理サービス、メモリ管理サービスをパーティションに提供します。
- VMBus: パーティション間の通信や、アクティブな複数の仮想化パーティションを持つシステムでのデバイスの列挙に使用される、チャネル ベースの通信メカニズム。 VMBus は、Hyper-V 統合サービスと共にインストールされます。
- VMMS: 仮想マシン管理サービス。子パーティション内のすべての仮想マシンの状態を管理します。
- VMWP: 仮想マシン ワーカー プロセス。仮想化スタックのユーザー モード コンポーネント。 このワーカー プロセスは、親パーティション内の Windows Server 2008 インスタンスから、子パーティション内のゲスト オペレーティング システムに、仮想マシン管理サービスを提供します。 仮想マシン管理サービスは、実行中の仮想マシンごとに個別のワーカー プロセスを生成します。
- VSC: 仮想化サービス クライアント。子パーティション内に存在する合成デバイス インスタンス。 VSC では、親パーティション内の仮想化サービス プロバイダー (VSP) によって提供されるハードウェア リソースを利用します。 VSC は、VMBus 経由で親パーティション内の対応する VSP と通信し、子パーティションのデバイス I/O 要求を処理します。
- VSP: 仮想化サービス プロバイダー。ルート パーティションに存在し、仮想マシン バス (VMBus) 経由で子パーティションに合成デバイスのサポートを提供します。
- WinHv: Windows ハイパーバイザー インターフェイス ライブラリ。WinHv は、基本的に、パーティション化されたオペレーティング システムのドライバーとハイパーバイザーの間のブリッジです。これにより、ドライバーは、標準的な Windows の呼び出し規則を使用してハイパーバイザーを呼び出すことができます。
- WMI: 仮想マシン管理サービスは、仮想マシンを管理および制御するための、Windows Management Instrumentation (WMI) ベースの一連の API を公開します。