
コンピューティングにおいて、仮想化(または英連邦英語では仮想化。綴りの違いを参照)は、 v12nと略され、物理的なコンピューティング リソースを一連の仮想マシン、オペレーティングシステム、プロセス、またはコンテナに分割することを可能にする一連のテクノロジーです。[ 1 ] 仮想化は 1960 年代に IBM CP/CMSで始まりました。[ 1 ]制御プログラム CP は、各ユーザーにシミュレートされたスタンドアロンの System/360 コンピュータを提供しました。
ハードウェア仮想化では、ホストマシンは仮想化で使用されるマシンであり、ゲストマシンは仮想マシンです。ホストとゲストという言葉は、物理マシン上で実行されるソフトウェアと仮想マシン上で実行されるソフトウェアを区別するために使用されます。ホストハードウェア上に仮想マシンを作成するソフトウェアまたはファームウェアは、ハイパーバイザまたは仮想マシンモニタと呼ばれます。[ 2 ]ハードウェア仮想化は、ハードウェアエミュレーションとは異なります。ハードウェア支援仮想化は、仮想マシンモニタの構築を容易にし、ゲストOSを分離して実行できるようにします。
デスクトップ仮想化とは、論理的なデスクトップを物理的なマシンから分離するという概念である。
オペレーティングシステムレベルの仮想化(コンテナ化とも呼ばれる)とは、カーネルが複数の独立したユーザー空間インスタンスの存在を可能にするオペレーティングシステムの機能のことである。
仮想化の一般的な目的は、管理業務を一元化すると同時に、拡張性とハードウェアリソースの全体的な利用効率を向上させることである。
仮想化の一形態は、1967年にIBMのCP-40研究システムで初めて実証され、その後1967年から1972年にかけてCP/CMSでオープンソースとして配布され、1972年から現在までIBMのVMファミリーで再実装されている。CP/CMSの各ユーザーには、シミュレートされたスタンドアロンコンピュータが提供された。このような仮想マシンはそれぞれ、基盤となるマシンと全く同じ機能を備えており、(ユーザーにとっては)プライベートシステムと区別がつかなかった。このシミュレーションは包括的で、ハードウェアの動作原理マニュアルに基づいていた。そのため、命令セット、メインメモリ、割り込み、例外、デバイスアクセスなどの要素が含まれていた。結果として、複数のユーザー間で多重化できる単一のマシンが実現した。
ハードウェア支援型仮想化は、最初の仮想マシンオペレーティングシステムであるVM/370で使用するために、1972年にIBM System/370で初めて登場しました。IBMは1972年にSystem/370シリーズに仮想メモリハードウェアを追加しましたが、これはIntel VT-xリングとは異なり、スーパーバイザモードやプログラムモード、ユーザーモードへのフルアクセスを必要とする仮想マシンを適切に制御するために、ハイパーバイザに高い特権レベルを提供します。
高精細コンピュータグラフィックス(CADなど)の需要が高まるにつれ、1970年代後半にはメインフレームの仮想化への注目度が薄れ、ミニコンピュータの登場によって分散コンピューティングによるリソース割り当てが促進され、マイクロコンピュータのコモディティ化が進んだ。
x86サーバーあたりの計算能力の向上(特に、最新ネットワークの帯域幅の大幅な増加)により、仮想化技術に基づくデータセンター型コンピューティングへの関心が再び高まった。その主な要因は、サーバー統合の可能性であった。仮想化によって、単一のサーバーが、利用率の低い複数の専用サーバー上の計算能力をコスト効率よく統合できるようになった。コンピューティングの原点回帰を最も顕著に表すのがクラウドコンピューティングであり、これは高帯域幅ネットワークを介したデータセンター型コンピューティング(またはメインフレーム型コンピューティング)の同義語である。クラウドコンピューティングは仮想化と密接に関連している。
初期の実装であるx86アーキテクチャは、ポペックとゴールドバーグが提唱した「古典的な仮想化」を実現するための仮想化要件を満たしていなかった。
このため、このタイプのプロセッサに仮想マシンモニタを実装するのは困難でした。具体的な制限としては、一部の特権命令でトラップできないことがありました。[ 3 ]したがって、これらのアーキテクチャ上の制限を補うために、設計者は完全仮想化または準仮想化という 2 つの方法で x86 アーキテクチャの仮想化を実現しました。[ 4 ]どちらも物理ハードウェアの錯覚を作り出し、オペレーティングシステムがハードウェアから独立するという目標を達成しますが、パフォーマンスと複雑さにおいていくつかのトレードオフがあります。
2005年以前は、x86プラットフォームでは完全な仮想化は完全には利用できませんでした。x86プラットフォーム向けの多くのハイパーバイザーは、それに非常に近いものを提供し、完全な仮想化を実現したと主張していました(Adeos、Mac-on-Linux、Parallels Desktop for Mac、Parallels Workstation、VMware Workstation、VMware Server(旧GSX Server)、VirtualBox、Win4BSD、Win4Lin Proなど)。
2005年と2006年に、インテルとAMDは(それぞれ独立して)x86アーキテクチャ向けの新しいプロセッサ拡張機能であるIntel VT-xとAMD-Vを開発しました。Itaniumアーキテクチャでは、ハードウェア支援仮想化はVT-iとして知られています。これらの拡張機能をサポートする最初の世代のx86プロセッサは、2005年末から2006年初頭にかけてリリースされました。
ハードウェア仮想化(またはプラットフォーム仮想化)は、1 台以上の仮想マシンにコンピューティング リソースをプールします。仮想マシンは、オペレーティングシステムを備えた(物理)コンピュータの機能を実装します。ホスト ハードウェア上に仮想マシンを作成するソフトウェアまたはファームウェアは、ハイパーバイザまたは仮想マシンモニタと呼ばれます。[ 2 ]
これらの仮想マシン上で実行されるソフトウェアは、基盤となるハードウェア リソースから分離されています。たとえば、Arch Linuxを実行しているコンピュータは、 Microsoft Windowsオペレーティングシステムを搭載したコンピュータのように見える仮想マシンをホストできます。Windows ベースのソフトウェアは、仮想マシン上で実行できます。[ 5 ] [ 6 ]
ハードウェア仮想化には、以下のような種類があります。

完全仮想化では、物理コンピュータのリソースを 1 つ以上のインスタンスにプールする技術が採用されています。各インスタンスは仮想環境を実行し、生のハードウェアで実行可能なソフトウェアやオペレーティングシステムを仮想マシン内で実行できます。一般的に使用される 2 つの完全仮想化技術は、(a) バイナリ変換と (b) ハードウェア支援完全仮想化です。[ 1 ]バイナリ変換は、仮想マシンを貫通する命令を、仮想マシンで安全な別の命令シーケンスに置き換えるように、ソフトウェアをオンザフライで自動的に変更します。[ 7 ]ハードウェア支援仮想化では、(ゲスト) オペレーティングシステムにほとんど変更を加えることなく、ゲスト オペレーティングシステムを分離して実行できます。
完全な仮想化では、ハードウェアのあらゆる重要な機能を複数の仮想マシンのいずれかに反映させる必要があります 。これには、完全な命令セット、入出力操作、割り込み、メモリアクセス、およびベアメタルマシン上で実行されるソフトウェアが使用するその他の要素、そして仮想マシン上で実行されることを想定したソフトウェアが使用するその他の要素すべてが含まれます。
このアプローチは、 VMファミリーの前身であるIBM CP-40とCP-67によって1966年に初めて導入されました。
ハイパーバイザの中には、ゲストとホスト間でバイナリ変換を行うものがあります。これは、異なる命令セットアーキテクチャ間、あるいは同じ命令セットを使用するゲストとホスト間で行われます。ハイパーバイザは、ゲストのマシンコードを直接解釈するように設計されている場合もあれば、動的バイナリ変換の形でホストのアーキテクチャ用のマシンコードを生成するように設計されている場合もあります。
ハードウェアによる仮想化支援機能を備えたものを含め、一般的なハイパーバイザーの多くは、ハードウェアアクセスに関連する一部の命令をバイナリ変換します。このような場合、ハイパーバイザーは命令を捕捉し、必要なデバイスをエミュレートする機能を実行します。バイナリ変換を実行するハイパーバイザーは、セキュリティやパフォーマンス向上のために、ゲストコンテキスト内の命令を置き換えるように設計されている場合もあります。
ハードウェア支援仮想化(または高速仮想化。Xen ではハードウェア仮想マシン(HVM)、Virtual Ironではネイティブ仮想化と呼ばれる)は、ホストプロセッサの助けを借りてハードウェア仮想化の全体的な効率を向上させる方法です。完全な仮想化は、完全なハードウェア環境、つまり仮想マシンをエミュレートするために使用され、ホストマシンと同じ命令セットを使用する変更されていないゲストオペレーティングシステムが、完全に隔離された状態で実行されます。
ハードウェア支援仮想化は、 1980 年にIBM 308Xプロセッサに初めて導入され、Start Interpretive Execution (SIE) 命令が使用されました。[ 8 ]これは、2005 年、2006 年、2010 年にそれぞれx86プロセッサ ( Intel VT-x、AMD-V、VIA VT )に追加されました。[ 9 ]
IBMは、 AIX、Linux、IBM i向けのIBM Power Systemsハードウェア、およびIBM Zメインフレーム向けにハードウェア仮想化を提供しています。IBMは、この独自のハードウェア仮想化方式を「論理パーティション」、または一般的にはLPARと呼んでいます。
ハードウェア支援型仮想化は、ゲストOSで変換する必要のあるコードを削減(理想的には排除)するため、バイナリ変換ベースの仮想化に比べてメンテナンスの手間を軽減します。また、パフォーマンスの向上も大幅に容易になります。
準仮想化とは、仮想マシンに対して、基盤となるハードウェア・ソフトウェアインターフェースと類似しているものの同一ではないソフトウェアインターフェースを提供する仮想化技術です。準仮想化は、ゲストオペレーティングシステムがハイパーバイザと通信することで、完全仮想化と比較してパフォーマンスと効率を向上させます。ゲストオペレーティングシステムがハイパーバイザに対して意図を伝えることができるため、両者が協力して仮想マシン内でより優れたパフォーマンスを実現できます。
変更されたインターフェースの目的は、仮想環境では非仮想化環境に比べて実行が著しく困難な操作に費やすゲストの実行時間を削減することです。準仮想化では、ゲストとホストがこれらのタスクを要求および承認できるように、特別に定義された「フック」が提供されます。これらのタスクは、そうでなければ仮想ドメイン(実行パフォーマンスが低下する場所)で実行されます。準仮想化プラットフォームが成功すれば、仮想マシンモニタ(VMM)を簡素化したり(重要なタスクの実行を仮想ドメインからホストドメインに移動することで)、仮想ゲスト内でのマシン実行の全体的なパフォーマンス低下を軽減したりすることが可能になります。
準仮想化では、ゲストオペレーティングシステムが明示的にパラ仮想化API用に移植されている必要があります。準仮想化に対応していない従来の OS ディストリビューションでも、準仮想化 VMM 上で実行できます。ただし、オペレーティングシステムを変更できない場合でも、準仮想化の多くの重要なパフォーマンス上の利点を可能にするコンポーネントが利用できる場合があります。たとえば、Xen Windows GPLPVプロジェクトは、 Xenハイパーバイザ上で実行されているMicrosoft Windows仮想ゲストにインストールすることを目的とした、準仮想化対応のデバイスドライバのキットを提供しています。[ 10 ]このようなアプリケーションは、準仮想マシンインターフェイス環境を介してアクセスできる傾向があります。これにより、複数の暗号化アルゴリズムモデル間で実行モードの互換性が確保され、準仮想化フレームワーク内でのシームレスな統合が可能になります。[ 11 ]
「準仮想化」という用語は、研究文献において、Denali Virtual Machine Manager に関連して初めて使用されました。[ 12 ]この用語は、 Xen、L4、TRANGO、VMware、Wind River、および XtratuMハイパーバイザの 説明にも使用されています。これらのプロジェクトはすべて、実際の x86 命令セットの仮想化が難しい部分を実装しない仮想マシンを実装することにより、 x86ハードウェア上で高性能な仮想マシンをサポートするために準仮想化技術を使用しているか、または使用できます。[ 13 ]
2005年、VMwareはゲストOSとハイパーバイザ間の通信メカニズムとして、準仮想化インターフェースである仮想マシンインターフェース(VMI)を提案しました。このインターフェースにより、単一のバイナリバージョンのOSをネイティブハードウェア上またはハイパーバイザ上で準仮想化モードで実行できる、透過的な準仮想化が実現しました。
Linuxにおける準仮想化サポートの最初の登場は、2002年のppc64ポートのマージによって実現しました[ 14 ]。これは、IBM pSeries(RS/6000)およびiSeries(AS/400)ハードウェア上でLinuxを準仮想化ゲストとして実行することをサポートしていました。
2006年にマサチューセッツ州ボストンで開催されたUSENIXカンファレンスで、IBM、VMware、Xen、Red HatなどのLinux開発ベンダーが協力し、Xenグループが最初に開発した「paravirt-ops」と呼ばれる準仮想化の代替形式について議論しました。[ 15 ] paravirt-opsコード(しばしばpv-opsと略される)は、バージョン2.6.23以降、メインラインLinuxカーネルに組み込まれ、ハイパーバイザとゲストカーネル間のハイパーバイザに依存しないインターフェースを提供します。pv-opsゲストカーネルのディストリビューションサポートは、Ubuntu 7.04とRedHat 9から始まりました。2.6.24以降のカーネルに基づくXenハイパーバイザは、VMwareのWorkstation製品(バージョン6以降)と同様に、pv-opsゲストをサポートしています。[ 16 ]
ハイブリッド仮想化は、ハードウェア支援による完全仮想化の制限を克服するために、完全仮想化技術と準仮想化ドライバを組み合わせたものです。[ 17 ]
ハードウェア支援による完全仮想化アプローチでは、変更されていないゲストオペレーティングシステムを使用しますが、多くの VM トラップが発生し、CPU オーバーヘッドが高くなるため、スケーラビリティとサーバー統合の効率が制限されます。[ 18 ]ハイブリッド仮想化アプローチはこの問題を克服します。
デスクトップ仮想化は、論理的なデスクトップと物理的なマシンを分離する。
デスクトップ仮想化の一形態である仮想デスクトップインフラストラクチャ(VDI)は、ハードウェア仮想化のより高度な形態と考えることができます。ユーザーは、キーボード、マウス、モニターを介してホストコンピュータと直接やり取りするのではなく、LAN、無線LAN、あるいはインターネットなどのネットワーク接続を介して、別のデスクトップコンピュータまたはモバイルデバイスを使用してホストコンピュータとやり取りします。さらに、このシナリオでは、ホストコンピュータは、複数のユーザーに対して同時に複数の仮想マシンをホストできるサーバーコンピュータになります。 [ 19 ]
HPやIBMのような企業は、分散クライアントコンピューティングの制限を改善するために、さまざまな仮想化ソフトウェアと配信モデルを備えたハイブリッドVDIモデルを提供しています。[ 20 ]選択されたクライアント環境では、ワークロードがPCやその他のデバイスからデータセンターのサーバーに移行され、データセンターのサーバーとストレージでホストされるアプリケーションとクライアントオペレーティング環境を備えた、適切に管理された仮想クライアントが作成されます。ユーザーにとっては、単一のクライアントデバイスに縛られることなく、どの場所からでもデスクトップにアクセスできることを意味します。リソースが集中化されているため、作業場所を移動するユーザーは、アプリケーションとデータとともに同じクライアント環境にアクセスできます。[ 20 ] IT管理者にとっては、これは、保守が容易で、ユーザーとビジネスの変化するニーズに迅速に対応できる、より集中化された効率的なクライアント環境を意味します。[ 21 ] もう1つの形式であるセッション仮想化では、複数のユーザーがネットワーク経由で共有の強力なコンピューターに接続してログインし、同時に使用できます。各ユーザーにはデスクトップと、ファイルを保存する個人フォルダーが割り当てられます。[ 19 ]マルチシート構成では、複数のモニター、キーボード、マウスが接続された単一のPCを使用してセッション仮想化を実現できます。
デスクトップ仮想化で見られるシンクライアントは、主にネットワークに接続するために設計された、シンプルで安価なコンピュータです。ハードディスクのストレージ容量、RAM、あるいは処理能力が不足している場合もありますが、多くの組織は、ソフトウェアが詰め込まれた(そしてソフトウェアライセンス料が必要な)「シッククライアント」デスクトップを廃止し、より戦略的な投資を行うことによるコストメリットを検討し始めています。[ 22 ]
デスクトップ仮想化は、ソフトウェアのバージョン管理とパッチ管理を簡素化します。サーバー上で新しいイメージを更新するだけで、デスクトップは再起動時に最新バージョンを取得します。また、ワークステーション上でユーザーがアクセスできるアプリケーションを一元的に制御することも可能になります。
仮想デスクトップをクラウドに移行すると、ホスト型仮想デスクトップ(HVD)が作成され、デスクトップイメージは専門のホスティング会社によって一元的に管理および維持されます。利点としては、拡張性の向上と設備投資の削減があり、代わりに月額の運用コストが発生します。[ 23 ]
オペレーティングシステムレベルの仮想化(コンテナ化とも呼ばれる)は、カーネルが複数の分離されたユーザー空間インスタンスの存在を可能にするオペレーティングシステムの機能を指します。このようなインスタンスは、コンテナ[ 24 ] 、パーティション、仮想環境(VE)、またはjail(FreeBSD jailまたはchroot jail)と呼ばれ、その中で実行されているプログラムの観点からは(物理的な)コンピュータのように見えることがあります。通常のオペレーティングシステム上で実行されているコンピュータプログラムは、そのコンピュータのすべてのリソース(接続されているデバイス、ファイルとフォルダ、ネットワーク共有、CPUパワー、定量化可能なハードウェア機能)を見ることができます。しかし、コンテナ内で実行されているプログラムは、コンテナの内容とコンテナに割り当てられたデバイスしか見ることができません。
これにより、カーネルがコンテナ間で共有されるため、リソースの使用量を抑えつつ、仮想マシンが持つ標準化や拡張性などの多くの利点が実現します。[ 25 ]
コンテナ化は、 Dockerの導入により2014年に注目を集め始めた。[ 26 ] [ 27 ]
仮想化、特に完全仮想化は、以下の点で有益であることが証明されています。
仮想化の一般的な目的は、管理業務を一元化しつつ、拡張性とハードウェアリソースの全体的な利用効率を向上させることです。仮想化によって、複数のオペレーティングシステムを単一の中央処理装置(CPU)上で並列実行できます。この並列処理はオーバーヘッドコストを削減する傾向があり、同じOS上で複数のプログラムを実行するマルチタスクとは異なります。仮想化を利用することで、企業はユーザーに影響を与えることなく、オペレーティングシステムやアプリケーションのアップデートや迅速な変更をより適切に管理できます。
最終的に、仮想化は組織内のリソースとアプリケーションの効率と可用性を劇的に向上させます。リソースが十分に活用されない「1つのサーバー、1つのアプリケーション」という古いモデルに頼るのではなく、仮想リソースは余分な無駄なくビジネスニーズを満たすために動的に適用されます。[ 29 ]
独自のオペレーティングシステムを実行する仮想マシンは、ホストマシンのオペレーティングシステムに関係なく、ライセンスが必要です。たとえば、 VMゲストにMicrosoft Windowsをインストールするには、そのライセンス要件を満たす必要があります。[ 30 ] [ 31 ] [ 32 ]
仮想コンピュータとは、ソフトウェアにおけるコンピュータの論理表現です。仮想化は、物理ハードウェアとオペレーティングシステムを分離することで、運用上の柔軟性を高め、基盤となる物理ハードウェアの利用率を向上させます。
ドライバはMicrosoft Windows用のドライバで、Xenで仮想化されたWindows DomUシステムがXen Dom0のネットワークドライバとブロックドライバにアクセスできるようにします。これにより、Xen/Qemu/Kvmでエミュレートされる標準デバイスに比べて、パフォーマンスと信頼性が大幅に向上します。
Standardはホストの2つのCPUをカバーし、VOSE(仮想オペレーティングシステム環境 - そのホスト上のVMに1つの無料のStdインストール)が1つから2つになり、「Datacenterのすべての機能と拡張性を備えている」と説明した。同氏は、価格はわずかに上昇するが、「いずれにせよ仮想化されるべきであり、VOSEの権利が2倍になることで補われるため、問題ないだろう」と述べた。Windows Server Datacenterは、VOSEが無制限の1CPUライセンスが最低2つ必要だった。「今では、VOSEが無制限のホストの2つのCPUをカバーする、よりシンプルなSKUになっている」とフィン氏は述べた。
{{cite web}}値を確認する(ヘルプ)|url=