重要なアプリケーションがVM上で実行されている場合、VMをシャットダウンしてダウンタイムを発生させることは許されません。このシナリオでは、VMware vSphereのHot Add機能が便利です。VMwareの仮想化によって提供される柔軟性のおかげで、実行中のVMに仮想ハードウェアCPUとRAMメモリを追加することができます。ここでは、VMware Hot Addの有効化方法、ユースケース、構成、およびこの機能の制限について説明します。
VMware Hot Addとは何ですか?
VMware Hot Addは、VMが実行中の状態で仮想デバイスを仮想マシンに追加できる機能です。デフォルトでは、VMがオンになっている間に仮想ハードディスク(IDEではない)、ネットワークアダプタ、およびUSBデバイスなどの仮想デバイスを追加できます。VMware Hot Addを使用すると、仮想CPU(中央処理ユニット)とRAM(ランダムアクセスメモリ)を追加することができます。VMware Hot Addが有効になっている場合、仮想デバイスを追加するためにVMをシャットダウンする必要はありません。
VMware Hot AddとHot Plugの違い
時々、CPU Hot Add機能はCPUホットプラグとも呼ばれることに気付くかもしれません。同じロジックがメモリホットアドおよびメモリホットプラグに適用されます。これらの2つの用語は同じものを指し、互換性があります。
注意: VMwareのダイナミックメモリとVMwareのホットアドメモリを混同しないでください、これらの機能は異なります。 VMwareのダイナミックメモリは、仮想マシンの効率的なVMwareメモリ管理のための技術です。この機能に公式の名前はありませんが、ユーザーはこれをHyper-Vのダイナミックメモリの高度なアナログとして言及しています。 VMwareのメモリ管理技術には、透過的なページ共有、メモリバルーン、メモリ圧縮、およびメモリスワップが含まれます。
要件と制限
実行中のVMにVMware vCPU(仮想CPU)およびメモリを追加するための要件と制限があります。
- ゲストオペレーティングシステム(OS)は、デバイスのホットアドをサポートする必要があります。
- 仮想マシンのハードウェア互換性(仮想ハードウェアバージョン)は7以上である必要があります。
- VMware ToolsがゲストOSにインストールされている必要があります。
- VMの場合、障害耐性は有効になっていません。
- ホットアド機能を有効にするには、仮想マシンをオフにする必要があります。
- A VMware vSphere Advanced, Enterprise, or Enterprise Plus license must be used. VMware vSphere Enterprise Plus supports both CPU hot add and memory hot add. Refer to the VMware licensing guide to check available functionality for other editions and guest OSs.
vCPUを追加する前に、VMにインストールされているゲストOSとアプリケーションのライセンス制限を考慮してください。プロセッサの数が多い場合にソフトウェアを実行するための追加ライセンスを購入する必要があります。
ゲストオペレーティングシステムでHot Addをサポートしているのは、Windows Server 2003以降と、カーネル3.8以上を使用するLinuxです。上位のWindows Serverエディションは、CPUとメモリのHot Addの両方をサポートしています。一部の下位のWindows Serverエディションは、メモリのHot Addのみをサポートしています。
ゲスト OS | ライセンス/エディション | メモリのホット追加 | CPU ホットプラグ |
Windows Server 2003 32 ビット/64 ビット | スタンダード、エンタープライズ | はい | いいえ |
Windows Server 2008 32 ビット | スタンダード、エンタープライズ、データセンター | はい | いいえ |
Windows Server 2008 64 ビット | スタンダード、エンタープライズ | はい | いいえ |
Windows Server 2008 64 ビット | データセンター | はい | はい |
Windows Server 2008 R2 | スタンダード、エンタープライズ | はい | いいえ |
Windows Server 2008 R2 | データセンター | はい | はい |
Windows Server 2012 | スタンダード、データセンター | はい | はい |
Windows Server 2012 R2 | スタンダード、データセンター | はい | はい |
Windows Server 2016 | スタンダード、データセンター | はい | はい |
Windows Server 2019 | スタンダード、データセンター | はい | はい |
VMware ホット追加のメリットとデメリット
VMware Hot Addは多くの場合便利な機能です。ただし、Hot Addが本当に必要でない場合には、この機能を使用することにはデメリットがあります。さまざまな理由で、VMware Hot Addはデフォルトで無効になっています。それでは、なぜ無効になっているのか見てみましょう。
VMware vCPU Hot AddとvNUMA
VMware Hot Addを有効にすると、VMのvNUMAは自動的に無効になります。デフォルトでは、8つのvCPU以上を持つすべてのVMに対してvNUMAが有効になっており、パフォーマンスを向上させています。NUMAとvNUMAの概念を詳しく見てみましょう。
NUMAとは何ですか?
NUMA(非一様メモリアクセス)は、複数のプロセッサシステムのためのアーキテクチャで、CPUがメモリをローカルに共有することができるようにします。CPUがメモリにアクセスする時間は、メモリの位置に依存します。各プロセッサは、他のプロセッサの近くにあるスロットにインストールされたメモリを使用するのではなく、「自分自身の」ローカルメモリを使用する優先権を持っています。言い換えれば、NUMAは、1つのプロセッサが別のプロセッサのメモリモジュールとどのように相互作用するかを決定する方法です。NUMAシステムは、各プロセッサがマザーボード上のすべてのメモリにアクセスできる複数のシステムバスを持つプラットフォームです。プロセッサには、このプロセッサの近くにメモリがインストールされたものがあり、これをNUMAノードと呼びます。
NUMAが無効になっている場合、または例えば2つのプロセッサがあり、メモリがそのうちの1つのプロセッサのスロットにのみインストールされている場合、パフォーマンスの低下やその他のハードウェアの問題が発生する可能性があります。2つのプロセッサを搭載したマザーボードのスロットに全てのメモリモジュールを埋める十分なメモリがない場合は、メモリモジュールを第1および第2プロセッサのメモリスロットに分散させるようにしてください。
NUMAは、NUMA対応のオペレーティングシステムで実行されているシステムプロセスが合理的に分散されるのを支援します。これにより、各プロセスがこれらのプロセスによって使用されるプロセッサに最も近いメモリ領域にアクセスできるようになります。
vNUMAとは何ですか?
仮想NUMA(vNUMA)は、VMware vSphereの最適化手法の1つです。NUMAトポロジーを考慮し、メモリ帯域幅のボトルネックを回避することで、大規模なVMが最適に動作するようにします。物理的なNUMAトポロジーは、vNUMAを使用してゲストオペレーティングシステムに公開されます。その結果、仮想NUMAトポロジーは、ESXiホストによって使用される基盤となる物理ハードウェアのNUMAトポロジーに基づいています。VMの仮想CPUは、同じNUMAノード上にあるメモリへのアクセスをスケジュールできます。
vNUMAは、仮想ハードウェア8以上を使用する仮想マシンで利用できます。仮想マシンを作成する際に、プロセッサの数とプロセッサコアの数を選択できます。CPUソケットの数は自動的に計算されます。VMが使用するvCPUの数が各NUMAノード上のコアの数よりも多い場合、vNUMAトポロジーが変更され、ゲストOSで使用するために最適化されます。この場合、ゲストOSは複数のNUMAノードを使用できます。このVMはワイドまたは大規模な仮想マシンと呼ばれます。
vNUMAが無効になった場合、何が起こりますか?
Hot Add が有効になっており、vNUMA が無効になっている場合、仮想マシンは ESXi ホスト上の基礎となる NUMA ノードを認識せず、リモート NUMA ノード上のメモリにアクセスを増やします。ゲスト OS の CPU/メモリ スケジューリングが最適ではありません。その結果、VM のパフォーマンスが低下します。アプリケーションによってスレッドが増加する広い VM の場合、パフォーマンスの低下が顕著です。たとえば、ゲスト OS が2つの NUMA ノードを使用する場合に Hot Add を有効にした場合、最適化された vNUMA トポロジが作成されないため、その後そのゲスト OS は1つの NUMA ノードのみを検出できます。
VM の操作中にこの機能を使用する予定がある場合にのみ VMware Hot Add を有効にします。それ以外の場合は、1つ以上の NUMA ノードにまたがる VM のために Hot Add を無効にする方が良いです。CPU とメモリをホット追加する必要があるかどうか確信がない場合は、最初から VM に対してより多くの CPU とメモリ リソースをプロビジョニングできます。
VMware Hot Add の制限
ホット リムーブは不可能です
Hot Add/hot plug 機能が有効になっている場合、CPU およびメモリ リソースをホット リムーブすることは不可能です。VM に vCPU とメモリをホット追加した後、アプリケーションはこれらの追加されたリソースを消費します。これが、アプリケーションが既に使用中のメモリと CPU 容量を引き離すようなオプションをサポートしない理由です。そのため、VM の CPU とメモリ リソースを減らす唯一の可能な方法は、VM をシャットダウンして電源を切り、電源がオフになっている VM の設定を編集することです。
メモリのスケーラビリティの制限
ホット追加メモリの最大量は、VM にプロビジョニングされたメモリの初期量の x16 です。たとえば、VM に 4 GB の RAM がある場合、この量は最大で 64 GB まで増やすことができます。
また、3 GBのRAM(ちょうど3072 MB)以下のVMにも制限があります。エラーが発生するか、ゲストOS(64ビットLinuxおよび32ビットWindows)が追加されたメモリを検出できません。解決策は、VMをシャットダウンし、メモリの量を3072 MBより大きく増やすことです。その後、VMを起動し、VMwareメモリHot Addを使用できます。
VMware Hot Addの設定方法
VMware vCPUs Hot AddおよびVMwareメモリHot Addを有効にするための複数の方法があります。グラフィカルユーザーインターフェースまたはコマンドラインユーザーインターフェースを使用できます。
vCenterでHot Addを有効にする
VMware Hot Addオプションを有効にするには、vCenterを使用してVMware vSphere Clientにログインし、次の手順を実行します:
- ホストとクラスタに移動します。
- ナビゲーションペインで必要な仮想マシンを選択します。VMは電源がオフになっている必要があります。
- 設定の編集アイコンをクリックします。または、VM名を右クリックし、開いたメニューで設定の編集をクリックします。
CPUホットプラグを有効にするには、次の手順を実行します:
- 設定の編集ウィンドウで、CPUの設定を展開します。
- CPU Hot Plug行で、CPU Hot Addを有効にするチェックボックスを選択します。
メモリホットプラグを有効にするには、次の手順を実行します:
これで、VMを起動し、VMware vCPUsおよびメモリーをホット追加できます。
PowerCLIでVMware Hot Addを有効にする
VMware PowerCLIは、VMware vSphereの管理に使用する強力なコマンドラインツールです。PowerCLIでVMware Hot Addを有効にする方法を見てみましょう。
- 次のコマンドを使用して、vCenterまたはESXiホストに接続し、適切なIPアドレス(この例では192.168.101.205)またはホスト名を入力してください:
Connect-VIServer 192.168.101.205
- プロンプトが表示されたら、資格情報を入力してください。
- 接続したESXiホスト上のVMをリストします。
Get-VM
- Hot Addを有効にしたいVMがオフになっていることを確認してください。
- 選択した仮想マシンでメモリのホット追加と CPU のホット追加を有効にするには、次のコマンドを実行してください。
$VM = Get-VM Windows-VM
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.memoryHotAddEnabled = $true
$spec.cpuHotAddEnabled = $true
$VM.ExtensionData.ReconfigVM_Task($spec)
ここで:
Windows-VMは必要な仮想マシンの名前です。
$spec.memoryHotAddEnabled = $trueはメモリのホット追加を有効にするコマンドです。
$spec.cpuHotAddEnabled = $trueは CPU のホット追加を有効にするコマンドです。 - CPU ホット追加およびメモリ ホット追加機能が有効になっている VM を確認します:
Get-VM | Get-View | Select Name, `
@{N=”CpuHotAddEnabled”;E={$_.Config.CpuHotAddEnabled}}, `
@{N=”CpuHotRemoveEnabled”;E={$_.Config.CpuHotRemoveEnabled}}, `
@{N=”MemoryHotAddEnabled”;E={$_.Config.MemoryHotAddEnabled}}
VM 構成ファイルでホット追加を有効にする
別の方法でVMware Hot Addを有効にする方法は、ESXiのコマンドラインインターフェースを使用して仮想マシンのVMX構成ファイルを編集することです。ESXiシェルを開くか、SSHを介してESXiホストに接続します。次に、次のコマンドをコマンドラインで実行してHot Addを有効にします:
- VMディレクトリに移動します:
cd /vmfs/volumes/datastore10a/Windows-VM/
- VMがオフになっていることを確認します。
- テキストエディタで仮想マシンのVMX構成ファイルを開きます:
vi Windows-VM.vmx - この行を構成ファイルに追加してvCPU Hot Addを有効にします:
vcpu.hotadd = “TRUE” - この行を構成ファイルに追加してメモリHot Addを有効にします:
mem.hotadd = “TRUE” - VMX構成ファイルを保存してテキストエディタを終了します。
ネットワークアダプタ、ディスクコントローラなどのデバイスのVMでのホットプラグ機能を無効にすることもできます(デフォルトで有効になっています)。
devices.hotplug = “false”
この設定は、VMのCPUホットプラグとメモリホットアドのVMware構成に影響しません。
VMware vSphere ClientでVMX構成を編集する
VMware vSphere ClientでVMX構成を編集することもできます:
- VMware vSphere Clientで必要なVMを選択します。
- VMが実行中の場合はVMをシャットダウンします。
- 「設定の編集」をクリックします。
- VM OptionsタブをVM設定ウィンドウで選択します。
- 詳細をクリックしてオプションを展開し、構成の編集をクリックします。
- 構成パラメータの追加をクリックして、構成パラメータウィンドウで設定を追加します。
- 新しい構成パラメータの追加セクションに、VMware Hot AddメモリとVMware vCPUsを有効にする値を入力します。
名前: mem.hotadd 値: TRUE
名前: vcpu.hotadd 値: TRUE - OKをクリックして設定を保存し、ウィンドウを閉じます。
結論
実行中のVMに仮想プロセッサとメモリを追加するために、VMware Hot Addを使用する予定の場合にのみ有効にしてください。VMware Hot Addを有効にするが、この機能を使用しない場合、大規模なVMではパフォーマンスが低下する可能性があります。これは、複数のNUMAノードを持つトポロジーが使用されないためです。vSphereでVMのパフォーマンスとリソース使用状況を監視するためにVMware VMモニタリングを使用してください。この方法により、VMにHot Add機能を有効にする必要があるかどうかを特定することができます。
Source:
https://www.nakivo.com/blog/vmware-vsphere-resources-hotadd-hotplug-explained/