ハードウェア仮想化

ハードウェア仮想化（ハードウェアかそうか、）とは、ソフトウェアを使用して、コンピューターのリソースを仮想マシンと呼ばれる個別の分離されたエンティティに分割することである。つまり、完全なハードウェアプラットフォーム、コンポーネントの特定の論理的抽象化、またはさまざまなオペレーティングシステムの実行に必要な機能のみとしてのコンピューターの仮想化である。ハードウェア仮想化により、同一または異なるオペレーティングシステムの複数のコピーをコンピューター上で実行することができ、異なる仮想マシンのアプリケーションが互いに干渉し合うのを防ぐことができる。仮想化は、コンピューティングプラットフォームの物理的特性をユーザーから隠し、代わりに抽象的なコンピューティングプラットフォームを提示する。当初、仮想化を制御するソフトウェアは「制御プログラム」と呼ばれていたが、「ハイパーバイザー」または「仮想マシンモニター」という用語が徐々に好まれるようになった。
概念.
「仮想化」という用語は、1960年代に、実験的なIBM M44 / 44Xシステムに由来する仮想マシン（「疑似マシン」と呼ばれることもある）を指すために造られた。仮想マシンの作成と管理は、最近では「プラットフォーム仮想化」または「サーバー仮想化」と呼ばれている。
プラットフォームの仮想化は、"ホスト"ソフトウェア（"制御プログラム"）によって特定のハードウェアプラットフォーム上で実行される。"ホスト"ソフトウェアは、"ゲスト"ソフトウェア用にシミュレートされたコンピューター環境である"仮想マシン"（VM）を作成する。ゲストソフトウェアはユーザーアプリケーションに限定されない。多くのホストは、完全なオペレーティングシステムの実行を許可する。ゲストソフトウェアは、物理ハードウェア上で直接実行されているかのように実行されるが、いくつかの注意点がある。物理システムリソース（ネットワークアクセス、ディスプレイ、キーボード、ディスクストレージなど）へのアクセスは、通常、"ホスト"プロセッサやシステムメモリよりも制限の厳しいレベルで管理される。仮想化ホストによって実装されたハードウェアアクセスポリシーに応じて、ゲストは特定の周辺機器へのアクセスを制限されたり、デバイスのネイティブ機能のサブセットに制限されたりすることがよくある。
仮想化は、ハイパーバイザーの実行に必要なリソースと、物理マシンでネイティブに実行する場合と比較して仮想マシンでのパフォーマンスの低下の両方で、パフォーマンスの低下を招くことがよくある。
仮想化の理由.
ただし、複数のVMが同じ物理ホストで同時に実行されている場合、各VMは、他のVMによってシステムに課せられるワークロードに大きく依存するさまざまな不安定なパフォーマンスを示す可能性がある。この問題は、仮想マシン間の一時的な分離のための適切なインストール手法によって対処できる。
プラットフォームの仮想化にはいくつかのアプローチがある。
仮想化のユースケースの例：
完全仮想化.
完全仮想化では、仮想マシンは十分なハードウェアをシミュレートして、同じ命令セット用に設計された変更されていない「ゲスト」OSを分離して実行できるようにする。このアプローチは、VMファミリの前身であるIBM CP-40およびCP-67で1966年に開拓された。
ハードウェア支援仮想化.
ハードウェア支援仮想化では、ハードウェアは、仮想マシンモニターの構築を容易にし、ゲストOSを分離して実行できるようにするアーキテクチャサポートを提供する。ハードウェア支援仮想化は、最初の仮想マシンオペレーティングシステムであるVM / 370で使用するために、1972年にIBM System / 370に最初に導入された。
2005年と2006年に、IntelとAMDは仮想化をサポートするための追加のハードウェアを提供した。Sun Microsystems（現在のOracle Corporation）は、2005年にUltraSPARCTシリーズプロセッサに同様の機能を追加した。
2006年、第1世代の32ビットおよび64ビットのx86ハードウェアサポートが、ソフトウェア仮想化よりもパフォーマンス上の利点を提供することはめったになかった。
準仮想化.
準仮想化では、仮想マシンは必ずしもハードウェアをシミュレートする必要はないが、代わりに（またはさらに）変更することによってのみ使用できる特別なAPIを提供する「ゲスト」OS。これを可能にするには、「ゲスト」OSのソースコードが利用可能である必要がある。ソースコードが利用可能な場合は、機密性の高い命令をVMM APIの呼び出しに置き換えて（例：「cli」と「vm_handle_cli（）」）、OSを再コンパイルして新しいバイナリを使用するだけで十分である。ハイパーバイザーへのこのシステムコールは、TRANGOおよびXenでは「ハイパーコール」と呼ばれる。これは、VM下のIBMのCMSでDIAG（「診断」）ハードウェア命令を介して実装される。（これが"ハイパーバイザー"という用語の由来だった）。
オペレーティングシステムレベルの仮想化.
オペレーティングシステムレベルの仮想化では、物理サーバーはオペレーティングシステムレベルで仮想化され、複数の分離された安全な仮想化サーバーを単一の物理サーバーで実行できるようにする。「ゲスト」オペレーティングシステム環境は、ホストシステムと同じオペレーティングシステムの実行中のインスタンスを共有する。したがって、同じオペレーティングシステムカーネルを使用して「ゲスト」環境を実装し、特定の「ゲスト」環境で実行されているアプリケーションは、それをスタンドアロンシステムと見なす。
ハードウェア仮想化ディザスタリカバリ.
ディザスタリカバリ（DR）計画は、ハードウェア仮想化プラットフォームの優れた方法と見なされることがよくある。仮想化環境のDRは、通常のビジネス運用を混乱させるさまざまな状況で高い可用性を確保できる。ハードウェア仮想化プラットフォームの継続的な運用が重要な状況では、ディザスタリカバリ計画により、ハードウェアのパフォーマンスとメンテナンスの要件を確実に満たすことができる。ハードウェア仮想化ディザスタリカバリ計画には、以下に説明する方法を含むさまざまな方法によるハードウェアとソフトウェアの両方の保護が含まれる。