プラットフォーム仮想化
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/18 10:01 UTC 版)
1960年代に生まれた「仮想化」という用語は、ハードウェアとソフトウェアの組合せによって実現された仮想機械の登場とともに使われるようになった。同時期にリソース仮想化である仮想記憶も登場している。仮想機械という用語は IBM M44/44X という実験機で初めて使われている。それ以前に IBM CP-40 が仮想機械を実装しており、このときは pseudo machines(擬似機械)と呼ばれていた。「仮想化」にしても「仮想機械」にしても、その意味は時代と共に変化していった。 プラットフォーム仮想化とは、ハードウェアプラットフォーム上でホストプログラム(制御プログラム)が擬似的なコンピュータ環境を生成し、ゲストソフトウェアに対して「仮想機械」を提供するものである。ゲストソフトウェアは、それ自体もオペレーティングシステムであるのが一般的で、あたかも独立したハードウェアプラットフォームにインストールされたかのように動作する。単一の物理マシン上で複数の仮想機械をシミュレート可能なことが多く、仮想機械の個数はホストであるハードウェアリソースによって制限される。ゲストOSとホストOSは一般に同一である必要はない。ゲストシステムは特定の周辺機器(ハードディスクドライブやネットワークカード)へのアクセスを必要とすることが多く、その場合その機器とゲストのインタフェースを提供する必要がある。 プラットフォーム仮想化の手法はいくつか存在する。以下にそれらを列挙する。 エミュレータまたはシミュレータ 仮想機械によってハードウェア全体を擬似的に再現する。全く異なるアーキテクチャのハードウェア向けのゲストOSを修正することなしに動作させることができる。これは、新たなCPUなどのハードウェア開発が完了する前にソフトウェアを並行して開発する手法として使われてきた。具体例としては、Bochs、PearPC、Virtual PCの PowerPC 版、QEMU、Hercules emulator(IBMのメインフレームのエミュレータ)などがある。エミュレーションのための技法は様々で、有限オートマトンを使った技法から、仮想化プラットフォーム上での動的再コンパイル技法まである。 ネイティブ仮想化 同じアーキテクチャのプラットフォーム上で、ゲストOSを隔離された状態で、かつ無修正で動作させる仮想機械。この手法は IBM CP-40 などが起源とされる。メインフレーム以外の領域では、Parallels Workstation、Parallels Desktop、VirtualBox、Virtual PC、VMware Workstation、VMware Server、QEMU、Adeos、Mac-on-Linux、VirtualLogix VLX Virtualizer for VT などがある。 ハードウェアによる仮想化 ゲストOSにハードウェアリソースを割り当て、隔離された状態で動作できるようにする仮想機械。2005年と2006年、インテルとAMDは仮想化をサポートする追加ハードウェアを提供した。例えば、VMware Fusion、VMware Workstation、Parallels Desktop、Parallels Workstationなどがある。 部分仮想化 特にアドレス空間などのハードウェア環境に限って、複数の実体があるようにシミュレートする仮想機械。いわゆる仮想記憶である。プロセスが同時並行して動作できるようにするが、ゲストOSが動作することはできない。一般に仮想機械とは見なされないが、仮想化の歴史上は重要であり、CTSS や IBM M44/44X などで使われ、MVS へと受け継がれた。その後の Microsoft Windows も Linux も、基本的にこの手法を採用している。 準仮想化 ハードウェアを擬似するというよりも、ゲストOSに修正を加えることで利用可能となる特殊なAPIを提供する仮想機械。このようなハイパーバイザのシステムコールを TRANGO や Xen では「ハイパーコール; hypercall」と呼ぶ。Citrix XenServer、VMware ESX Server、Win4Lin 9x、サン・マイクロシステムズの論理ドメイン、VirtualLogix の VLX Virtualizer、TRANGO などがある。 OSレベルの仮想化 物理サーバをOSレベルで仮想化し、複数の仮想サーバを単一の物理サーバ上で動作させる。ゲストOSとホストOSは同一である。あるゲスト環境で動作するアプリケーションから見れば、独立したシステムで動作しているように見える。Linux-VServer、Virtuozzo、OpenVZ、LXC (Linux Containers) 、AIX ワークロードパーティション (WPAR)、Solaris Containers、FreeBSD jail などがある。 コンテナ仮想化 コンテナ仮想化とは、アプリケーションの基盤となる動作環境を仮想化する技術である。 アプリケーション仮想化 セキュリティや信頼性、移植性を強化する目的で、アプリケーションを仮想機械でカプセル化された環境で隔離して実行すること。仮想機械はアプリケーションの実行に最低限必要な要素を備えており、OSとアプリケーションの間の層として動作する。例えば、Java仮想マシン、Microsoft Application Virtualization、Altiris、Citrix XenApp などがある。前述の各種仮想化とは異なる手法であり、Smalltalk、Forth、Tcl、Pコードマシンなどのインタプリタ指向言語の流れを汲むものである。 仮想化技術の進展によって、アプリケーション仮想化とアプリケーションストリーミングといった新たな技法が登場した。
※この「プラットフォーム仮想化」の解説は、「仮想化」の解説の一部です。
「プラットフォーム仮想化」を含む「仮想化」の記事については、「仮想化」の概要を参照ください。
- プラットフォーム仮想化のページへのリンク