Hyper-V のアーキテクチャ (Project Server 2007)

 

トピックの最終更新日: 2009-03-25

Hyper-V は、64 ビット版の Windows Server 2008 オペレーティング システムで使用できるハイパーバイザ ベースの仮想化テクノロジです。ハイパーバイザは、プロセッサ固有の仮想化プラットフォームで、個別の複数のオペレーティング システムで 1 台のハードウェア プラットフォームを共有できるようにします。

Hyper-V はパーティションの分離をサポートします。分離された論理ユニットであるパーティションはハイパーバイザによってサポートされ、このパーティションでオペレーティング システムが実行されます。Microsoft ハイパーバイザでは、少なくとも 1 つの親パーティション (ルート パーティション) が存在し、64 ビット版の Windows Server 2008 オペレーティング システムが実行されている必要があります。親パーティションで実行される仮想化スタックは、ハードウェア デバイスに直接アクセスします。ルート パーティションでは、ゲスト オペレーティング システムをホストする子パーティションが作成されます。ルート パーティションで子パーティションが作成されるとき、ハイパーコール アプリケーション プログラミング インターフェイス (API) が使用されます。

パーティションは、物理プロセッサにアクセスすることができず、プロセッサへの割り込みを処理することもできません。代わりに、パーティションにはプロセッサの仮想的なビューがあります。また、パーティションは各ゲスト パーティション専用の仮想メモリ アドレス領域で実行されます。ハイパーバイザは、プロセッサへの割り込みを処理し、これらの割り込みを各パーティションへリダイレクトします。Hyper-V では、ハードウェア アクセラレータを利用することにより、さまざまなゲスト仮想アドレス空間どうしのアドレス変換を高速化できます。このとき、IOMMU (Input/Output Memory Management Unit) が使用されます。IOMMU は、CPU によって使用されるメモリ管理ハードウェアとは独立して動作します。IOMMU を使用すると、子パーティションで利用されるアドレスに物理メモリ アドレスを再マッピングできます。

子パーティションも、他のハードウェア リソースに直接アクセスすることはできません。子パーティションは、リソースの仮想ビューに仮想デバイス (VDev) として表示されます。仮想デバイスへの要求は、VMBus またはハイパーバイザを経由して親パーティション内のデバイスにリダイレクトされ、そこで要求が処理されます。VMBus は論理内部パーティション通信チャネルです。親パーティションは仮想サービス プロバイダ (VSP) をホストします。VSP は、VMBus を経由して通信し、子パーティションからのデバイス アクセス要求を処理します。子パーティションは、仮想サービス コンシューマ (VSC) をホストします。VSC は、デバイス要求を VMBus 経由で親パーティション内の VSP に リダイレクトします。このプロセス全体は、ゲスト オペレーティング システムに対して透過的です。

仮想デバイスでは、"Enlightened I/O" と呼ばれる Windows Server 仮想化機能を、記憶域、ネットワーク、グラフィック、入力サブシステム用に使用することもできます。Enlightened I/O は、直接 VMBus を利用する SCSI などの高レベルの通信プロトコルに特化した仮想化対応実装です。このようなプロトコルは、どのようなデバイス エミュレーション層でもバイパスします。これにより通信は効率化されますが、ハイパーバイザと VMBus に対応する Enlightened I/O 用のゲスト オペレーティング システムが必要となります。Hyper-V Enlightened I/O とハイパーバイザ対応のカーネルは、Hyper-V 統合サービスをインストールすると提供されます。仮想サーバー クライアント (VSC) ドライバを含む統合コンポーネントは、他のクライアント オペレーティング システムでも利用できます。Hyper-V には、ハードウェア支援による仮想化が可能なプロセッサ (Intel VT または AMD Virtualization (AMD-V) テクノロジなどによって提供される) が必要です。

Hyper-V アーキテクチャの概要

次の図は、Windows Server 2008 上で実行される Hyper-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 ハイパーバイザ インターフェイス ライブラリ — 基本的に、パーティション分割されたオペレーティング システムとハイパーバイザ間のブリッジとして機能します。これにより、ドライバは、標準の Windows 呼び出し規約を使用してハイパーバイザを呼び出すことができます。

  • WMI : 仮想マシンの管理と制御を行うための Windows Management Instrumentation (WMI) ベースの API のセットを公開する仮想マシン管理サービス。