VMware虚拟机资源分配,核心原则是“按业务实际需求配额,而不是按物理宿主机总资源平均分”,分配前先做容量规划,分配后持续监控并回收空闲资源,才能避免“看着够用、用起来卡顿”或者“大量资源闲置浪费”两种极端。很多运维同行习惯把虚拟机配置得“越大越好”,结果宿主机CPU就绪时间飙升、内存膨胀严重,而实际业务负载可能连一半都用不到,下面这套分配思路,来自多年VMware环境运维的实操经验,希望能帮你把每一GHz内存和每一个vCPU都花在刀刃上。
分配前的核心功课:容量规划是避免浪费的第一道闸门
先摸清物理宿主机家底,再谈虚拟机配置
在vCenter里创建虚拟机之前,先看一眼ESXi主机的实际负载基线,行业共识认为,物理CPU使用率长期超过80% 就需要警惕,内存同理,如果你有5台主机,每台256GB内存,物理内存总容量是1.25TB,但每台主机上已经跑了十几个虚拟机,实际剩余可用资源可能只有总容量的30%左右,按这个量去给新虚拟机分配,才不容易造成宿主机过载。
操作路径:vCenter -> 主机 -> 监控 -> 性能 -> 概览,把时间范围拉到最近30天,看CPU和内存的平均值与峰值,注意,平均值容易被瞬时尖峰掩盖,还要点开“高级”图表看98%基线。
建一个“虚拟机资源配额表”,拒绝拍脑袋分配
很多工程师分配资源靠感觉,这是个坏习惯,建议为每台虚拟机建立一套配额记录表,表格里至少包含以下字段:
- 业务名称与重要性等级(生产/测试/研发)
- 预期峰值并发用户数或TPS
- 操作系统类型与版本(Windows Server通常比Linux更吃内存)
- 中间件或数据库类型(Oracle和SQL Server对内存需求差异很大)
- 分配给虚拟机的vCPU、内存、磁盘大小
- 实际运行一个月后的CPU均值、内存均值、峰值
拿到这些数据后,你在创建虚拟机时心里就有底了,比如一个普通Web前端,2核4GB起步就够了,别一上来就给4核16GB。
VMware虚拟机配置多大合适?CPU分配的三个关键旋钮
vCPU数量与物理核心数的映射关系
给虚拟机配vCPU时,vCPU总数尽量不超过物理主机逻辑核心数的1.5至2倍,如果一台物理主机有16核32线程,那它上面所有虚拟机的vCPU总和最好控制在48到64个以内,超过这个比例,CPU调度器会疲于奔命,CPU就绪时间(%RDY)会明显上升,虚拟机里的应用反而变慢。
具体到什么业务选多大?
- 轻量Web服务器、跳板机:1至2个vCPU
- 中型应用服务器、域控:2至4个vCPU
- 数据库实例、ERP核心节点:4至8个vCPU,且优先选“插槽”方式而非“内核”方式,具体看物理机拓扑
CPU预留、份额、限制三个旋钮怎么拧
这三个参数,是控制CPU资源分配的三个独立维度:
- 预留(Reservation):给虚拟机锁定一部分物理CPU,预留值设得越高,宿主机上其他虚拟机能用的CPU就越少,除非是数据库或实时交易类业务,否则预留值建议设为0,让vSphere根据负载自动调度。
- 份额(Shares):当CPU资源发生争抢时,决定谁先拿到,同等配置下,把核心生产虚拟机份额拉高,把测试机和批处理任务机份额调低,就能让生产业务优先获得CPU时间片。
- 限制(Limit):给虚拟机设置CPU使用上限,这个参数用的好能有效避免资源浪费,比如某台虚拟机平时只用1.5个核心,但偶尔会冲到3个核心,你可以把vCPU设为4,但限制(Limit)设为3000MHz(即3GHz),防止它长期吃满4个核导致其他虚拟机挨饿。
实操建议:在vSphere Client里,编辑虚拟机设置 -> 资源 -> CPU,把“份额”类型从“正常”改为“自定义”,比默认值高或低两档。
VMware虚拟机资源分配比例怎么设置?内存分配才是大头
别被“内存过量分配”欺骗,预留与物理内存要联动
虚拟化平台支持内存过量分配(Overcommitment),意思是所有虚拟机内存总和可以超过物理内存,但这个超售比例一旦失控,就会出现一个典型症状:宿主机内存使用率100%,然后vSphere开始强制回收虚拟机内存(通过透明页共享或交换),这时候虚拟机性能会突然暴跌。
业内专家指出,内存资源分配比例(即所有虚拟机分配内存总量与物理内存之比)控制在5比1到2比1以内比较安全,如果超过这个比例,必须确保虚拟机安装VMware Tools并开启内存回收功能,否则相当一部分内存会被“僵尸进程”白白占住。
用“实际活跃内存”数据做动态调整
打脸时刻来了:你给一台Windows虚拟机配了16GB内存,任务管理器里显示用了10GB,看起来挺合理,但如果在vCenter中查看该虚拟机的“已消耗内存”指标,你会发现它实际只用了4GB,剩下的6GB是被Windows缓存机制占用的“伪占用”。
怎么判断内存够不够?
- 在vCenter中,选中虚拟机 -> 监控 -> 性能 -> 内存。
- 核心看“内存已消耗”和“活动内存”,而不是客户机操作系统汇报的使用率。
- 活动内存”长期低于分配量的40%,就果断降配。
操作路径:编辑虚拟机设置 -> 内存 -> 勾选“预留所有客户机内存(全部锁定)”,这个选项要慎用,只有域控、SQL Server这类对内存延迟敏感的业务才建议开启,普通应用开启后,会让这台虚拟机的全部内存被锁定,宿主机无法回收任何空闲内存,造成内存资源碎片化。
内存热添加:灵活但别滥用
给虚拟机开启“内存热添加”功能后,不用关机就能加内存,看起来省事,但实际上每一台开启了热添加的虚拟机,都会多占一些内存管理开销,而且Windows虚拟机一旦开启热添加,操作系统内存布局会变成NUMA不友好模式,性能有一定损失。非必要不开启,有停机窗口的先关机加配置。
存储分配的浪费更隐蔽:精简置备与厚置备的取舍
存储盘分配的浪费,往往比CPU和内存更严重,一块100GB的厚置备磁盘,不管里面有没有数据,立即占用物理存储100GB,一块100GB的精简置备磁盘,实际写入了30GB,就只占用30GB。
| 磁盘类型 | 初始占用 | 性能表现 | 适用场景 |
|---|---|---|---|
| 厚置备延迟置零 | 立即全额占用 | 好,写入延迟低 | 数据库、生产关键应用 |
| 厚置备即时置零 | 立即全额占用,且预置零 | 最好,但创建耗时长 | 对性能要求极高的核心库 |
| 精简置备 | 仅占用已写入部分 | 随着写入增长,可能有性能抖动 | 测试环境、文件服务器、桌面虚拟化 |
行业共识是,八成以上的虚拟机适合用精简置备,但有一个坑:精简置备的虚拟机如果从100GB增长到80GB,后续你删除了大量数据,存储空间不会自动还给数据存储,需要定期用vmkfstools命令或第三方工具执行回收(UNMAP),具体命令(ESXi CLI):
vmkfstools -K /vmfs/volumes/datastore1/vm_name/vm_name.vmdk
这个命令可以把精简卷里未被使用的块释放掉,让数据存储空间回到可用池。
建立资源回收机制:把闲置虚拟机“降配”提上日程
用vCenter性能图表给虚拟机做年度体检
分配完资源和比例调优,只是下半场的开始,虚拟机的负载是动态的,新业务上线、老业务下线,都会让资源配置偏离真实需求。
推荐一个可落地的季度巡检流程:
- 导出一份vCenter中所有虚拟机的性能数据,时间范围拉到过去90天。
- 按“CPU使用率峰值%”和“内存活动峰值”排序。
- 把CPU峰值低于10%、内存活动低于20%的虚拟机列出来。
- 给这些虚拟机打上“闲置/低负载”标签,与业务负责人确认是否可以关停或降配。
- 降配前记得做好快照,降配后观察两周,性能无异常再清理快照。
自动回收工具:别全靠手工
在规模超过200台虚拟机的环境里,手工巡检效率太低,可以用vCenter自带的“标记与自定义属性”功能,结合PowerCLI脚本定期生成低负载清单:
Get-VM | Get-VMQuestion | Where-Object {$_.MemoryMB -gt 4096 -and $_.MemoryUsage -lt 1024} | Select Name
上面这个MemoryUsage参数表示虚拟机实际使用的内存,如果按这个语法过滤出内存大于4GB但实际使用不到1GB的虚拟机,就要重点排查。
ESXi主机本身的性能监控也不要忽略,SSH登录到主机,执行esxtop命令,按下m键可切换到内存视图,看MEMSZ与MEMUSD两列;按下v键查看虚拟机视图,找出CPU就绪时间持续偏高的虚拟机,判断是不是超分配太猛了。
VMware虚拟机资源分配常见问题解答
新虚拟机分配内存时,直接按物理机总内存的一半来配,会不会显得更流畅?
不会,反而会拖慢整个集群,这种配法相当于把大量内存权限锁定在一台虚拟机上,其他虚拟机申请内存时会频繁触发内存回收和交换,导致整机卡顿,分配内存以业务基准值为依据,不以“看着要大气”为依据。
类型:虚拟机CPU预留设置为0,还要不要设置份额?
要,份额和预留是两套逻辑,预留为0意味着不锁定物理CPU,但份额决定抢CPU时的优先级,把重要虚拟机的份额调高,低优先级机器即使抢占频率高,生产业务仍能稳定拿到资源,注意,份额与预留不要混为一谈,预留是硬保证,份额是软优先级。
精简置备磁盘如何避免后期空间耗尽导致虚拟机挂起?
关键在监控数据存储的可用空间,并提前设置告警阈值,在vCenter里对每个数据存储设置“告警”,当空闲空间低于20%时触发提醒;可对运行数据库的虚拟机改用厚置备延迟置零,数据库进程的随机写入会反复触发精简卷块分配,性能抖动的代价远高于节省的那一点存储空间,定期执行vmkfstools -K回收空闲块是维护精简单卷的基本操作。
最终回到那句话:VMware虚拟机的资源分配,是一门“供需匹配”的平衡术,少一分则卡顿,多一分则浪费,只有基于容量规划、持续监控和主动回收的动态管理,才能让物理资源的使用效率最大化。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/724039.html





