このセクションでは、ESX Server ホストがどのように仮想マシンからメモリを解放す るかについての背景情報を示します。 ホストは、2 つの方法を使用して、仮想マシン に割り当てられたメモリの量を動的に拡大または縮小します。
ESX Server システムは、仮想マシン内で実行中のゲスト OS にロードされたメモリ バルーン ドライバ(vmmemctl)を使用します。 「メモリ バルーン(vmmemctl)
ドライバ」を参照してください。
ESX Server システムは、ゲスト OS による関与なしに仮想マシンからサーバ スワッ プ ファイルにページングします。 各仮想マシンには、独自のスワップ ファイル があります。 「スワッピング (P.151)」を参照してください。
メモリ バルーン(vmmemctl)ドライバ
vmmemctlドライバは、サーバと協同して、ゲスト OS によって最も価値がないとみ
なされたページを解放します。 このドライバは、同様のメモリ制約下のネイティブ シ ステムの動作と緊密に一致する予測可能なパフォーマンスを提供する専用のバルーニ ング技法を使用します。 この技法は、ゲスト OS に対するメモリ プレッシャーを増や したり減らしたりして、ゲスト独自のネイティブ メモリ管理アルゴリズムをゲスト に呼び出させます。 メモリが十分ではない場合、ゲスト OS は、どのページを解放す 注意 ほとんどの場合、Mem.IdleTax の変更は必要ないか、適切ではありません。
図 9-2 ゲスト OS のメモリ バルーニング
必要な場合は、特定の仮想マシンについて sched.mem.maxmemctl パラメータを設 定することによって、vmmemctlが解放するメモリの量を制限できます。 このオプ ションは、仮想マシンから解放できるメモリの最大量をメガバイト(MB)単位で指 定します。 「詳細仮想マシン属性の設定 (P.158)」を参照してください。
スワップ スペースとゲスト OS
ESX Server とともにメモリをオーバーコミットすることを選択する場合、ゲスト OS に十分なスワップ スペースが確実に存在する必要があります。 このスワップ スペー スは、仮想マシンの構成済みメモリ サイズと仮想マシンの [ 予約(Reservation)] の 差以上でなければなりません。
注意 十分なスワップ スペースを持つゲスト OS を構成する必要があります。 ゲスト OS によっては、追加の制限があります。 詳細については、「スワップ スペースとゲス ト OS (P.150)」を参照してください。
注意 メモリがオーバーコミットされ、ゲスト OS に構成されたスワップ スペースが 不十分な場合、仮想マシンが起動に失敗します。
仮想マシンの障害を防ぐには、仮想マシン内のスワップ スペースのサイズを拡大し ます。
Windows ゲスト OS Windows オペレーティング システムでは、スワップ スペー スをページング ファイルと呼びます。 一部の Windows オペレーティング システ ムは、十分な空きディスク領域がある場合、ページング ファイルのサイズを拡 大しようとします。
Microsoft Windows のマニュアルを参照するか、Windows ヘルプ ファイルで
「ページング ファイル」を検索してください。仮想メモリ ページング ファイル のサイズを変更するための指示に従ってください。
Linux ゲスト OS Linux オペレーティング システムでは、スワップ スペースをス ワップ ファイルと呼びます。 スワップ ファイルの拡大については、次の Linux マ ニュアルページを参照してください。
mkswap Linux スワップ領域を設定します。
swapon ページングとスワッピングのためのデバイスとファイルを有効に
します。
メモリが大量にあり、仮想ディスクが小さいゲスト OS(たとえば、8 GB の RAM と 2 GB の仮想ディスクを持つ仮想マシン)は、スワップ スペースが不十分な場合の影 響を受けやすくなります。
スワッピング
スワップ ファイルは、仮想マシンをパワーオンしたときに、ESX Server ホストによって 作成されます。 スワップ ファイルを作成できない場合、仮想マシンをパワーオンできま せん。 デフォルトでは、スワップ ファイルは仮想マシンの構成ファイルと同じ場所に作 成されます。 このデフォルトを使用せずに、次のように操作することもできます。
仮想マシンごとの構成オプションを使用して、データストアを別の共有ストレー ジの場所に変更する。 「詳細仮想マシン属性の設定 (P.158)」および表 9-7を参 照してください。
ホスト - ローカルのスワップを使用して、データストアをホスト上にローカルで 格納するように指定する。 このように指定すると、ホスト レベルでスワップする ため、SAN の容量を節約できます。 ただし、VMotion のパフォーマンスが少し低 下することがあります。
クラスタでホスト - ローカルのスワップを有効にするには
1 VI Client のインベントリ パネルで、クラスタを右クリックして、[ 設定の編集
(Edit Settings)] を選択します。
2 表示されるクラスタの [ 設定(Settings)] ダイアログ ボックスの左側のペイン で、[ スワップファイルの場所(Swapfile Location)] をクリックします。
3 [ ホストが指定するデータストアにスワップファイルを格納(Store the swapfile in the datastore specified by the host)] オプションを選択し、[OK] をクリックし ます。
4 VI Client のインベントリ パネルで、クラスタのホストのいずれかを選択し、[ 構 成(Configuration)] タブをクリックします。
5 [ 仮想マシン スワップファイルの場所(Virtual Machine Swapfile Location)] を選 択します。
6 [ スワップファイル データストア(Swapfile Datastore)] タブをクリックし、表 示されたリストから使用するローカル データストアを選択して、[OK] をクリッ クします。
7 クラスタのホストごとに、手順 4から手順 6を繰り返します。
スタンドアロン ホストでホスト - ローカルのスワップを有効にするには
1 VI Client のインベントリ パネルでホストを選択し、[ 構成(Configuration)] タ ブをクリックします。
2 [ 仮想マシン スワップファイルの場所(Virtual Machine Swapfile Location)] を選 択します。
3 表示される [ 仮想マシン スワップファイルの場所(Virtual Machine Swapfile Location)] ダイアログ ボックスの [ スワップファイルの場所(Swapfile location)] タブで、[ スワップファイル データストアにスワップファイルを格納
(Store the swapfile in the swapfile datastore)] オプションを選択します。
4 [ スワップファイル データストア(Swapfile Datastore)] タブをクリックし、表 示されたリストから使用するローカル データストアを選択して、[OK] をクリッ クします。
ESX Server ホストは、次の理由でvmmemctlドライバが使用可能ではない場合、ス ワッピングを使用して仮想マシンからメモリを強制的に解放します。
vmmemctl ドライバがインストールされていないため。
vmmemctl ドライバが明示的に無効にされているため。
vmmemctl ドライバが実行されていないため(たとえば、ゲスト OS のブート中)。
vmmemctl ドライバが、現在のシステム要求を満たすだけ十分にすばやくメモリ を解放することが一時的にできないため。
適切に機能しているが、最大バルーン サイズに達したため。
標準の要求ページング技法は、仮想マシンにページが必要な場合、ページをスワップ バックします。
スワップ スペースとメモリのオーバーコミット
スワップ スペースは、未予約の仮想マシン メモリ用に ESX Server ホスト上に予約さ れる必要があり、予約と構成済みメモリ サイズの差です。 このスワップ予約は、どの ような状況下でもシステムが仮想マシン メモリを維持できるようにするのに必要で す。 実際には、スワップ スペースのごく一部分だけが使用されます。
スワップ ファイルと ESX Server 障害
ESX Server システムに障害が起き、スワップ ファイルを使用していた実行中の仮想マ シンがそのシステムにあった場合、それらのスワップ ファイルは、存在し続け、ESX Server システムが再起動したあともディスク領域を占有します。
スワップ ファイルを削除するには 1 仮想マシンを再び起動します。
2 仮想マシンを明示的に停止します。