Hyper-V

Hyper-V（ハイパーV、はいぱーぶい）は、マイクロソフトが提供するハイパーバイザベースのx64向け仮想化システムで、1台のコンピュータ（サーバ）で複数の仮想機械を実現する。 開発当初は Windows Server Virtualization、又はコードネームである Viridian の名称が用いられた。 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で公開されるようになった。 64ビットのCPU ハードウェア支援付きの仮想化。仮想化オプションを含んだCPUで利用できる。とりわけIntel VTやAMD-V（SLAT機能必須） 最低2GBのメインメモリ（各々の仮想OSは自身のメモリを必要とする。そして現実的にはそれ以上必要になる） Windows 2008 Standard (64Bit) Hyper-V Coreはおよそ3 GB以上のディスク空き容量（インストール容量） Windows 2008 Standard (64Bit) Hyper-V full GUI productはおよそ8 GB以上のディスク空き容量（インストール容量） スタンドアロン版のHyper-VサーバーはWindows Server 2008のインストールの必要は無く、最小メモリは1 GBでディスク必要容量は2 GBである。 128個のゲストOSをサポートする。 32ビット (x86) および64ビット (x64) のゲストOSをサポートする。 全てのクライアントHyper-V、およびHyper-V Serverは同一環境である。 Intel 82443BX チップセット Windows Server 2008ゲストおよびWindows HPC Server 2008、Windows 7は1-、2-、4-wayの SMPに設定することが可能で, Windows Server 2003およびWindows Vistaでは1-、2-wayのSMP、SUSE Linux を除くその他のゲストOSは1-wayのみである 。他のゲストOS、例えばUbuntu Linux 6.06/6.10/7.10 あるいは Fedora 8/9 などはサポートされないが、これらが動作したという報告が上げられている 。 サードパーティー製のデスクトップ仮想化 (VDI) 製品が使用可能である。Citrix XenDesktopおよび Ericom PowerTerm WebConnectはデータセンターに設置されたデスクトップ仮想マシンをホストし集中管理する能力を提供する。デスクトップ仮想マシンはユーザーにフルスペックのPCデスクトップ環境を提供する。 Enlightened I/O付きのゲストOSおよびハイパーバイザーに対応したカーネル、例えばWindows Server 2008、Windows Vista SP1、およびCitrix XenServerや SISE から計画されているものなどは、ホストのリソースをよりよく利用できるだろう。ホストのリソースはVSCドライバーによってこれらのゲストOSからVSPにVMバスを通して直接通信される 。Non-enlightenedなOSはエミュレートされたI/Oで動作する 。 しかしながら、integration components（VSCドライバーを含む）はWindows Server 2003 SP2、Windows XP SP3、Windows Vista SP1、Linuxから利用でき、より高いパフォーマンスを獲得できる。 Xenを有効にしたLinuxゲストはHyper-Vによって準仮想化が可能である。現在、SUSE Linux Enterprise Server 10,11,12 x86およびx64 Editionがこの方法においてマイクロソフトから公式にサポートされているが、Xenを有効にしたLinuxはSUSE Linuxに限らず動作すると考えられる。2008年2月、レッドハットとマイクロソフトは、それぞれのOSにおけるハイパーバイザー相互運用性についての仮想化の契約にサインした。これによってRed Hat Enterprise Linux 5は公式にHyper-Vでサポートされる 。 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では再アクティベーション、およびプロダクトキーの再発行が必要となる。