2008年07月07日 08時00分 UPDATE
特集/連載

いまさら聞けないHyper-V【前編】正式リリース版で見るHyper-Vのアーキテクチャ

2008年6月26日にMicrosoftの最新サーバ仮想化ソフトウェア「Hyper-V」が正式にリリースされた。本稿では、注目を集めるHyper-Vの全体像を明らかにする。

[小丸芳弘,富士通]

Hyper-Vの概要

 Hyper-Vは、Microsoftが開発コード名「Viridian」として開発を続けてきた最新サーバ仮想化ソフトウェアである。これは、1つの物理ハードウェア(PCサーバ)上で複数の仮想サーバを同時に実行するソフトウェア技術である。古くからメインフレームでは当たり前のように利用されていた技術であるが、近年の急速なハードウェア性能の向上や環境問題に対する意識の高揚などで、PCサーバの世界でも注目され急速に拡大している。

 Hyper-Vは、最新のサーバOSである「Windows Server 2008」の基本機能の一部として提供されている。この点がHyper-Vの最大の特徴といっても過言ではない。機能面に限定すると先行するVMwareほど多機能ではないが、ハイパーバイザー型の本格的な仮想化プラットフォームを、慣れ親しんだWindowsの知識・操作で簡単に利用できる点はHyper-Vの大きな価値といえよう。

 Windows Server 2008にはHyper-V β版が含まれていたが、今回の正式リリースでアップデートプログラムが公開され、いよいよ正式にHyper-Vが使用できるようになった。

Hyper-Vの動作環境

 Hyper-Vを導入するハードウェアは、次の3つの条件を満たす必要がある。

  • x64プロセッサアーキテクチャ
  • CPUの仮想化機能(Intel VT、AMD-V)
  • データ実行防止機能(DEP:Data Execution Prevention)

 ここ数年間に販売されたサーバ(最新機種含む)であれば、ほぼこの条件を満たすと思われる。ただし、この条件を満たしていても過去の機種でHyper-Vを正式サポートするかどうかは、事前に確認が必要である。

Hyper-Vのアーキテクチャ

 仮想化技術はその実装方法により、「ホストOS型」と「ハイパーバイザー型」の2つに大別される。

ホストOS型

 ホストOS型の仮想化方式では、ホストOS上で動作するアプリケーションとして仮想化機能を実装する。代表的なホストOS型の仮想化ソフトウェアとして、「Microsoft Virtual Server」や「VMware Workstation」などが挙げられる(図1)。

ホストOS型 図1 ホストOS型

ハイパーバイザー型

 ハイパーバイザー型の仮想化方式では、ハードウェアとOS 間にハイパーバイザーと呼ばれる薄いソフトウェア層がある。ハイパーバイザーは、上位で動作するゲストOSに高い独立性を持ったパーティション分割機能を提供する(図2)。また、ホストOS型の仮想化実装に比べて、高いスケーラビリティとパフォーマンスを提供する。

 Hyper-Vはハイパーバイザー型に分類される。「VMware ESX」や「Xen」もハイパーバイザー型の仮想化ソフトウェアである。

ハイパーバイザー型 図2 ハイパーバイザー型

ハイパーバイザー型仮想環境の比較

 ハイパーバイザー型は、「モノリシック型」と「マイクロカーネル型」に分類できる(図3)。

モノリシック型とマイクロカーネル型 図3 モノリシック型とマイクロカーネル型

 モノリシック型は、デバイスドライバをハイパーバイザー層に実装する形態である。VMware ESXはモノリシック型を採用している。

 一方、マイクロカーネル型は、ハイパーバイザー層と特別な権限を持った「管理OS」を使用する。Hyper-VとXenはマイクロカーネル型に分類され、両者の構成は非常によく似ている。管理OSの部分をHyper-Vでは「親パーティション(Parent Partition)」と呼び、ゲストOSが実行される環境を「子パーティション(Child Partition)」と呼ぶ(※)。マイクロカーネル型では、ゲストOSで生じたすべてのI/Oは管理OSのデバイスドライバをそのまま利用して処理される。

※編注:それぞれ、Xenのドメイン0(Domain-0)とドメインU(Domain-U)に相当する。

 一概にどちらの実装が優れているかという議論は難しいが、モノリシック型で新しいハードウェアをサポートするには、ハイパーバイザー層での対応(修正)が必要になる。逆にマイクロカーネル型は、ハイパーバイザーとサードパーティー製のドライバが分離されている。管理OSに対応したドライバならばシステムに組み込むことができるため、新しいハードウェアへの対応が柔軟に行える点で優れている。Hyper-Vでは、Windows用のドライバが利用できる。

高速I/Oを実現するシンセティックデバイス

 次に、Hyper-VにおけるI/O高速化のアーキテクチャについて見てみよう。Hyper-VのゲストOSから見えているハードウェア構成を表1に示す。

表1 Hyper-Vの仮想マシンハードウェア構成(※)
BIOS: AMI-BIOS 080002, 2008/5/5(ACPI対応BIOS、PXEブート対応)
SMBIOS: version2.3
CPU: 物理CPU相当(CPUIDは偽装) 最大4CPU
メモリ: 最大64Gバイト
チップセット: Intel 440BX相当
IDE: Intel 82371 AB/EB PCI Bus Master IDE(DVDを含め最大4ドライブ)
VGA: 標準VGAグラフィックアダプタ
NIC(emulation): Intel 21140
COM: 最大2ポート
LPT、USB: サポートなし

※:仮想マシンのハードウェア構成(ゲストOSのmsinfo32で観測)

 ご覧の通り、よく知られたデバイスがエミュレーションされている。しかしながら、ハードウェアチップの挙動をソフトウェアでエミュレーションする実装では、十分な性能を出すのは難しい。このため、Hyper-Vでは親パーティションと子パーティションの間に「VMBus」と呼ばれるポイント・ツー・ポイントの高速インタフェースを用意。親パーティションと子パーティションにそれぞれインストールされた「VSP(Virtualization Service Provider)」「VSC(Virtualization Service Client)」と呼ばれる専用ドライバ間でストレージI/OやネットワークI/Oを実現する(図4)。このようなデバイスをシンセティックデバイス(Synthetic device)と呼んでいる。シンセティックデバイスは、エミュレーションを行わないため非常に高速である。

VMBus 図4 VMBusを使用したデバイスの高速化

 仮想マシンへのハードウェアの追加は少し分かりにくいため、説明しておこう。Hyper-Vの仮想マシンは、標準で1つのIDEコントローラーを持つ。このコントローラーには、(仮想)DVDドライブも含めて最大4つの(仮想)ディスクドライブを接続可能である。IntelのバスマスタIDEコントローラーをエミュレーションしている形だが、Hyper-Vの「統合サービス」をインストールするとフィルタドライバが組み込まれ、シンセティックデバイスとして高速動作するようになっている。もっと多くのディスクドライブを接続したい場合は、SCSIコントローラーを追加することができる。ただし、統合サービスをインストールしないとゲストOSからは認識されないので注意が必要である。

 なお、ゲストOSがWindows 2000 ServerあるいはWindows XP(x64版除く)ではSCSIコントローラーの追加はサポートされていない。特にWindows 2000 Serverでは、SCSIコントローラーを追加すると、ゲストOSで異常が発生しOSが起動しなくなることがある。

 ネットワークカード(NIC)の場合、「ネットワーク アダプタ」あるいは「レガシ ネットワーク アダプタ」を選択することになる。前者はシンセティックデバイスであり、統合サービスをインストールしないと認識されない。後者はI/Oエミュレーションを使用するタイプである。

仮想ディスクドライブの形式

 Hyper-Vでは、仮想マシンに接続できるディスクドライブとして、

  • パススルー接続形式
  • 仮想HDD(VHDファイル)形式

の2種類が利用できる。さらに仮想HDD形式には、

  • 容量固定型
  • 容量可変型
  • 差分ディスク型

の3種類がある。

 「パススルー接続形式」は、物理HDDを直接仮想マシンに割り当てる。割り当てる際は、物理HDDを親パーティション上でオフライン状態にしておく必要がある。また、物理HDDを丸ごと仮想マシンに割り当てる必要があり、パーティション単位の割り当てはできない。パススルー接続を使用すると、「スナップショット」が作成できないなど一部の機能が使用できないという制約があるが、直接HDDを参照するため最も高いI/O性能を得ることができる。

 次に仮想HDD形式の3種類を順番に説明しよう。「容量固定型」では、例えば30Gバイトの仮想HDDを作成すると約30GバイトのVHDファイルができる。実使用量が少なくても仮想HDD作成時に指定したディスク容量を占有してしまうが、パススルー接続に次いでI/O性能が高い。

 「容量可変型」では、30Gバイトの仮想HDDを作成しても実際の使用量が5Gバイトであれば、VHDファイルは約5Gバイトになる。このためディスク容量を大幅に節約することが可能だが、I/O性能はあまり良くない。また、使用量が増えれば最大約30GバイトまでVHDファイルのサイズが増加する。このとき物理的なディスク空き容量不足が発生すると、仮想マシンは自動的に一時停止状態に遷移させられる。突然ゲストOSが止まったように見えるのでディスクの空き容量管理には十分注意が必要である。なお、このとき運よく空き容量を確保できれば、ゲストOSを再開可能である。

 「差分ディスク型」では、マスターとなる仮想HDDを複数の仮想マシンで共有することができる。マスターの仮想HDDは読み取り専用となり、各ゲストOSからの変更はすべて各ゲストOS用の差分ディスクに保存される。

 Hyper-V導入の際は各ディスク形式の特徴をよく理解して、設計を行う必要がある。

仮想ネットワーク

 次に、Hyper-Vが提供する仮想ネットワーク機能について見てみよう。Hyper-Vでは仮想ネットワークとして以下の3種類を利用することができる。

  • プライベートネットワーク:仮想マシン間のみで通信するネットワーク
  • 内部ネットワーク:仮想マシン間に加えて親パーティションとも通信可能
  • 外部ネットワーク:仮想マシンは親パーティションおよび外部ネットワークと通信可能

 「外部ネットワーク」を構築するためには、物理NICが最低1つ必要である。なお、タグVLAN機能を使用することで、1つの通信路を論理的に複数のネットワークに分割することもできる。

外部ネットワーク 図5 外部ネットワーク構築例

 なお、外部ネットワークの設定を行うと、物理NICのネットワーク設定がクリアされる。DHCP環境ならば問題ないが、固定IPアドレスでリモート操作しながらHyper-Vの外部ネットワークを構成する場合、それ以降リモート操作できなくなることがあるので注意しよう。元の設定を引き継いでほしいところだが、これが仕様のようである。

 後編では、簡単にHyper-Vの導入方法を紹介した後、管理機能について説明する。

<筆者紹介>

小丸芳弘

富士通株式会社 パーソナルビジネス本部 Windows開発統括部 プロジェクト課長

入社以来、Windows OSの技術担当としてMicrosoftとのさまざまな共同開発に参加。現在はHyper-Vを主とした仮想化技術担当として「富士通Hyper-V仮想化センター」の活動に従事。



関連ホワイトペーパー

仮想化 | Windows Server 2008 | VMware | Xen