Hyper-V

概要

Virtual Server を置き換える形で、当初の Hyper-V は Windows Server 2008 の x64 エディションの1機能としてベータ版が出荷され、Windows Update 等を通して正式版が2008年6月26日に公開された。その後も Hyper-V は Windows Server 等の一機能として提供され続け、Windows Server 2008 R2 には Hyper-V 2.0 が、Windows Server 2012 には Hyper-V 3.0 が搭載されている。
当初、Hyper-V 機能はクライアントOSに搭載されなかったが、Windows 8 Pro、およびWindows 8 Enterprise 以降では Windows Virtual PC に代わって Hyper-V 機能が搭載された（基本的にx64版専用だがx86版はリモート管理ツールのHyper-V マネージャーのみ対応となる）。これらは従前のサーバー向けと区別して「クライアント Hyper-V」と呼称される。
Hyper-V の管理や設定変更には、Hyper-V 機能を有効にした Windows Server に直接ログオンして行う方法と、リモートで行う方法がある。リモート管理するには Windows Server、もしくはHyper-Vリモート管理ツールがインストールされたクライアントOS（Windows Vista、およびWindows 7）、またはx64版・x86版を問わずHyper-V マネージャーを有効にしたPro以上のエディションのWindows 8/8.1、およびWindows 10が必要になる。また、Core サーバの MMC ポインティングのリダイレクトによるリモートデスクトップもしくはリモートサーバを用いることができる。

無償版の扱い

Hyper-V の無償版として Hyper-V Server が存在する。これは、Hyper-V 機能のみを利用できるように大半の機能が制限された、Server Core をベースとした Windows Server である。
無償で提供されている Hyper-V Server はコマンドラインインタフェース (CLI) に限定されている。Hyper-V 機能を実行・管理するオペレーティングシステム の設定は、ログオン後に起動するシェルのコマンドを用いる。Hyper-V Server 2008 からはテキストベースのメニューが用意されているため、初期設定が行いやすくなっている。
最初の Hyper-V Server は、Windows Server 2008 のラインナップの1つとして、「Windows Server 2008 Hyper-V」の名称で2008年8月1日にリリースされた。その後、マイクロソフトは Windows Server 2008 R2のリリースに合わせて「Microsoft Hyper-V Server 2008 R2」を、Windows Server 2012 のリリースに合わせて「Microsoft Hyper-V Server 2012」をリリースしている。

アーキテクチャ

Hyper-Vはパーティションによる隔離をサポートする。パーティションは隔離を実現するための論理ユニットで、OSのハイパーバイザーによりサポートされる。ハイパーバイザーのインスタンスは少なくとも1個のWindows Server 2008が動作する親パーティションを持つ。仮想化スタックは親パーティションの中で動作し、ハードウェアへ直にアクセスする。親パーティションはゲストOSを動作させる子パーティションを生成する。親パーティションは子パーティションをhypercall APIを用いて作成する。hypercall APIはHyper-Vを操作するAPIである。
仮想化パーティションは物理プロセッサへのアクセスを持たず、割り込みをハンドルすることもない。そのかわり、プロセッサの仮想的なビューを持ち、ゲストの仮想アドレスで動作するということである。（ハイパーバイザーの設定に依存するが）丸ごとの仮想アドレス空間を必要としない。ハイパーバイザーはそれぞれのパーティションへ、プロセッサのサブセットを選択的に公開することができる。ハイパーバイザーはプロセッサの割り込みをハンドルし、論理同期割り込みコントローラ (SynIC) を使ってそれぞれのパーティションにリダイレクトする。Hyper-Vはゲスト側の仮想アドレス空間からのアドレス変換をIOMMU (I/O Memory Management Unit) を用いてハードウェアアクセラレーションできる。IOMMUはCPUにより使われるメモリ管理ハードウェアから独立して操作する。
子パーティションはハードウェアリソースを直アクセスしない。そのかわり、仮想デバイスという概念でリソースの仮想的なビューを持つ。仮想デバイスに要求すると、VMBusを経由して親パーティションのデバイスにリダイレクトされる。リクエストはそこで管理される。VMBusはパーティション間の通信を可能にする論理的なチャンネルである。レスポンスも同様にVMBusを経由してリダイレクトされる。もし親パーティションのデバイスが仮想デバイスでもあるなら、親パーティションやより遠くに、物理デバイスへのアクセスできるところまでリダイレクトされる。親パーティションは仮想化サービスプロバイダ (Virtualization Service Provider) を実行する。それはVMBusを接続し、子パーティションからのデバイスのアクセス要求をハンドルする。子パーティションの仮想デバイスは内部で仮想サービスクライアント (Virtualization Service Client) を実行する。それはVMBusを経由して親パーティションのVSPへリクエストをリダイレクトする。この全体のプロセスはゲストOSに透過的である。
仮想デバイスはEnlightened I/Oと名づけられたWindows Server Virtualizationの特徴をうまく利用することができる。Enlightened I/Oはストレージ、ネットワーク、グラフィックの各サブシステムやそれ以外をサポートする。Enlightened I/OはVMBusをダイレクトに利用できるSCSIに似た高レベル通信プロトコルを用いた仮想化向けの実装に特化しており、デバイスのエミュレーション層をバイパスすることができる。それにより、Hyper-V下のゲストOSは他のエミュレーションされたハードウェアを用いたOSに比べより高速に動作する。これにより通信はより効率的になるが、ゲストOSもEnlightened I/Oをサポートする必要がある。当初はWindows Server 2008、Windows Vista、SUSE Linux Enterprise Serverのみが標準でEnlightened I/Oをサポートしていたが、後からLinux用のドライバがGPLで公開されるようになった。

VHD ファイルの Virtual Server 2005 と Virtual PC 2004/2007 との互換性

Hyper-Vを始めとしてVirtual Server 2005、Virtual PC 2004/2007等の製品はゲストOSを1つのVHDファイルに保存することができる。このファイルはゲストOS全体を格納しているものの、他のファイルによって「アンドゥ情報」などを構成することもできる。
Virtual Server 2005、Virtual PC 2004/2007による古い VHDファイルは Windows 2008 Hyper-V Serverでコピーし、使用することができる。しかし、古い『Virtual PC 統合コンポーネント』は移転の際に取り除く必要がある。移転したゲストOSはHyper-Vを使って構成し、開始された後、仮想ハードウェアの変更が検出されるだろう。『 Hyper-V 統合サービス( 又は Integration Services ) 』（Virtual PC 統合コンポーネントに類似した機能）をインストールすることで5つのサービスの形でパフォーマンスを向上させる。ゲストOSのビデオ表示およびネットワークカードの新しいドライバも共にインストールされる。結果として最近のバージョンのWindowsでは再アクティベーション、およびプロダクトキーの再発行が必要となる。