You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用govc CLI为VMware ESXi上的指定虚拟机设置CPU亲和性

解决govc设置VMware ESXi虚拟机CPU亲和性的问题

我之前也碰到过这个问题——govc确实没有专门的命令来直接设置VM的CPU亲和性,但其实我们可以通过修改虚拟机的高级配置参数来实现,这和你在ESXi GUI里操作的逻辑是完全一致的。

核心原理

VMware ESXi里的CPU亲和性是通过虚拟机的高级配置参数来控制的:

  • 如果要让整个虚拟机的所有vCPU都限制在指定的物理CPU范围内,使用全局参数 sched.cpu.affinity,值可以是逗号分隔的单个CPU编号,或者用连字符表示的范围(比如2-8、9,10,11,12,13,14,15,16)。
  • 如果需要给每个vCPU单独绑定特定物理CPU,可以用 sched.cpu.N.affinity(N是vCPU的编号,从0开始),比如 sched.cpu.0.affinity="2" 表示把第1个vCPU绑定到物理CPU 2。

具体操作步骤

1. 查看目标虚拟机的vCPU数量(可选但建议)

先确认虚拟机的vCPU总数,避免设置超出范围的参数:

govc vm.info -json <VM_NAME_OR_ID> | jq '.VirtualMachines[0].Config.Hardware.NumCPU'

如果没有安装jq,直接执行govc vm.info <VM_NAME_OR_ID>,在输出里找NumCPU字段即可。

2. 设置全局CPU亲和性(针对整个VM)

比如你需要让虚拟机#1使用物理CPU 2-8,虚拟机#2使用9-16:

# 为虚拟机#1(假设ID是1,也可以用虚拟机名称)设置CPU亲和性范围2-8
govc vm.change -vm 1 -e sched.cpu.affinity="2-8"

# 为虚拟机#2(ID是2)设置CPU亲和性范围9-16
govc vm.change -vm 2 -e sched.cpu.affinity="9-16"

3. 验证设置是否生效

执行以下命令查看虚拟机的CPU亲和性配置:

# 查看虚拟机#1的CPU亲和性参数
govc vm.info -e sched.cpu.affinity 1

# 查看虚拟机#2的CPU亲和性参数
govc vm.info -e sched.cpu.affinity 2

如果设置成功,输出会显示对应的 sched.cpu.affinity值。

4. (可选)为单个vCPU设置亲和性

如果需要更精细的控制,比如把虚拟机的vCPU 0绑定到物理CPU 2,vCPU 1绑定到3:

govc vm.change -vm <VM_NAME_OR_ID> \
  -e sched.cpu.0.affinity="2" \
  -e sched.cpu.1.affinity="3"

注意事项

  • 建议先关闭虚拟机:虽然部分场景下支持在线修改CPU亲和性,但为了避免虚拟机运行异常,最好先关机再配置,设置完成后再开机。
  • 确认物理CPU编号:ESXi的物理CPU编号从0开始,你可以用govc host.cpu命令查看主机的CPU信息,确保设置的范围在有效范围内,否则可能导致虚拟机无法启动。
  • 参数格式兼容:govc支持用连字符(-)表示范围,也支持逗号分隔单个编号,两种格式都可以被ESXi正确识别。

内容的提问来源于stack exchange,提问作者PainIsAMaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:57:43