準仮想化 パート3
準仮想化とは、仮想マシンに、基盤となるハードウェアとソフトウェアのインターフェースに類似した、しかし同一ではないソフトウェアインターフェースを提供する仮想化技術です。準仮想化は、ゲストOSがハイパーバイザーと通信することで、完全仮想化と比較してパフォーマンスと効率を向上させます。ゲストOSがハイパーバイザーにその意図を示すことで、各OSが連携し、仮想マシン内での実行時に優れたパフォーマンスを実現できます。
インターフェースの変更は、仮想環境では非仮想化環境と比較して実行が著しく困難な操作の実行に、ゲストの実行時間のうち費やされる割合を削減することを目的とします。準仮想化は、特別に定義された「フック」を提供することで、ゲストとホストがこれらのタスクを要求および承認できるようにします。これらのタスクは、仮想ドメイン(実行パフォーマンスが低い)で実行されます。優れた準仮想化プラットフォームは、仮想マシンモニター(VMM)の簡素化(重要なタスクの実行を仮想ドメインからホストドメインへ移行することで)や、仮想ゲスト内でのマシン実行における全体的なパフォーマンス低下の抑制を可能にします。
準仮想化では、ゲストOSを準API向けに明示的に移植する必要があります。準仮想化に対応していない従来のOSディストリビューションは、準仮想化VMM上で実行することはできません。しかし、OSを変更できない場合でも、準仮想化によるパフォーマンス上の大きなメリットの多くを実現するコンポーネントが利用できる場合があります。例えば、Xen Windows GPLPVプロジェクトは、Xenハイパーバイザー上で動作するMicrosoft Windows仮想ゲストにインストールすることを目的とした、準仮想化対応デバイスドライバーキットを提供しています。このようなアプリケーションは、準仮想化マシンインターフェース環境を介してアクセスできる場合が多くあります。これにより、複数の暗号化アルゴリズムモデル間での実行モードの互換性が確保され、準仮想化フレームワーク内でのシームレスな統合が可能になります。
歴史
「準仮想化」という用語は、Denali Virtual Machine Manager に関連して研究文献で初めて使用されました。この用語は、Xen、L4、TRANGO、VMware、Wind River、XtratuM ハイパーバイザーにも使用されています。これらのプロジェクトはすべて、x86 命令セットの仮想化が難しい部分を実装しない仮想マシンを実装することで、x86 ハードウェア上で高性能な仮想マシンをサポートするために準仮想化技術を使用しているか、または使用できます。
2005 年、VMware は、ゲスト OS とハイパーバイザー間の通信メカニズムとして、準仮想化インターフェースである仮想マシンインターフェース (VMI) を提案しました。このインターフェースにより、透過的な準仮想化が可能になり、OS の単一バイナリバージョンをネイティブハードウェア上または準仮想化モードのハイパーバイザー上で実行できるようになりました。
Linuxにおける準仮想化サポートは、2002年にppc64ポートが統合された際に初めて登場しました。ppc64ポートは、IBM pSeries (RS/6000)およびiSeries (AS/400)ハードウェア上で準仮想化ゲストとしてLinuxを実行できるようにしました。
2006年にマサチューセッツ州ボストンで開催されたUSENIXカンファレンスでは、複数のLinux開発ベンダー(IBM、VMware、Xen、Red Hatなど)が協力し、当初はXenグループによって開発された「paravirt-ops」と呼ばれる準仮想化の代替形態を開発しました。paravirt-opsコード(多くの場合pv-opsと略されます)は、バージョン2.6.23以降のメインラインLinuxカーネルに組み込まれ、ハイパーバイザーとゲストカーネル間のハイパーバイザーに依存しないインターフェースを提供します。 pv-opsゲストカーネルのディストリビューションサポートは、Ubuntu 7.04およびRedHat 9から導入されました。2.6.24以降のカーネルをベースとするXenハイパーバイザーはpv-opsゲストをサポートしており、VMware Workstation製品もバージョン6以降でサポートされています。
ハイブリッド仮想化
ハイブリッド仮想化は、完全仮想化技術と準仮想化ドライバを組み合わせることで、ハードウェア支援による完全仮想化の限界を克服します。
ハードウェア支援による完全仮想化アプローチでは、多くのVMトラップを含む未変更のゲストオペレーティングシステムを使用します。これによりCPUオーバーヘッドが増加し、スケーラビリティとサーバー統合の効率性が低下します。ハイブリッド仮想化アプローチは、この問題を克服します。