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を導入するハードウェアは、次の3つの条件を満たす必要がある。
ここ数年間に販売されたサーバ(最新機種含む)であれば、ほぼこの条件を満たすと思われる。ただし、この条件を満たしていても過去の機種でHyper-Vを正式サポートするかどうかは、事前に確認が必要である。
仮想化技術はその実装方法により、「ホストOS型」と「ハイパーバイザー型」の2つに大別される。
ホストOS型の仮想化方式では、ホストOS上で動作するアプリケーションとして仮想化機能を実装する。代表的なホストOS型の仮想化ソフトウェアとして、「Microsoft Virtual Server」や「VMware Workstation」などが挙げられる(図1)。
ハイパーバイザー型の仮想化方式では、ハードウェアとOS 間にハイパーバイザーと呼ばれる薄いソフトウェア層がある。ハイパーバイザーは、上位で動作するゲストOSに高い独立性を持ったパーティション分割機能を提供する(図2)。また、ホストOS型の仮想化実装に比べて、高いスケーラビリティとパフォーマンスを提供する。
Hyper-Vはハイパーバイザー型に分類される。「VMware ESX」や「Xen」もハイパーバイザー型の仮想化ソフトウェアである。
ハイパーバイザー型は、「モノリシック型」と「マイクロカーネル型」に分類できる(図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用のドライバが利用できる。
次に、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)と呼んでいる。シンセティックデバイスは、エミュレーションを行わないため非常に高速である。
仮想マシンへのハードウェアの追加は少し分かりにくいため、説明しておこう。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では、仮想マシンに接続できるディスクドライブとして、
の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つの通信路を論理的に複数のネットワークに分割することもできる。
なお、外部ネットワークの設定を行うと、物理NICのネットワーク設定がクリアされる。DHCP環境ならば問題ないが、固定IPアドレスでリモート操作しながらHyper-Vの外部ネットワークを構成する場合、それ以降リモート操作できなくなることがあるので注意しよう。元の設定を引き継いでほしいところだが、これが仕様のようである。
後編では、簡単にHyper-Vの導入方法を紹介した後、管理機能について説明する。
入社以来、Windows OSの技術担当としてMicrosoftとのさまざまな共同開発に参加。現在はHyper-Vを主とした仮想化技術担当として「富士通Hyper-V仮想化センター」の活動に従事。