ハイパーバイザ

コンピュータ用語における、ハイパーバイザ (hypervisor) とは、コンピュータの仮想化技術のひとつである仮想機械（バーチャルマシン）を作成および実行するソフトウェアである。仮想化モニタや仮想化オペレーティングシステムと呼ばれることもある。 IBMが「オペレーティングシステム (OS)」と呼んだためにその用語が普及したが、一般にはOSのことをスーパーバイザとも言う。「ハイパー」という語は、「スーパー」のさらに上という意味で使われることが一般にあるが、ここではそのような意味で、OSをさらに管理する層、というような意味である。 ハイパーバイザは大別して以下の2種類があり、作成した仮想機械（バーチャルマシン）でそれぞれのOS（ゲストOS）を動かすことができる。 ハードウェアの上で直接稼働する（後述のType 1。狭義のハイパーバイザ。専用OSの形のz/VM、VMware ESX、ESXi、Xenなどや、ファームウェアの形のIBM LPARなど。） 他のOSの上で稼働する（後述のType 2。VMware Server など） また、ゲストOSを修正せずそのまま稼働できる（ハードウェアを完全にエミュレートする）ものを完全仮想化、性能などの理由でゲストOSに修正が必要なものを準仮想化とも呼ぶ。 なお、仮想機械でも単なる物理分割（PPAR）で特にリソース管理を行っていない場合は、ハイパーバイザは存在しない。 ハイパーバイザの分類方法は多数あるが、ここではその動作方式によって2つのタイプに分類する。 ハイパーバイザがハードウェア上で直接動作 (=ベアメタル実装)し、全てのOS（ゲストOS）はそのハイパーバイザ上で動作する方式を指す。狭義の「ハイパーバイザ」はこちらのみを指す。 この方式のハイパーバイザはIBMが1960年代に開発したCP/CMS が最初で、現在のIBM z/VM の祖先である。最近の例では以下がある。 Xen VMwareの ESX、ESXi、vSphere L4マイクロカーネルファミリー TRANGO マイクロソフトのHyper-V LinuxのKernel-based Virtual Machine (KVM) SELTECHのFOXvisor これの派生品としてはプラットホームのファームウェアの中に組み込まれたハイパーバイザがあり、以下がある。 IBMのLPARハイパーバイザ（メインフレーム版はPR/SM） オラクルのOracle VM Server for SPARC 旧論理ドメイン (LDOM) ハイパーバイザ。 ヒューレット・パッカード (HP) のVirtual Server Environment for HP-UX 日立製作所のVirtageハイパーバイザ ハードウェア上でまず別のOSが稼働し（このOSをホストOSと呼ぶ）、その上でハイパーバイザが（ホストOSのアプリケーションとして）稼働し、更にはハイパーバイザの上で更に別のOS（このOSをゲストOSと呼ぶ）を稼働させる方法である。狭義においては、Type 2はハイパーバイザには含まれない。 例としては以下のものがある。 VMwareのVMware Server、VMware Workstation、VMware Player、VMware Fusion マイクロソフトのVirtual PC（Windows 7専用のWindows Virtual PCを含む）とMicrosoft Virtual Server オラクルのVirtualBox パラレルスのParallels WorkstationとParallels Desktop オープンソースのQEMU オラクルのSolarisのKernel Zone 必ずしもすべてのハイパーバイザが、Type-1,2のいずれかに明確に分類出来るものではない。例えばLinuxで動作するKVM、およびFreeBSDで動作するbhyveは、ホストOSカーネルにハイパーバイザを埋め込んでしまうもので、仮想化の機能としてはType-1に属する。しかしゲストOSがホストOS上で1プロセスとして動作する事、また、ホストOS自体はハイパーバイザ上では動作しないため、これらの観点ではType-2に属するという意見もある。 「ハイパーバイザ」という用語はSystem/370用にCP-67を再実装したIBMのCP-370が起源であり、VM/370として1972年にリリースされた。hypervisor callまたはhypercallという用語は、準仮想化インタフェースで参照されるが、何によってゲストOSが（より上位層）の制御プログラムからサービスに直接アクセスするか、つまり同じレベルのOSにsupervisor callを何によって行うのかというのと似ている。（スーパーバイザという用語は、IBMのメインフレーム上でオペレーティングシステムのカーネルがsupervisor stateで動作しているとの記述がある。） ハイパーバイザは、メインフレームで最初に実装された。ソフトウェアによる完全仮想化を最初に提供したのはIBMのCP-40で、研究用に1967年の1月から製造が開始された。CP-40は更にCP-67、VM/370、VM/XA、VM/ESAとなり、現在のz/VMに続いており、ゲストOSとしてz/OS、z/VSEなどの他、Linuxを多数稼働させる用途（サーバ統合）でも使われている。また国産メインフレーム各社も同等の仮想化OS（富士通のAVM、日立製作所のVMSなど）を持っている。 →詳細は z/VM#開発経緯 および メインフレーム#種類 を参照 いくつかの要因により、UNIXやLinuxサーバベンダの間で仮想化技術が再び使われるようになってきた。 ハードウェア能力の拡大による一台当たりの同時に処理できる量の増大 サーバ群をまとめることによるコスト削減と管理のシンプル化。 大規模なマルチプロセッサおよびクラスタサーバ、すなわちサーバファームやレンダーファームへのセットアップを管理する必要が出てきた。 セキュリティや信頼性の改善とハイパーバイザアーキテクチャを使うことによるデバイスに依存せずに済むようになった。 複雑でOSに依存するアプリケーションを異なるハードウェアやOS環境の上で動作させる要望があること。 IBMやサン・マイクロシステムズ（サン）、HP、SGIなどの主要なUNIXベンダーは2000年以前より仮想化したハードウェアを販売していた。これらのハードウェアは一般的にサーバクラス(ハイエンドで数百万ドル)の値札をつけている。仮想化もまたいくつかのミッドレンジのシステム、IBMのSystem pサーバやサンマイクロシステムズのCoolThreadsのT1000やT2000サーバで利用可能である。 IBMはメインフレーム用のロジカル・パーティショニング (LPAR) を、サーバ（pSeries、iSeries、Power Systems）に移植した。現在ではゲストOSの停止なくリソースの変更が可能（D-LPAR）で、CPU（コア）は10分の1単位で割り振りができる（マイクロパーティショニング）ほか、ハイエンド以外のモデルにも搭載している。 サンの論理ドメイン (LDOM) ハイパーバイザの上でゲストOSとして動作させるために、いくつかのホストOSは変更が行われている。2006年後半には、SolarisやLinux、FreeBSDはハイパーバイザの上で動作するように移植された(そして完全仮想化がゲストOSに関係なく実現できるようになったので、同じプロセッサ上でこれらのOSが同時の動作できるようになった)。Wind RiverのCarrier Grade Linuxもまたサンのハイパーバイザ上で動作する計画である。SPARCプロセッサ上で完全仮想化を実現するのはそれほど難しい訳ではない。完全仮想化への取り組みが1980年代半ばから始まったことから、SPARCアーキテクチャは仮想化の邪魔になる古い仕組みを慎重に取り除いてきたからである。 似た傾向はLinuxのx86/x64サーバプラットフォーム、Xenのようなオープンソースプロジェクトによって仮想化技術を取り込もうとする動きが見られる。これらの技術は巨大なシステムからデスクトップに及んでいる。これについては次の節で述べる。 高い利益を誇るサーバハードウェア市場分野へ興味をもっていることから、従来のデスクトップPCを含むインテルのx86命令セットのマシン用のハイパーバイザの開発が行われている。初期のPC向けハイパーバイザの一つは1998年に発表された商業用VMwareである。パラレルスはParallels Workstationを2005年に発表したが、その主な用途はPC上で使うことであった。2006年にはMac OS X上で動作するParallels Desktop for Macを発表した。 たいていのPCシステムで使われるx86アーキテクチャはとりわけ仮想化が難しい。x86上の（標準ハードウェア一式という幻想を表現する）完全仮想化は、ハイパーバイザがあまりにも複雑になりすぎ、実行時パフォーマンスに重大な問題が生じる。 別の方法では、ハイパーバイザによってシミュレートされるマシンのI/O命令を実行するよりも、ハイパーバイザにシステムコールを発行するようにゲストOSを変更することを要求する。これはXenで使われている準仮想化と呼ばれるものであり、Parallels Workstationでは「hypercall」と呼ばれるものであり、IBMの仮想機械では「診断コード」と呼ばれるものである。VMwareはゲスト用のデバイスドライバをつけることで、仮想化時の最も処理に時間がかかるところを補っている。これらすべては同じことでシステムコールをハイパーバイザに渡している。MachやL4マイクロカーネルファミリーのようなマイクロカーネルはゲストOSの準仮想化を行うには十分柔軟である。 CPUベンダは製品に仮想化支援機構を追加してきた。インテルのバーチャライゼーション・テクノロジー (Intel VT) およびAMDのAMD-Vは、元来仮想化を行うのには難しくかつ非効率なx86アーキテクチャを拡張し、ハイパーバイザの実現を支援する機構である。この仕組みは仮想化コードをより単純にし、完全仮想化においてより高いパフォーマンスを可能にするものである。 Xenのような他のものについては、仮想機械をソフトウェアのみで実装している。XenはLinuxのような普通のホストOSの上で動作するし、準仮想化ないしはIntel VTを使った（OSの変更をしない）完全仮想化のどちらも動作させることができる。Xenは無変更のWindows XPを動作させるデモに成功した。Xenの配布物には変更済みのFreeBSDやLinux、NetBSD、ベル研究所のPlan 9版がすでに含まれている。ユーザプログラムは変更なしにXen上で動作が可能である。 2006年には、マイクロソフトは新しいType1のハイパーバイザシステムであるコードネームViridianの開発を始め、2008年6月30日正式版をHyper-Vとして公開した。このシステムは最下層でOSと統合する設計がされている。Windows VistaをはじめとしたWindowsの新バージョンはViridianハイパーバイザの上で動作させた場合にパフォーマンスをあげる拡張を含んでいる。 仮想機械は携帯電話のような組み込みシステムの中に近年見られるようになった。この現象は、一方で、同時に従来のリアルタイムオペレーティングシステム (RTOS) APIをメンテナンスしながら、LinuxやMicrosoft Windowsのようにアプリケーションプログラミング用の高レベルOSインタフェースを提供する要望によって引き起こされている。低レベルRTOSの環境は従来の機能をサポートするために維持し続ける必要がある。高レベルOSのリアルタイム性能は多くの組み込みアプリケーションにとっては満足できるものではない。 したがって、組み込み用のハイパーバイザはリアルタイム性が要求され、その設計基準は他の分野で使われているハイパーバイザには適用できない。多くの組み込みシステムでは使えるリソースがあらかじめ決まっている性質を持ち、特にバッテリー駆動のモバイル機器では、より小メモリかつ低消費電力で動作することを求められる。結局、PCの世界ではx86アーキテクチャが至る所に存在するのとは対照的に、組み込みの世界ではより幅広く様々なアーキテクチャが使われている。仮想化を行うには、メモリ保護機能(メモリ管理ユニットの形かもしくは最低でもアーキテクチャとしてメモリ保護を行っているもの)とCPUモードの区別（ユーザモードと特権モード）の機能が必要であるため、多くのマイクロコントローラは除外されてしまう。この機能を満たすものは、ミドルレンジからハイエンドの組み込みシステムで広く採用されているx86やMIPS、ARM、PowerPCしか残らない。 組み込みシステムメーカーは、普通自分たちが使っているOSのソースコードを持っているので、完全仮想化の必要性はあまりない。しかし、準仮想化はパフォーマンスがよいという利点があるので、普通それが仮想化技術として選択される。にもかかわらず、ARMは近年TrustZone技術を用いた完全仮想化のサポートを追加した。 商業用として最初にハイパーバイザが組み込まれた販売されたモバイル組み込みシステムはOKL4（東芝のモバイルフォン）である。これはL4マイクロカーネルファミリーの商業版である。これはx86やARM、MIPSプロセッサをサポートしている。組み込みシステム用として使われる他のシステムにはTRANGOというものがあって、ARMやMIPS、PowerPCをサポートしている。同じく、組み込みシステム用として、VirtualLogix VLX が、x86-VT、ARM をサポートしている。VLX は海外でのネットワークインフラ、モバイルフォンでの採用実績は多い。日本の製品としては、ウェルインテクノロジーのEM-VRTやSELTECHのMOS-S、エルミック・ウェスコムのACCELシリーズがあり、日本国内で採用実績の多いRTOSであるITRONと汎用OSの同時実行を可能にしている。また、TOPPERSプロジェクトの一環として開発されたSafeGもTrustZone技術を用いた組み込み用実装の一つである。