VMware vSphere資源:HotAdd/HotPlug解釋

在 VMware vSphere 環境中,當您在虛擬機器上運行強大的應用程序時,配置的資源可能不足以滿足所需的性能水平。在這種情況下,最佳解決方案是向虛擬機器添加更多的處理器和內存資源。

當關鍵應用程序在虛擬機器上運行時,您無法承擔關閉虛擬機器並面臨停機的風險。對於這種情況,VMware vSphere 的熱添加功能非常方便。由於 VMware 虛擬化提供的靈活性,您可以向正在運行的虛擬機器添加虛擬硬件 CPU 和 RAM 內存。在這裡,我們將解釋如何啟用 VMware 熱添加、使用案例、配置以及此功能的限制。

什麼是 VMware 熱添加?

VMware 熱添加是一項功能,允許您在虛擬機器運行時添加虛擬設備。默認情況下,您可以在虛擬機器運行時添加虛擬設備,例如虛擬硬盤(不是 IDE)、網絡適配器和 USB 設備。VMware 熱添加使得可以在運行中的虛擬機器上動態添加虛擬 CPU(中央處理器)和 RAM(隨機存取內存)。啟用 VMware 熱添加後,無需關閉虛擬機器即可添加虛擬設備。

VMware 熱添加 vs 熱插拔

您可以注意到,有時 CPU 熱添加功能被稱為 CPU 熱插拔。同樣的邏輯也適用於內存熱添加和內存熱插拔。這兩個術語指的是同一個功能,可以互換使用。

注意:不要混淆VMware動態記憶體和VMware熱添加記憶體,因為這些功能是不同的。VMware動態記憶體是一種用於虛擬機器的高效VMware記憶體管理技術。這個名稱並非官方名稱,但用戶將其稱為Hyper-V的動態記憶體的高級類比。VMware記憶體管理技術包括透明頁面共享、記憶鼓脹、記憶壓縮和記憶交換。

要求和限制

在向正在運行的虛擬機器添加VMware虛擬CPU(vCPU)和記憶體時,有一些要求和限制:

  • 客戶操作系統(OS)必須支持設備熱添加。
  • 虛擬機器硬件兼容性(虛擬硬件版本)為7或更高。
  • 在客戶操作系統上應安裝VMware Tools。
  • 不能為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之前,請考慮客戶OS和VM上安裝的應用程序的許可限制。您可能需要購買額外的許可證以在更多處理器上運行軟件。

客用操作系統支援 Hot Add 的有 Windows Server 2003 及更新版本,以及使用核心版本 3.8 及以上的 Linux。頂級的 Windows Server 版本支援 CPU 和內存的熱插拔。一些低階的 Windows Server 版本僅支援內存的熱插拔。

客戶端作業系統 許可證/版本 記憶體熱新增 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 在許多情況下都是一個有用的功能。但是,請注意,當不真正需要熱添加時,使用此功能會有缺點。VMware Hot Add 預設情況下是被禁用的,原因有很多。讓我們找出原因。

VMware vCPU Hot Add 和 vNUMA

啟用 VMware Hot Add 時,vNUMA 會自動禁用該虛擬機。預設情況下,對於具有 8 個或更多 vCPU 的所有虛擬機,都啟用了 vNUMA 以提高性能。讓我們仔細看看 NUMA 和 vNUMA 的概念。

NUMA 是什麼?

NUMA(非統一記憶體存取)是多處理器系統的架構,允許 CPU 在本地共享內存。 CPU 訪問內存的時間取決於內存在主機板上的位置。每個處理器都優先使用“自己”的本地內存,而不是使用安裝在另一個處理器附近的內存。換句話說,NUMA 是一種確定一個處理器如何與另一個處理器的內存模塊進行交互的方法。NUMA 系統是具有多個系統總線的平台,每個處理器都可以訪問主機板上的所有內存。安裝在靠近該處理器的插槽中的內存的處理器被稱為NUMA節點

如果禁用了 NUMA,或者例如,您有兩個處理器,而內存僅安裝在其中一個處理器的插槽中,則可能會看到性能下降和其他硬件問題。如果在具有兩個處理器的主機板上沒有足夠的內存模塊來填充所有插槽,請嘗試將內存模塊分佈到第一個和第二個處理器的內存插槽中。

NUMA有助於在NUMA感知操作系統上運行的系統進程合理分配。它允許每個進程訪問最接近這些進程使用的處理器的記憶區域。

vNUMA是什麼?

虛擬NUMA(vNUMA)是VMware vSphere中的一種優化方法。它通過考慮NUMA拓撲並避免記憶體帶寬瓶頸,確保大型VM表現最佳。 vNUMA向來賓操作系統公開物理NUMA拓撲。因此,虛擬NUMA拓撲基於ESXi主機使用的底層物理硬件的NUMA拓撲。 VM的虛擬CPU可以安排訪問位於同一NUMA節點上的記憶體。

虛擬硬件8或更高版本的虛擬機器支持vNUMA。創建虛擬機器時,可以選擇處理器數量和處理器核心數。 CPU插槽数量將自動計算。如果VM使用的vCPU數量高於每個NUMA節點上的核心數量,則vNUMA拓撲將發生更改並對來賓OS進行優化。在這種情況下,來賓操作系統可以使用多個NUMA節點。此VM稱為寬或大型虛擬機器。

當禁用vNUMA時會發生什

啟用 Hot Add 並停用 vNUMA 時,虛擬機器對 ESXi 主機上底層 NUMA 節點不知情,並增加對遠程 NUMA 節點的存取記憶體。 客戶操作系統的 CPU/記憶體排程不夠理想。 結果,虛擬機器的性能下降。 對於具有增加應用程式線程的廣泛虛擬機器,性能下降是明顯的。 例如,如果您在使用了兩個 NUMA 節點的客戶操作系統的虛擬機器上啟用 Hot Add,那麼之後此客戶操作系統只能檢測到一個 NUMA 節點,因為未創建優化的 vNUMA 拓撲。

僅在預期在 VM 運行期間使用此功能時才啟用 VMware Hot Add。 否則,最好禁用跨越多個 NUMA 節點的 VM 的 Hot Add。 如果您不確定是否需要熱添加 CPU 和內存,則可以從一開始為 VM 提供更多的 CPU 和內存資源。

VMware Hot Add 限制

無法熱拔除

啟用 Hot Add/熱插件功能後,無法熱拔除 CPU 和內存資源。 在將 vCPU 和內存熱添加到 VM 後,應用程序將使用這些添加的資源。 這就是為什麼應用程序不支持像拉開已在使用中的內存和 CPU 容量等選項的原因。 因此,減少 VM 的 CPU 和內存資源的唯一可能方式是關閉 VM 並編輯已關閉 VM 的設置。

內存可擴展性限制

最大的熱添加內存量是初始為 VM 配置的記憶體量的 x16。 例如,如果一個 VM 有 4 GB 的 RAM,則此量可以增加到 64 GB。

您還有一個限制,即VM的RAM為3 GB(確切地說是3072MB)或更少。您可能會遇到錯誤,或者客戶操作系統(64位Linux和32位Windows)無法檢測到增加的內存。解決方法是關閉VM,將內存增加到超過3072 MB。然後您可以啟動VM並使用VMware記憶體熱添加。

如何配置VMware記憶體熱添加

啟用VMware vCPUs熱添加和VMware記憶體熱添加有多種方法。您可以使用圖形用戶界面或命令行用戶界面。

在vCenter中啟用熱添加

為了使用vCenter啟用VMware熱添加選項,請登錄VMware vSphere Client並執行以下操作:

  1. 轉到主機和集群
  2. 在導航窗格中選擇所需的虛擬機。VM必須處於關機狀態。
  3. 點擊編輯設置圖標。或者,您可以右鍵點擊VM名稱,在打開的菜單中點擊編輯設置

執行以下操作以啟用CPU熱添加:

  1. 編輯設置窗口中展開CPU設置。
  2. CPU熱插拔行中,選中啟用CPU熱添加複選框。

執行以下操作以啟用記憶體熱添加:

  1. 編輯設置窗口中展開記憶體設置。
  2. 内存热插行中,选择启用复选框。
  3. 点击确定保存虚拟机设置并关闭窗口。

现在您可以启动虚拟机并为虚拟机热添加 VMware vCPUs 和内存。

在 PowerCLI 中启用 VMware Hot Add

VMware PowerCLI是用于 VMware vSphere 管理的强大命令行工具。让我们看看如何在 PowerCLI 中启用 VMware Hot Add。

  1. 通过以下命令连接到您的 vCenter 或 ESXi 主机,并输入适当的 IP 地址(在此示例中为 192.168.101.205)或主机名:

    Connect-VIServer 192.168.101.205

  2. 提示时输入凭据。
  3. 列出已连接的 ESXi 主机上的虚拟机。

    Get-VM

  4. 确保要启用 Hot Add 的虚拟机已关闭。
  5. 運行以下命令以啟用所選虛擬機器的內存熱添加和 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 熱添加的命令

  6. 檢查哪些VM啟用了CPU熱添加和記憶體熱添加功能:

    Get-VM | Get-View | 選擇 名稱, `
    @{N=”CpuHotAddEnabled”;E={$_.Config.CpuHotAddEnabled}}, `
    @{N=”CpuHotRemoveEnabled”;E={$_.Config.CpuHotRemoveEnabled}}, `
    @{N=”MemoryHotAddEnabled”;E={$_.Config.MemoryHotAddEnabled}}

在VM配置文件中啟用熱添加

另一種啟用 VMware Hot Add 的方法是使用 ESXi 命令列介面 並編輯虛擬機器的 VMX 配置文件。打開 ESXi shell 或通過 SSH 連接到 ESXi 主機。然後在命令行中運行以下命令以啟用 Hot Add:

  1. 進入 VM 目錄:
    cd /vmfs/volumes/datastore10a/Windows-VM/
  2. 確保 VM 已關機。
  3. 在文本編輯器中打開虛擬機器 VMX 配置文件:
    vi Windows-VM.vmx
  4. 將以下行添加到配置文件中以啟用 vCPU Hot Add:
    vcpu.hotadd = “TRUE”
  5. 將以下行添加到配置文件中以啟用內存 Hot Add:
    mem.hotadd = “TRUE”
  6. 保存 VMX 配置文件並退出文本編輯器。

您可以禁用 VM 中設備的熱插拔功能,例如網絡適配器、磁盤控制器等(默認情況下已啟用)。

devices.hotplug = “false”

此設置不影響 VM 的 CPU 熱插拔和內存熱添加 VMware 配置。

在 VMware vSphere Client 中編輯 VMX 配置

您也可以在 VMware vSphere Client 中編輯 VMX 配置:

  1. 在 VMware vSphere Client 中選擇所需的 VM。
  2. 如果 VM 正在運行,請關閉 VM。
  3. 點擊 編輯設置
  4. 選擇VM 選項標籤在VM 設定視窗中。
  5. 點擊進階以展開選項,然後點擊編輯配置
  6. 新增配置參數中點擊配置參數視窗。
  7. 新增新配置參數部分輸入值以啟用 VMware 熱添加記憶體和 VMware vCPUs。
     
    名稱:mem.hotadd       值:TRUE
    名稱:vcpu.hotadd        值:TRUE
  8. 點擊確定以保存設定並關閉視窗。

結論

只有在您希望在运行中的虚拟机中添加虚拟处理器和内存时,才启用VMware Hot Add功能。如果您启用了VMware Hot Add但不使用此功能,对于大型虚拟机,性能可能会下降,因为不会使用具有多个NUMA节点的拓扑。使用VMware VM监控来监视vSphere中的虚拟机性能和资源使用情况。这种方法可以帮助您确定是否需要启用Hot Add功能。

Source:
https://www.nakivo.com/blog/vmware-vsphere-resources-hotadd-hotplug-explained/