VMware ESX Serverは,プロセッサに仮想化支援機能が実装される前から,ソフトウエアによってx86アーキテクチャ上で仮想化を実現してきた。これまでは,VMware ESX Serverのアーキテクチャや仮想マシンの動作原理について,詳細に説明されることはなかった。ここではVMware ESX Serverのアーキテクチャを説明する。最適な設定や,トラブル時のヒントになれば幸いである。

 なお,概念的な説明も含まれており,ここで説明することがVMware ESX Serverのすべてではないことをご理解いただきたい。

コアとなる仮想マシンの機能

図1●VMware ESX Serverのアーキテクチャ
図1●VMware ESX Serverのアーキテクチャ

 VMware ESX Server 3.0では,従来のVMware ESX Server 2.xと比べて仮想マシンを構成する各機能に大きな変更はない。だが,実装方式が大きく異なる。ここではまず,VMware ESX Server 2.xのアーキテクチャについて説明しよう(図1)。コアとなる仮想マシンの機能は以下の通りだ。

(1)VMX(ユーザー・アプリケーション)
 プログラムの初期化と終了,仮想マシンのパワー・オン/オフ,チェック・ポイントなど,すべての仮想マシンの状態を変更する。また,ネットワークやディスクといったデバイスのエミュレーションと,CD-ROMやシリアル・ポートといったデバイスのバックエンド動作など,仮想マシンのほとんどのインフラを提供する。

(2)VMM(モニター)
 仮想マシンのパワー・オン時にVMXによって作られ,CPUの仮想化とデバイス性能に関する重要な部分を担う。例えば,x86プロセッサで割り込みやメモリー空間を制御するためのIDT(割り込みディスクリプタ・テーブル),GDT(グローバル・ディスクリプタ・テーブル),LDT(ローカル・ディスクリプタ・テーブル)については,VMMが直接CPUに対して制御する。ただし,CPU以外のハードウエアにつては直接制御しない。

(3)AIO(非同期I/Oスレッド)
 ディスク,CD-ROM,Generic SCSI,フロッピなどのI/Oスレッドである。

(4)VMkernel
 ハードウエアの管理および,仮想マシンのスケジューリングとメモリー管理を担う。

(5)MKS(マウス・キーボード・スクリーン)
 リモート・コンソール(リモートMKS)からの入力とグラフィックス・システムのインターフェースを司る。

(6)vmnix
 VMkernelをロードする。仮想マシンとコンソールOSとの間でSCSIデバイスを共有したり,VMFSへのアクセス,コンソールOSからVMM,VMkernelを制御したりするにはvmnixを経由する。なお,コンソールOSは,Red Hat Enterprise Linux 3 update6をベースに作られている。

 仮想マシンがパワー・オンされると,コンソールOS内にVMXとMKSのプロセスが起動する。そしてVMXがVMMを作り,その上で仮想マシンが起動される。仮想マシン内で発行されるCPU命令のうちアプリケーションが使用するユーザー・レベル命令については,通常,物理CPUで直接実行される。一方,仮想マシン内のOSが実行する特権命令はプロセッサのリング機構で,特権命令ではないセンシティブ命令についてはVMMがバイナリ・トランスレーションを行い,それらの命令を直接実行しない仕組みになっている(詳細は後述)。ディスクやネットワークに対するI/O処理は,コンソールOS上のVMXから行われる。

この先は会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら