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、Windows 11が必要になる。また、CoreサーバのMMCポインティングのリダイレクトによるリモートデスクトップもしくはリモートサーバを用いることができる。

### Hyper-V Server
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はゲスト側の仮想アドレス空間からのアドレス変換をInput/Output Memory Management Unit (IOMMU) を用いてハードウェアアクセラレーションできる。IOMMUはCPUにより使われるメモリ管理ハードウェアから独立して操作する。

子パーティションはハードウェアリソースを直アクセスしない。そのかわり、仮想デバイスという概念でリソースの仮想的なビューを持つ。仮想デバイスに要求すると、VMBusを経由して親パーティションのデバイスにリダイレクトされる。リクエストはそこで管理される。VMBusはパーティション間の通信を可能にする論理的なチャンネルである。レスポンスも同様にVMBusを経由してリダイレクトされる。もし親パーティションのデバイスが仮想デバイスでもあるなら、親パーティションやより遠くに、物理デバイスへのアクセスできるところまでリダイレクトされる。親パーティションは仮想化サービスプロバイダ () を実行する。それはVMBusを接続し、子パーティションからのデバイスのアクセス要求をハンドルする。子パーティションの仮想デバイスは内部で仮想サービスクライアント () を実行する。それは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 チップセット

## サポートされるゲストOS

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でサポートされる
。

## 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では再アクティベーション、およびプロダクトキーの再発行が必要となる。

## 脚注

### 注釈

### 出典

## 関連項目
*仮想化
*Microsoft Virtual Server
*Microsoft Virtual PC

## 書籍
*

## 外部リンク
*Hyper-V 仮想化 マイクロソフト公式技術情報
*Microsoft Hyper-V Server 2008
*Hyper-V Functional Specification 
*WinHEC 2006 Presentation Slides 
*Core Scenarios and Key features of Hyper-V 
*Windows Virtualization team blog 
*Microsoft Virtualization Microsoft
*Windows Server 2008 Hyper-V FAQ
*Dutch Windows Virtualization and Hyper-V team blog 
*Virtualization and Security: What does it mean for me? - Microsoft TechNet Video