Proxmox VE开启CPU&内存热插拔

热插拔是一项非常使用但危险的动作。

一般来说只推荐热插,不推荐热拔。

一:开启虚拟机的热插拔功能

1、在虚拟机选项里,开启热插拔功能

2、在虚拟机CPU上,开启NUMA

如上图所示,需要开启NUMA。

如果要支持CPU热插拔。需要核数大于VCPU数量。这里需要补充一个概念就是,虚拟机内部的CPU数量,为vcpu数,不是核数。核数是可以为CPU提供的最大CPU数。VCPU≤核数。

CPU热插拔的重点也是这里,需要给虚拟机CPU核心一个范围,vcpu,可以在这个范围内增减。

这是16核心,4vcpu的虚拟机设备管理截图,依旧是4核。

KVM需要关机状态下,更改配置,如果是开机状态,需要关机之后,再开机,配置才会生效

二:热插拔测试

对于windows虚拟机

这里将vcpu改成6核

系统里面,刷新了一下,识别成6核

对于linux虚拟机

在5.4内核的ubuntu上

直接添加就行。

#lscpu 可以看到CPU数量
root@storcli:~# lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   40 bits physical, 48 bits virtual
CPU(s):                          6
On-line CPU(s) list:             0-3
Off-line CPU(s) list:            4,5
Thread(s) per core:              1
Core(s) per socket:              4
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      15

#在添加的过程中,有off-line的处理器,通过下面的命令激活,其中1为开启,0为关闭。cpu3为cpu序号。
echo 1 > /sys/devices/system/cpu/cpu3/online

#对于内核大于3.10的,也可以通过新建文件,实现自动启用新添加的CPU

nano /lib/udev/rules.d/80-hotplug-cpu-mem.rules
#将下面的内容填进去,
SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
SUBSYSTEM=="memory", ACTION=="add", TEST=="state", ATTR{state}=="offline", ATTR{state}="online"
#输入命令,使新规则生效
udevadm trigger 

内存拔插也正常。可以看到图下内存,一点点的减少,最后减少到设定的内存。

但是如果内存降到2G以下,不一定会成功。

建议不使用热拔功能。

Author: 佛西

Leave a Reply

Your email address will not be published.