在 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内存管理技术包括透明页面共享、内存充气、内存压缩和内存交换。
要求和限制
在运行的VM中添加VMware vCPUs(虚拟CPU)和内存有要求和限制:
- 客户操作系统(OS)必须支持设备热添加。
- 虚拟机硬件兼容性(虚拟硬件版本)为7或更高。
- VMware工具应该安装在客户操作系统上。
- 对于该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.
在添加vCPUs之前,考虑到客户操作系统和VM上安装的应用程序的许可限制。您可能需要购买额外的许可证以在更多处理器上运行软件。
支持热添加的客户操作系统包括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 后,VM 的 vNUMA 将自动禁用。默认情况下,对于具有 8 个或更多 vCPU 的所有 VM,都启用了 vNUMA 以提高性能。让我们更深入地了解 NUMA 和 vNUMA 的概念。
什么是 NUMA?
NUMA(非一致性内存访问)是多处理器系统的架构,允许 CPU 在本地共享内存。CPU 访问内存的时间取决于内存在主板上的位置。每个处理器都有优先权使用“自己的”本地内存,而不是使用安装在另一个处理器附近的内存。换句话说,NUMA 是一种确定一个处理器如何与另一个处理器的内存模块进行交互的方法。NUMA 系统是具有多个系统总线的平台,每个处理器都可以访问主板上的所有内存。安装在靠近该处理器的插槽中的内存的处理器称为NUMA 节点。
如果禁用了 NUMA,或者例如您有两个处理器并且内存仅安装在其中一个处理器的插槽中,则可能会出现性能下降和其他硬件问题。如果您没有足够的内存模块来填充具有两个处理器的主板上的所有插槽,请尝试将内存模块分布到第一个和第二个处理器的内存插槽中。
NUMA帮助运行在NUMA感知操作系统中的系统进程被合理地分配。它允许每个进程访问距离其使用的处理器最近的内存区域。
vNUMA是什么?
虚拟NUMA(vNUMA)是VMware vSphere中的一种优化方法。通过考虑NUMA拓扑并避免内存带宽瓶颈,它确保大型虚拟机的性能最优。使用vNUMA向客户操作系统公开物理NUMA拓扑。因此,虚拟NUMA拓扑基于ESXi主机使用的底层物理硬件的NUMA拓扑。虚拟机的虚拟CPU可以安排访问位于同一NUMA节点上的内存。
vNUMA适用于使用虚拟硬件8或更高版本的虚拟机。创建虚拟机时,可以选择处理器数量和处理器核心数量。CPU插槽数量将自动计算。如果虚拟机使用的vCPU数量高于每个NUMA节点上的核心数量,则vNUMA拓扑将更改并针对客户操作系统进行优化。在这种情况下,客户操作系统可以使用多个NUMA节点。这种虚拟机称为宽或大型虚拟机。
vNUMA禁用时会发生什么?
当启用Hot Add且禁用vNUMA时,虚拟机不会意识到ESXi主机上的底层NUMA节点,并会增加对远程NUMA节点的内存访问。客户操作系统的CPU/内存调度不是最优的。结果,虚拟机性能下降。对于通过应用程序增加线程的宽虚拟机,性能下降是明显的。例如,如果在使用了两个NUMA节点的客户操作系统的虚拟机上启用Hot Add,则此客户操作系统之后只能检测到一个NUMA节点,因为未创建优化的vNUMA拓扑结构。
仅在期望在VM操作期间使用此功能时才启用VMware Hot Add。否则,最好禁用Hot Add以用于跨越多个NUMA节点的VM。如果您不确定是否需要热添加CPU和内存,则可以从开始为VM提供更多的CPU和内存资源。
VMware Hot Add限制
热移除不可行
启用Hot Add /热插拔功能后,无法热移除CPU和内存资源。在将vCPU和内存热添加到VM后,应用程序会使用这些添加的资源。这就是为什么应用程序不支持诸如拆卸已在使用中的内存和CPU容量之类的选项。因此,减少VM的CPU和内存资源的唯一可能方法是关闭VM并编辑已关闭的VM的设置。
内存可扩展性限制
热添加内存的最大数量是初始为VM配置的内存量的x16。例如,如果一个VM有4GB的RAM,这个数量可以增加到64GB。
VMware 热插拔配置
VMware vCPU 热插拔和 VMware 内存热插拔的启用方法有多种。您可以使用图形用户界面或命令行用户界面。
通过 vCenter 启用 Hot Add
要使用 vCenter 启用 VMware Hot Add 选项,请执行以下操作:
- 转到 主机和集群。
- 在导航窗格中选择所需的虚拟机。VM 必须处于关闭状态。
- 单击 编辑设置 图标。 alternatively,您可以右键单击 VM 名称,然后在打开的菜单中单击 编辑设置。
要启用 CPU 热插拔,请执行以下操作:
- 在 编辑设置 窗口中,展开 CPU 设置。
- 在 CPU Hot Plug 行中,选择 启用 CPU Hot Add 复选框。
要启用内存热插拔,请执行以下操作:
现在您可以启动VM并在VM中热添加VMware vCPUs和内存。
在PowerCLI中启用VMware热添加
VMware PowerCLI是用于VMware vSphere管理的强大命令行工具。让我们看看如何在PowerCLI中启用VMware热添加。
- 使用以下命令连接到您的vCenter或ESXi主机,并输入适当的IP地址(在此示例中为192.168.101.205)或主机名:
Connect-VIServer 192.168.101.205
- 在提示时输入凭据。
- 列出您已连接的ESXi主机上的VM。
Get-VM
- 确保要启用热添加的VM已关闭。
-
$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热添加和内存热添加功能:
Get-VM | Get-View | Select Name, `
@{N=”CpuHotAddEnabled”;E={$_.Config.CpuHotAddEnabled}}, `
@{N=”CpuHotRemoveEnabled”;E={$_.Config.CpuHotRemoveEnabled}}, `
@{N=”MemoryHotAddEnabled”;E={$_.Config.MemoryHotAddEnabled}}
在虚拟机配置文件中启用热添加功能
另一种启用 VMware Hot Add 的方法是使用 ESXi 命令行界面 并编辑虚拟机的 VMX 配置文件。打开 ESXi shell 或通过 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。
- 点击 编辑设置。
- 在虚拟机设置窗口中,选择虚拟机选项标签。
- 点击高级以展开选项,并点击编辑配置。
- 在配置参数窗口中,点击添加配置参数。
- 在添加新配置参数部分,输入相应的值以启用VMware热添加内存和VMware vCPU。
- 点击确定以保存设置并关闭窗口。
结论
仅在预计需要使用 VMware Hot Add 来添加运行 VM 的虚拟处理器和内存时,才启用 VMware Hot Add。如果您启用 VMware Hot Add,但没有使用此功能,则对于具有多个 NUMA 节点的大型 VM,性能可能会降低。请使用 VMware VM 监控在 vSphere 中监视 VM 性能和资源使用情况。采用此方法可帮助您确定 VM 是否需要启用 Hot Add 功能。
Source:
https://www.nakivo.com/blog/vmware-vsphere-resources-hotadd-hotplug-explained/