PVE支持对虚拟机进行内存热插拔,但需要虚拟机操作系统支持ACPI Memory Hotplug,且需要进行一些额外的配置

PVE配置

在 硬件->处理器 中勾选“启用NUMA”

在 选项->热插拔 中勾选“内存”

Linux虚拟机配置

Linux有些发行版在pve中热添加内存后,可用内存总额仍然没有增加,这是因为内核没有自动上线这部分被热添加的内存块。(在Debian12上出现)

PVE热添加内存->虚拟机操作系统上线内存->内存热添加成功

是否自动上线内存块由内核参数决定

# 查看auto_online_blocks内核参数,如果输出为online则代表启用自动上线内存
cat /sys/devices/system/memory/auto_online_blocks
# 修改内核参数,启用自动上线内存
echo online_movable > /sys/devices/system/memory/auto_online_blocks

或者也可以在grub的内核启动参数中添加memhp_default_state=online

编辑/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet   memhp_default_state=online"

当然,也可以手动上线内存块

# 查看当前内存块,其中类似memory0、memory7、memory38的就是内存块
ls /sys/devices/system/memory/
# 查看当前所有内存块的上线状态
cat /sys/devices/system/memory/memory*/state
# 手动上线目标内存块
echo online > /sys/devices/system/memory/memory38/state