小川 大地
日本ヒューレット・パッカード

 前回は、VMware Fault Tolerance(FT)の核心となる「VMware vLockstep」技術の内部動作を見ながら、2台のホストで処理を同期させる手法を説明した。今回は、二つの仮想マシンを一体化させる仕組みやプライマリVMがダウンしたときの振る舞いを中心に解説する。

図1●FTを新規に構成するときの設定方法
図1●FTを新規に構成するときの設定方法
[画像のクリックで拡大表示]

 VMware Fault Tolerance(FT)の設定は簡単である。まず、管理ツールであるvSphere ClientのGUI上で仮想マシンを選択し、右クリックで表示されるメニューから「フォールトトレランスをオン」を選ぶ。実行すると、FTによる保護に向けた準備が始まり、その仮想マシンがプライマリVMとなる(図1)。

 次に、セカンダリVMを稼働させるホストが選択される。セカンダリVMを稼働させるホストの選択には、VMware DRS(Distributed Resource Scheduler)が使われる。VMware DRSは、リソースの使用量に応じて仮想マシンを自動的に再配置するvSphereの機能である。

 VMware DRSが使えない場合は、稼働可能なホストのリストから自動的に選択される。ホストが選択されると、VMotionと同様の仕組みを使って、プライマリVMからセカンダリVMに仮想マシンの状態のコピーが実施される。その後、vLockstepによって、プライマリVMからセカンダリVMへのFTログ送信が開始され、VMware FTによるその仮想マシンの保護が始まる(図2)。

図2●VMware FTによって仮想マシンが保護されている状態
図2●VMware FTによって仮想マシンが保護されている状態
[画像のクリックで拡大表示]

 保護が始まると、前回説明したとおりプライマリVMで発生したイベントがセカンダリVMでリプレイされる(図3)。無論、対外的にはこれら二つの仮想マシンは、あたかも一つの仮想マシンしか動いていないかのように振る舞う。

図3●両方の仮想マシンのコンソールを同時に開いている様子
図3●両方の仮想マシンのコンソールを同時に開いている様子
[画像のクリックで拡大表示]

 この振る舞いに、この技術のミソとなるカラクリが存在する(図4)。そのカラクリとは、セカンダリVMではハイパーバイザーで対外的な出力に該当するものを抑制する、というものである。つまり、事実上プライマリVMでのみ対外的な出力が実施されることになる。対外的な出力とは、例えば、ディスクへの書き込み処理や、ネットワーク送信などが該当する。

図4●セカンダリVMではハイパーバイザーで対外的な出力を抑制する
図4●セカンダリVMではハイパーバイザーで対外的な出力を抑制する
[画像のクリックで拡大表示]