一、资源不够用的时候,谁说了算
双十一预热开始,云间书店的 AI 荐书服务和数据库突然同时吃紧。
小陈看着监控:"师傅,db-01 和 ai-01 都在同一台 ESXi 上,现在 CPU 资源不够了,两个 VM 都在抢——怎么办?"
老周:"你猜 ESXi 会怎么分?"
"……谁抢得凶给谁?"
"那叫'丛林法则',不是'资源管理'。"老周说,"VMware 有一套明确的资源分配机制,核心就是三个概念:份额(Shares)、预留(Reservation)、限制(Limit)。记住它们,你就能'说了算'。"
二、份额(Shares):谁在争抢中占优
"份额(Shares)决定了资源不够时,谁优先得到 CPU。"老周画:
份额(Shares)机制:
场景:ESXi 有 8 核,VM 有 3 台,都要 CPU
默认份额(Normal = 1000 份额):
db-01(1000)+ ai-01(1000)+ web-01(1000)= 3000 份
总 8 核 → 每台约 2.67 核
调整份额后:
db-01(高 High = 2000)
ai-01(普通 = 1000)
web-01(低 Low = 500)
总 3500 份 → db 拿 4.6 核,ai 拿 2.3 核,web 拿 1.1 核
注意:份额只在"争抢"时生效(资源充足时大家随便用)
"份额 = 资源紧张时的'优先级权重'。 数据库是命根子 → 给 High;AI 服务重要 → Normal;测试机 → Low。记住:份额不是'分配固定资源',是'排队时的优先权'。"
三、预留(Reservation):保底资源
"份额管的是'争抢时',预留(Reservation)管的是'保底'。"老周说:
预留(Reservation)机制:
给 VM 预留"无论如何都必须保证"的资源量
db-01 预留 4 核 → 就算整个集群资源紧张,
这 4 核也一定属于 db-01(其他 VM 抢不走)
预留的意义:
数据库这种"延迟敏感"的服务:CPU 再紧张也不能卡
预留 = 给关键业务买"保底保险"
代价:
预留的资源"闲时也不能给别人用"(浪费风险)
→ 预留要精准:核心服务才配,别给所有 VM 都留
"一句话:份额是'争抢优先权',预留是'保底承诺'。 数据库可以预留内存(比如 8G 内存预留 6G),保证它永远不会 OOM。"
四、限制(Limit):封顶线
"第三个:限制(Limit)——给 VM 的资源使用封一个'天花板'。"老周说:
限制(Limit)机制:
设置 VM 最多能用多少资源(上限)
test-01 限制 2 核 → 就算物理机闲着 8 核,
它也最多用 2 核(防止测试任务把生产资源抢光)
限制的意义:
① 防止"坏邻居":某个 VM 出问题(死循环/泄露)吃掉所有资源
② 控制成本:给测试环境、非关键业务封顶
③ 多租户隔离(第十一章)
注意:
限制设太低 → 业务被"憋死"(明明有资源却不能用)
→ 限制要保守设置,别卡了正经业务
"份额管'抢',预留管'保',限制管'顶'。 三兄弟配合,你就完全掌控了'资源怎么分'。"
五、资源池:给"部门"分配资源
"有了三兄弟,还要有'分组'工具——资源池(Resource Pool)。"老周说:
资源池(Resource Pool):
把集群资源"切成几块",分给不同"部门/项目"
┌────────────────────────────────┐
│ 集群总资源(24 核 192G) │
│ ├── 生产资源池(16 核 128G) │ ← 网店业务
│ │ ├── db-01 / web-01 / ... │
│ ├── 测试资源池(4 核 32G) │ ← 测试环境
│ │ └── test-01 / test-02 │
│ └── 预留池(4 核 32G) │ ← 备用/突发
└────────────────────────────────┘
资源池好处:
① 部门隔离:测试环境再怎么折腾,抢不到生产池的资源
② 分级管理:给"池"设份额/预留/限制,池内 VM 再细分
③ 成本归属:资源池 = 部门 = 账单(谁用了多少,清清楚楚)
"资源池 = 集群里的'子部门'。 云间书店分'生产池'和'测试池'——测试机随便造,生产永远有保障。"
六、CPU 热插拔与 NUMA:进阶但必考
"最后两个进阶概念,VCP 考试常考,实战也有用。"老周说:
CPU 热插拔(Hot Add):
虚拟机运行中,不关机就能增加 vCPU/内存
场景:业务突然暴涨,在线扩容(先要有 VMware Tools)
注意:部分 Guest OS 不支持(Linux 支持度较好)
NUMA(Non-Uniform Memory Access)非一致性内存访问:
现代服务器:CPU 和内存分成多个"节点"
┌───────────┐ ┌───────────┐
│ CPU0+内存0 │ │ CPU1+内存1 │ ← 两节点
└───────────┘ └───────────┘
CPU0 访问自己的内存0 快,访问内存1 慢(跨节点)
虚拟化影响:
VM 的 vCPU 和内存最好在同一节点("本地访问"性能好)
vSphere 会自动做 NUMA 感知调度
给"大 VM"(多 vCPU)配资源时注意跨节点开销
"NUMA 记一句话:让 VM 的 CPU 和内存'住得近',性能才好。 大多数情况 vSphere 自动处理,你心里有数就行。"
七、场景实操:给云间书店配资源策略
小陈按老周教的,给集群配置了资源策略:
云间书店集群资源策略:
VM 份额 预留 限制
db-01 高(2000) 预留4核8G 无限制(命根子不能封顶)
ai-01 普通(1000) 预留2核 ——
web-01 普通(1000) —— ——
cache-01 低(500) —— ——
mq-01 低(500) —— ——
test-01 低(500) —— 限制2核4G(封顶防失控)
资源池:生产池(16核)+ 测试池(4核)+ 预留池(4核)
"师傅,这样配完,是不是就高枕无忧了?"小陈问。
"资源管理是'配置',但你还缺'眼睛'。"老周说,"你得知道:资源到底够不够?瓶颈在哪?什么该扩、什么该砍?——这就是性能监控与优化。等双十一真来了,数据会告诉你答案,而不是感觉。下一章先别急,我们先讲两个'省事'的功夫——模板、克隆,让开新机器变成一分钟的事;以及配套的备份与容灾,数据双保险。"