完全仮想化 (カンゼンカソウカ) とは | 意味や読み方など丁寧でわかりやすい用語解説

作成日: 更新日:

完全仮想化 (カンゼンカソウカ) の読み方

日本語表記

かんぜんかそうか (カンゼンカソウカ)

英語表記

Full Virtualization (フルバーチャライゼーション)

完全仮想化 (カンゼンカソウカ) の意味や用語解説

完全仮想化は、物理的なコンピュータ資源(CPU、メモリ、ストレージ、ネットワークなど)を、ハイパーバイザと呼ばれるソフトウェアが管理し、複数の独立した仮想マシンとして利用可能にする技術の一つである。この方式の最大の特徴は、仮想マシン上で動作するゲストOSが、自身が仮想環境で動いていることを意識せず、あたかも物理ハードウェア上で直接動作しているかのように振る舞う点にある。これにより、ゲストOSに変更を加えることなく、既存のOSやアプリケーションをそのまま仮想環境に移行できる高い互換性が実現される。 概要として、完全仮想化ではハイパーバイザが物理ハードウェアとゲストOSの間に介在し、物理ハードウェアが持つ様々なリソースを仮想化してゲストOSに提供する。ゲストOSは仮想化されたCPU、メモリ、ディスクなどの仮想デバイスを認識し、それらに対して命令を発行する。ハイパーバイザはその命令を捕捉し、物理ハードウェアに対する実際の命令に変換して実行する。そして、物理ハードウェアからの結果を再びゲストOSが理解できる形式に変換して返すという一連の処理を行う。このプロセスにより、異なる種類のOSを同一の物理サーバ上で同時に実行することが可能となり、システムの統合、リソースの有効活用、そして運用コストの削減に大きく貢献する。特に、古くから使われているレガシーシステムや特定のハードウェアに依存するOS環境を現代のサーバインフラ上で継続利用したい場合に、完全仮想化は非常に有効な選択肢となる。 詳細として、完全仮想化における各リソースの仮想化メカニズムを掘り下げる。まずCPU仮想化では、ゲストOSが実行する特権命令(システムに直接影響を与える命令)が重要な役割を果たす。ゲストOSは物理ハードウェアを直接制御しようとする特権命令を発行するが、完全仮想化環境では、ハイパーバイザがこれらの特権命令を捕捉し、エミュレートまたは変換して実行する。これはリングプロテクションと呼ばれるCPUの特権レベルの仕組みを利用して行われる。ゲストOSは最も特権の高い「リング0」で動作しようとするが、ハイパーバイザが物理ハードウェアのリング0を占有するため、ゲストOSは実際にはリング1などの低い特権レベルで動作することになる。これにより、ゲストOSからの特権命令はハイパーバイザによって横取りされ、安全に処理される。この処理にはオーバーヘッドが伴うが、近年ではIntel VT-xやAMD-Vといったハードウェア支援機能がCPUに搭載され、ハイパーバイザの介入を最小限に抑え、パフォーマンスを大幅に向上させている。これらの機能は、CPUが仮想化を意識した動作モードを提供することで、特権命令の捕捉と変換の効率を高める。 次にメモリ仮想化では、ゲストOSが利用する論理アドレス空間を、ハイパーバイザが物理メモリ上の実際のアドレスにマッピングする処理を行う。各ゲストOSは自身のメモリ空間を独立して管理していると認識するが、その実体はハイパーバイザによって割り当てられた物理メモリの一部である。ハイパーバイザは、ゲストOSが管理するページテーブル(論理アドレスから物理アドレスへの変換情報)を監視し、それを物理メモリ上の実際のページテーブルに二重にマッピングする。この二重変換の処理もまた、オーバーヘッドの原因となるが、最新のハードウェアではIntelのExtended Page Table (EPT) やAMDのRapid Virtualization Indexing (RVI) といった機能が導入され、ハイパーバイザの介入なしにCPUが直接ゲストOSの論理アドレスを物理アドレスに変換できるようになり、メモリ仮想化の効率が飛躍的に向上している。これにより、ゲストOSはより高速に物理メモリを利用できるようになる。 I/O仮想化では、ゲストOSからのディスクやネットワークといったI/Oデバイスへのアクセス要求をハイパーバイザが仲介する。ゲストOSは仮想的なディスクコントローラやネットワークアダプタを認識し、それらに対してI/O命令を発行する。ハイパーバイザはこれらの仮想デバイスをエミュレートし、ゲストOSからの要求を物理デバイスへの適切な操作に変換して実行する。例えば、ゲストOSが仮想ディスクにデータを書き込もうとすると、ハイパーバイザはその書き込み要求を捕捉し、物理ストレージ上の対応する場所にデータを書き込む。ネットワークに関しても同様に、ゲストOSが仮想ネットワークインターフェースを通じてデータを送信すると、ハイパーバイザがこれを物理ネットワークアダプタを介した実際の通信に変換する。このエミュレーション方式は、ゲストOSに変更を加えずに多様なOSをサポートできる利点がある一方で、ハイパーバイザによるエミュレーション処理がボトルネックとなり、パフォーマンスが低下する可能性もある。しかし、多くの仮想化環境では、完全仮想化の枠組みの中で、パフォーマンスが重要な部分に対しては準仮想化ドライバ(Virtioなど)を利用することが一般的である。これは、ゲストOSにそのドライバをインストールすることで、ハイパーバイザとゲストOS間のI/O処理をより効率的に行えるようにするもので、ゲストOSが仮想化環境を「意識する」側面も一部取り入れることで、完全仮想化の利便性を保ちつつ性能を向上させる折衷案とも言える。 完全仮想化のメリットは多岐にわたる。まず、ゲストOSに一切変更を加える必要がないため、既存のOSイメージやアプリケーションをそのまま仮想環境に移行できる「P2V (Physical to Virtual)」が容易である。これにより、古いOSや特定のハードウェアに依存したシステム資産を新しい物理サーバ上で効率的に運用できる。また、幅広い種類のOS(Windows、Linux、BSDなど)をサポートできるため、多様な環境を統合管理するのに適している。各仮想マシンが完全に分離されているため、ある仮想マシンの障害が他の仮想マシンに影響を与えるリスクが低く、セキュリティ面でも有利である。 一方でデメリットも存在する。最も大きなものは、ハイパーバイザによるオーバーヘッドである。ゲストOSからの命令をハイパーバイザが捕捉、変換、実行するプロセスは、物理ハードウェア上で直接実行する場合と比較して、わずかながら処理時間が増加する。特に、ハードウェア支援機能が利用できない環境や、I/O処理が頻繁に発生するワークロードでは、このオーバーヘッドが顕著になる可能性がある。ただし、前述のハードウェア支援機能の進化や、準仮想化ドライバの併用により、このパフォーマンスギャップは年々縮小しており、多くの用途において実用上問題ないレベルに達している。 完全仮想化は、その高い互換性と柔軟性から、エンタープライズ分野のサーバ統合や、開発・テスト環境の構築、レガシーシステムの延命など、多岐にわたる用途で広く利用されている基盤技術であり、システムエンジニアを目指す者にとって理解必須の概念である。

完全仮想化 (カンゼンカソウカ) とは | 意味や読み方など丁寧でわかりやすい用語解説