Contents
Hyper-Vとは
Hyper-V とは Windows Server 2008 から標準搭載されている Microsoft 社製のハイパーバイザ型仮想化ソフトウェア(以下、仮想化ソフトウェアを “VMM” と表記する)だ。
より初歩的な概要や導入手順などは以下の記事で紹介している。
しかし、仮想化を学んだことがあるのであれば、Hyper-V がハイパーバイザ型であることに疑問を覚えるかもしれない。その疑問の原因は Hyper-V のインストールを Windows Server(あるいは Client)上で行うという点にある。
実際よくあるハイパーバイザ型の解説では、ハードウェアレイヤのすぐ上にハイパーバイザが存在する図が多い。ハイパーバイザの上には仮想マシンだ。
Hyper-V を Windows にインストールするということはハードウェアの上には Windows がいて、その上に仮想マシンがいるイメージになる。つまり、ホストOS型のイメージだ。
Hyper-V はホストOS型なのか?
何度も述べているが、Hyper-V は「ハイパーバイザ型」でありホストOS型ではない。
まず最初に誤解を正すとすれば、Hyper-V をインストールした Windows は、インストール後に自分自身も仮想マシンになっている。つまり ハードウェアの上には Hyper-V というハイパーバイザが存在し、その上に仮想マシンとして Windows が1つだけ存在する。それが Hyper-V のインストール直後の正しい状態だ。
この時点で「Hyper-V ≠ ホストOS型」という事が理解できたと思うが、次に出てくる疑問は「なぜインストール時の Windows を仮想マシンとして残す必要があるのか」だ。結論を言うと、それは Hyper-V が「マイクロカーネル型」だからである。
「マイクロカーネル型」というのはハイパーバイザ型VMMの種類みたいなものだ。ハイパーバイザ型のVMMには大きく「モノリシックカーネル型」と「マイクロカーネル型」が存在する。
下図は Microsoft のサイトから引用したものだが、アカデミックに勉強してきた場合、下図の「モノリシック ハイパーバイザ」と記載されている図こそがハイパーバイザ型のイメージだろう。モノリシック ハイパーバイザで有名なのが「VMware vSphere」だ。一方で Hyper-V は「マイクロカーネル ハイパーバイザ」と呼ばれる方式を採用している。
ハイパーバイザ型と一口に言ってしまっても、その実大きく2種類の方式に大別されるということだ。そして、Hyper-V をホストOS型と勘違いしてしまうのは、ハイパーバイザ型の説明を、その代表であるモノリシックカーネルの説明で終始してしまう技術書が多いからである。
仮想化におけるマイクロカーネル型とは
先述したが、Hyper-V をインストールしたホストの Windows は、Hyper-V インストール後に自分自身も仮想マシンになっている。それがマイクロカーネル型の特徴だ。
取り急ぎ結論を述べたが、恐らくあの結論では納得がいかないだろう。質問を変えると、「なぜマイクロカーネル型の VMM はインストール時の Windowsを仮想マシンとして残すのか」となる。
その答えは、「リソースを管理するための仮想マシンとして利用するから」だ。
リソースを管理する仮想マシン
マイクロカーネル型ではそのVMM 構築時に使用した最初の仮想マシンのことを「管理OS」と表現する。また、上図を見てもわかるように、Hyper-V では管理OSのことを「親パーティション」、それ以外の仮想マシンのことを「子パーティション」と呼称している。同じくマイクロカーネル型を採用している Xen の場合は管理OSのことを「dom0(ドメイン0)」と呼称する。
ホストOS型ではないので、親パーティションを「ホストOS」と表現することは稀だが、「Hyper-Vホスト」はよく見かける表現だ。
とらえ方によっては、管理OSの仕組みは冗長に思えるかもしれない。モノリシックカーネル型であれば、管理OSなど無くてもハイパーバイザがリソースを管理しているからだ。
管理OSがリソースを管理しているのであれば、マイクロカーネル型のハイパーバイザは何もしていないのかと思われるかもしれないが、実際ほとんど何もしていない。
しかし、それはマイクロカーネル型の利点の1つだ。なぜハイパーバイザが何もしないことが利点になるのかを、ハイパーバイザ型の2つの利点の中で解説する。
Windows ハイパーバイザがやっていること
ハイパーバイザはほとんど何もしていないと前述したが、勿論何もしていないわけではない。
Windows ハイパーバイザーはプロセッサとメモリのみを管理し、ディスクやネットワークデバイスは、ホスト OS のデバイスドライバーが管理するように設計されています
MCP教科書 WIndows Server 2008 R2 対応 Hyper
マイクロカーネル型の利点① デバイスドライバがそのまま利用できる
Hyper-V のハイパーバイザカーネルは1MB強と非常に小さく、デバイスドライバや仮想スイッチなどのコンポーネントはすべて管理OSである親パーティション内に実装される。
では、ハイパーバイザだけですべて制御しているモノリシックカーネル型に比べて、ハイパーバイザ+管理OSが必要なマイクロカーネル型が劣っているかというと、そういうわけではない。Microsoft が Hyper-V を Windows に搭載する以前から、モノリシックカーネル型の vSphere は広く利用されていた。つまり、Microsoft はあえてマイクロカーネル型を採用したということになる。
Microsoft がマイクロカーネル型を採用した理由は主に2つだ。
1つは、デバイスドライバがそのまま利用できるということ。ハードウェアベンダ(ここではサーバを開発しているベンダ)は、そのハードウェアの説明書といえるデバイスドライバを、OSやハイパーバイザごとに作成する必要がある。
例えばサーバに Windows Server 2016 をインストールしたければ、ハードウェアベンダが Windows Server 2016 用のデバイスドライバを提供していなければ Windows Server 2016 はハードウェアを扱うことができない。これはOSの代わりにハードウェアにアクセスするハイパーバイザも同じで、例えば vSphere 用のデバイスドライバをハードウェアベンダが提供していなかった場合、そのサーバで vSphere を構築することは不可能だ。
複数のデバイスドライバの開発には大変な工数がかかるため、ハードウェアベンダによっては「Windows Server 2016」用のデバイスドライバは提供するが「vSphere 6.5」用のデバイスドライバは提供しないということもある。
しかしマイクロカーネル型である Hyper-V は、ハードウェアベンダが Windows Server 用のデバイスドライバさえ提供していれば構築が可能だ。
ハードウェアベンダからすれば「Hyper-V 用のデバイスドライバ」を開発しなくてすむし、ユーザからすれば「デバイスドライバが提供されていないため使いたい機器が使えない」という状況を回避することが出来る。
マイクロカーネル型の利点② 管理が容易
もう1つの理由は管理性だ。ここでは Windows Server にスコープしてお話しするが、先述のとおり、Hyper-V の管理OSは「役割と機能の追加」の Hyper-V にチェックが入っている以外は通常の Windows Server と同じだ。
「Hyper-V マネージャー」も MMCフレームワークで作成されており、Windows Server に触れたことのある人間であれば直感的に操作することが出来る。
そのため、操作にほとんど悩まなくて済むうえ、トレーニングも最低限で済む。
まとめ
- Hyper-V は「マイクロカーネル ハイパーバイザ」
- マイクロカーネル型最大の利点は管理OSのデバイスドライバを利用できること