VMware, Inc.は、米国カリフォルニア州に本社を置く米国の上場ソフトウェア企業である。クラウドコンピューティングおよび仮想化ソフトウェアとサービスを提供している。
VMwareの株価・リアルタイムチャート
企業概要
デスクトップソフトウェアは、Microsoft Windows、Linux、およびmacOS上で動作し、サーバ用のエンタープライズ・ソフトウェア・ハイパーバイザーであるVMware ESXiを提供しています。
VMware ESXiは、追加の基礎となるオペレーティングシステムを必要とせずに、サーバハードウェア上で直接動作するベアメタル・ハイパーバイザーである。
製品・サービス
最も注目すべき製品は、ハイパーバイザーです。
VMware は、GSX として知られる最初のタイプ 2 ハイパーバイザーで有名になりました。この製品は、その後、2つのハイパーバイザー製品ラインに発展しました。
ハードウェア上で直接実行される VMware のタイプ 1 ハイパーバイザーと、ホスト型のタイプ 2 ハイパーバイザーです。
VMwareのソフトウェアは、完全に仮想化されたハードウェアのセットをゲスト・オペレーティング・システムに提供します。
ホストは、ゲストのUSB、シリアル、およびパラレルデバイス用のパススルードライバを提供します。
このようにして、VMware の仮想マシンは、すべてのホストがゲストとほぼ同じに見えるため、コンピュータ間での移植性が高くなります。
実際には、システム管理者は、仮想マシンのゲストの操作を一時停止し、そのゲストを別の物理コンピュータに移動またはコピーし、一時停止した時点で正確に実行を再開することができます。
また、エンタープライズサーバでは、vMotion と呼ばれる機能により、同じストレージを共有する似て非なるハードウェアホスト間で、運用中のゲスト仮想マシンを移行することができます(vMotion Storage では、別のストレージを使用することもできます)。
これらの移行は、移行時に仮想マシン上のユーザからは完全に透過的に行われます。
VMware Workstation、Server、ESX は、ターゲットマシン上の CPU 命令の機能を 1 つずつシミュレートするエミュレータ(Bochs など)や、マシン命令のブロックを初回実行時にコンパイルし、その後のコード実行時に翻訳されたコードを直接使用する動的再コンパイルよりも、ターゲット OS をホスト上で実行するための最適化されたパスを採用しています(Microsoft Virtual PC for macOS はこのアプローチを採用しています)。
VMwareのソフトウェアは、物理的に存在しない異なるハードウェア用の命令セットをエミュレートしません。
これによりパフォーマンスは大幅に向上します。
ただし、異なる命令セットを使用するハードウェアホスト間で仮想マシンのゲストを移動する際に、64ビットのIntelやAMDのCPUに見られるような問題が発生する可能性があります。
CPU に不可知なソフトウェアは、起動時にフォークすることで不可知でない限り、通常はこのような移行を乗り切ることができますが、その場合は、ソフトウェアまたはゲスト OS を移動する前に停止し、移動後に再起動する必要があります。
VMware の製品は、x86 命令セットへの仮想化拡張よりも前のものであり、仮想化対応プロセッサは必要ありません。
新しいプロセッサでは、ハイパーバイザーは拡張機能を利用できるように設計されています。
しかし、他の多くのハイパーバイザーとは異なり、VMware はまだ古いプロセッサをサポートしています。その場合、可能な限りCPUを使用して直接コードを実行します(例えば、x86上でユーザーモードや仮想8086モードのコードを実行する場合など)。
カーネルレベルのコードやリアルモードのコードなど、直接実行ができない場合、VMware 製品は、バイナリ変換(BT)を使用してコードを動的に書き換えます。
翻訳されたコードは、通常はアドレス空間の最後にある予備のメモリに格納され、セグメント化メカニズムによって保護されて見えなくなります。
これらの理由から、VMware はエミュレータよりも劇的に高速に動作し、仮想ゲスト OS が同じハードウェア上で直接動作する場合の 80% 以上の速度で動作します。
ある研究では、VMware ESX Serverでは、ネイティブと比較して0~6%の速度低下が見られたと主張している。
VMware のアプローチは、x86 ベースのプラットフォーム上での仮想化の困難さのいくつかを回避します。
仮想マシンは、問題のある命令を置き換えるか、あるいは単にカーネルコードをユーザモードで実行することで、問題のある命令を処理します。
命令を置き換えると、コードが自分自身を読み込んだ場合に、コードが期待した内容を見つけられなくなるリスクがあります。
マシンの状態を読み取るだけの命令は例外を発生させず、プログラムの本当の状態を裏切ってしまうので、ユーザーモードでコードを変更せずに実行しても失敗します。
必要に応じて、元の場所で現在のプログラムカウンタのシミュレーションを行い、ハードウェアコードのブレークポイントをリマッピングするなど、常に書き換えを行う必要があります。
VMware の仮想マシンはユーザモードで動作しますが、VMware Workstation 自体は、特にグローバル記述子テーブル(GDT)と割り込み記述子テーブル(IDT)を動的に切り替えるために、ホスト OS に様々なデバイスドライバをインストールする必要があります。
また、VMware製品ラインでは、一方のパーティションをネイティブに起動し、他方のパーティションをVMware Workstation内のゲストとして使用することで、デュアルブートシステム上で異なるオペレーティングシステムを同時に実行することができます。