第七章

资源管理:份额、预留、限制三兄弟

第六层 · 资源池/份额/预留/限制 数据库和 AI 服务抢 CPU 怎么办

一、资源不够用的时候,谁说了算

双十一预热开始,云间书店的 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核)

"师傅,这样配完,是不是就高枕无忧了?"小陈问。

"资源管理是'配置',但你还缺'眼睛'。"老周说,"你得知道:资源到底够不够?瓶颈在哪?什么该扩、什么该砍?——这就是性能监控与优化。等双十一真来了,数据会告诉你答案,而不是感觉。下一章先别急,我们先讲两个'省事'的功夫——模板、克隆,让开新机器变成一分钟的事;以及配套的备份与容灾,数据双保险。"

✌ 语言