VM メモリ

最終公開日 : Oct 07, 2026
VM を作成すると、固定量のメモリが VM に割り当てられます。Dynamic Memory Control (DMC) を使用すると、XenServer® 環境における物理メモリの利用率を向上させることができます。DMC は、VM 間でメモリを動的に再割り当てできるメモリ管理機能です。
XenCenter は、メモリタブでメモリ使用量のグラフィカル表示を提供します。詳細については、XenCenter ドキュメント を参照してください。
Dynamic Memory Control (DMC) には、次の利点があります。
  • VM を再起動することなくメモリを追加または削除できるため、ユーザーにシームレスなエクスペリエンスを提供します。
  • ホストが満杯の場合、DMC を使用すると、これらのホストでより多くの VM を起動でき、実行中の VM に割り当てられるメモリ量を比例して削減します。

ダイナミックメモリコントロール (DMC) とは?

XenServer DMC は、実行中の VM のメモリを自動的に調整することで機能し、各 VM に割り当てられるメモリ量を指定された最小メモリ値と最大メモリ値の間に保ち、パフォーマンスを保証し、ホストあたりの VM 密度を高めることができます。
DMC がない場合、ホストが満杯になると、追加の VM の起動は「メモリ不足」エラーで失敗します。既存の VM メモリ割り当てを減らしてより多くの VM のためのスペースを確保するには、各 VM のメモリ割り当てを編集してから VM を再起動します。DMC を使用する場合、XenServer は、定義されたメモリ範囲内で実行中の VM の現在のメモリ割り当てを自動的に削減することで、メモリを再利用しようとします。XenServer は、ホストが満杯の場合でもメモリを再利用しようとします。
注:
Dynamic Memory Control は、仮想 GPU を持つ VM ではサポートされていません。

動的範囲の概念

各 VM について、管理者は動的メモリ範囲を設定できます。動的メモリ範囲とは、再起動を必要とせずに VM からメモリを追加/削除できる範囲です。VM が実行中の場合、管理者は動的範囲を調整できます。XenServer は常に、VM に割り当てられるメモリ量が動的範囲内に収まることを保証します。したがって、VM の実行中にこれを調整すると、XenServer が VM に割り当てられるメモリ量を調整する可能性があります。最も極端なケースは、管理者が動的最小値/最大値を同じ値に設定し、XenServer にこの量のメモリが VM に割り当てられるように強制する場合です。「満杯」のホストで新しい VM を起動する必要がある場合、実行中の VM は新しい VM を起動するためにメモリを「絞り込まれます」。必要な追加メモリは、既存の実行中の VM を事前に定義された動的範囲内で比例的に絞り込むことによって取得されます。
DMC を使用すると、動的な最小メモリレベルと最大メモリレベルを設定でき、VM が動作する動的メモリ範囲 (DMR) を作成できます。
  • 動的最小メモリ: VM に割り当てる下限メモリ。
  • 動的上限: VMに割り当てるメモリの上限。
例えば、動的最小メモリが512 MBに設定され、動的最大メモリが1,024 MBに設定されている場合、VMには512~1024 MBの動的メモリ範囲 (DMR) が与えられ、その範囲内で動作します。XenServerは、DMCを使用する場合、各VMに指定されたDMR内のメモリを常に割り当てることを保証します。

静的範囲の概念

XenServerがサポートする多くのオペレーティングシステムは、メモリを動的に追加または削除するという概念を完全に「理解」していません。その結果、XenServerはVMが再起動する際に消費を要求される最大メモリ量を宣言する必要があります。最大メモリ量を宣言することで、ゲストオペレーティングシステムはそれに応じてページテーブルやその他のメモリ管理構造のサイズを決定できます。これにより、XenServer内に静的メモリ範囲の概念が導入されます。静的メモリ範囲は、VMの実行中に調整することはできません。特定の起動では、動的範囲はこの静的範囲内に常に含まれるように制約されます。静的最小値(静的範囲の下限)は管理者を保護し、OSがXenServerで実行できる最小メモリ量に設定されます。
注:
静的最小レベルはオペレーティングシステムごとにサポートされているレベルに設定されているため、変更しないことをお勧めします。詳細については、メモリ制約の表を参照してください。
静的最大レベルを動的最大レベルよりも高く設定すると、将来的にVMを再起動することなく、より多くのメモリをVMに割り当てることができます。

DMCの動作

VMの自動圧縮
  • DMCが有効になっていない場合、ホストが満杯になると、新しいVMの起動は「メモリ不足」エラーで失敗します。
  • DMCが有効になっている場合、ホストが満杯であっても、XenServerは実行中のVMのメモリ割り当てを定義された動的範囲内で削減することにより、メモリを再利用しようとします。このようにして、実行中のVMは、ホスト上のすべてのVMに対して、動的最小値と動的最大値の間の同じ距離で比例的に圧縮されます。
DMCが有効な場合
  • ホストのメモリが豊富な場合 - すべての実行中のVMは動的最大メモリレベルを受け取ります
  • ホストのメモリが不足している場合 - すべての実行中のVMは動的最小メモリレベルを受け取ります。
DMCを構成する際は、VMに少量のメモリしか割り当てない場合、VMに悪影響を与える可能性があることに注意してください。例えば、メモリの割り当てが少なすぎると、次のようになります。
  • 動的メモリ制御を使用してVMに利用可能な物理メモリの量を減らすと、再起動が遅くなる原因となることがあります。同様に、VMに割り当てるメモリが少なすぎると、起動が遅くなる可能性があります。
  • VMの動的メモリの最小値を低く設定しすぎると、VMの起動時にパフォーマンスの低下や安定性の問題を引き起こす可能性があります。

DMCはどのように機能しますか?

DMCを使用すると、ゲスト仮想マシンを次の2つのモードのいずれかで操作できます。
  1. ターゲットモード: 管理者はゲストのメモリターゲットを指定します。XenServerは、ターゲットを満たすようにゲストのメモリ割り当てを調整します。ターゲットを指定することは、仮想サーバー環境や、ゲストに使用させたいメモリ量を正確に把握している状況で役立ちます。XenServerは、指定したターゲットを満たすようにゲストのメモリ割り当てを調整します。
  2. 動的範囲モード: 管理者はゲストの動的メモリ範囲を指定します。XenServerは、その範囲からターゲットを選択し、ターゲットを満たすようにゲストのメモリ割り当てを調整します。動的範囲を指定することは、ゲスト数の変化やホストメモリの負荷の変化に応じてXenServerがホストメモリを動的に再パーティション化することを望むあらゆる状況で役立ちます。XenServerは、その範囲内からターゲットを選択し、ターゲットを満たすようにゲストのメモリ割り当てを調整します。
注記:
実行中の任意のゲストに対して、ターゲットモードと動的範囲モードをいつでも切り替えることができます。新しいターゲットまたは新しい動的範囲を指定すれば、残りの処理はXenServerが行います。

メモリの制約

XenServerでは、管理者は任意のゲストオペレーティングシステムで、すべてのメモリ制御操作を使用できます。ただし、XenServerはすべてのゲストに対して、以下のメモリプロパティの順序付け制約を適用します。
0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max
XenServerでは、管理者は検証チェックに従って、この制約を満たす任意の値にゲストメモリプロパティを変更できます。ただし、上記の制約に加えて、サポートされている各オペレーティングシステムに対して特定のゲストメモリ構成のみをサポートしています。サポートされる構成の範囲は、使用中のゲストオペレーティングシステムによって異なります。XenServerは、管理者がサポートされている制限を超えるようにゲストを構成することを妨げません。ただし、パフォーマンスや安定性の問題を避けるため、お客様はメモリプロパティをサポートされている制限内に保つことをお勧めします。サポートされている各オペレーティングシステムの最小および最大メモリ制限に関する詳細なガイドラインについては、「ゲストオペレーティングシステムのサポート」を参照してください。
警告:
ゲストメモリを構成する際、オペレーティングシステムがアドレス指定できる物理メモリの最大量を超えないようにすることをお勧めします。オペレーティングシステムがサポートする制限を超えるメモリ最大値を設定すると、ゲスト内で安定性の問題が発生する可能性があります。
すべてのサポートされているオペレーティングシステムにおいて、動的最小値は静的最大値の少なくとも75%である必要があります。これより低い制限は、安定性の問題を引き起こす可能性があります。管理者は、VMのサイズを慎重に調整し、アプリケーションのワーキングセットが動的最小値で確実に機能することを確認することをお勧めします。

xe CLI コマンド

VM の静的メモリプロパティを表示する

  1. 必要な VM の UUID を見つけます。
    xe vm-list
  2. UUID をメモし、コマンド param-name=memory-static を実行します。
    xe vm-param-get uuid=uuid param-name=memory-static-{min,max}
    たとえば、以下は UUID が ec77 で始まる VM の静的最大メモリプロパティを表示します。
    xe vm-param-get uuid= \
        ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \
        param-name=memory-static-max;
        268435456
    この例では、この VM の静的最大メモリが 268,435,456 バイト (256 MB) であることを示しています。

VM の動的メモリプロパティを表示する

動的メモリプロパティを表示するには、上記と同じ手順に従いますが、コマンド param-name=memory-dynamic を使用します。
  1. 必要な VM の UUID を見つけます。
    xe vm-list
  2. UUID をメモし、コマンド param-name=memory-dynamic を実行します。
    xe vm-param-get uuid=uuid param-name=memory-dynamic-{min,max}
    たとえば、以下は UUID が ec77 で始まる VM の動的最大メモリプロパティを表示します。
    xe vm-param-get uuid= \
        ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 \
        param-name=memory-dynamic-max;
        134217728
    この例では、この VM の動的最大メモリが 134,217,728 バイト (128 MB) であることを示しています。

メモリプロパティを更新する

警告:
静的/動的最小/最大パラメータを設定する際は、正しい順序を使用してください。さらに、以下の制約を無効にしてはなりません。
0 < memory-static-min <= memory-dynamic-min <= memory-dynamic-max <= memory-static-max
仮想マシンの静的メモリ範囲を更新します:
xe vm-memory-static-range-set uuid=uuid min=value max=value
仮想マシンの動的メモリ範囲を更新します:
xe vm-memory-dynamic-range-set \
      uuid=uuid min=value \
      max=value
ターゲットを指定することは、仮想サーバー環境や、ゲストに正確にどれくらいのメモリを使用させたいかを知っているあらゆる状況で役立ちます。XenServer は、指定したターゲットに合わせてゲストのメモリ割り当てを調整します。例:
xe vm-memory-target-set target=value vm=vm-name
仮想マシンのすべてのメモリ制限(静的および動的)を更新します:
xe vm-memory-limits-set \
      uuid=uuid \
      static-min=value \
      dynamic-min=value \
      dynamic-max=value static-max=value
注:
  • 変更されない特定の量のメモリを VM に割り当てるには、動的最大値と動的最小値を同じ値に設定します。
  • VM の動的メモリを静的最大値を超えて増やすことはできません。
  • VM の静的最大値を変更するには、VM をシャットダウンする必要があります。

個々のメモリプロパティを更新する

警告:
静的最小レベルは、オペレーティングシステムごとにサポートされているレベルで設定されているため、変更しないでください。詳細については、メモリの制約 を参照してください。
VM の動的メモリプロパティを更新します。
  1. 必要な VM の UUID を見つけます:
    xe vm-list
  2. uuid をメモし、コマンド memory-dynamic-{min,max}=value を使用します
    xe vm-param-set uuid=uuid memory-dynamic-{min,max}=value
以下の例では、動的最大メモリを128 MBに変更します。
xe vm-param-set uuid=ec77a893-bff2-aa5c-7ef2-9c3acf0f83c0 memory-dynamic-max=128MiB