第三章

虚拟机的四大组成

第二层 · vCPU/内存/磁盘/网卡 给“虚拟电脑”配 CPU、内存、磁盘、网卡

一、一台 VM 是怎么"假装"成一台电脑的

"小陈,你创建 VM 的时候,配置了 CPU、内存、磁盘、网卡——现在我们把每个都拆开看。"老周在 vCenter 里打开 VM 的配置页:

VM web-01 配置(虚拟硬件):
  vCPU        :2 颗(虚拟 CPU)
  内存        :4 GB(虚拟内存)
  硬盘        :100 GB(虚拟磁盘 .vmdk)
  网卡        :1 块(虚拟网卡 .vmxnet3)
  CD/DVD      :1 个(虚拟光驱,装系统用)
  USB/Sound   :可选

"记住:虚拟机里的所有'硬件',都是 Hypervisor 用软件模拟出来的。 虚拟机的操作系统(Guest OS)看到的是'普通电脑',但实际访问的每一个硬件,都经过了 Hypervisor 的转换。这就是硬件虚拟化的本质。"


二、vCPU:虚拟的 CPU 核心

"vCPU(Virtual CPU)是虚拟机的处理器,但它的'核'是虚拟出来的。"老周说:

物理 CPU(8 核) vs vCPU(虚拟机里的核):
  物理机有 8 个真实核心
  创建 VM 时配 2 个 vCPU → 这台 VM 看到"自己有 2 核 CPU"
  但这两个 vCPU,其实是在物理机的 8 个核上"轮流转"的

超分(Overcommitment):
  8 个物理核可以分出 20 个 vCPU(因为不是所有 VM 同时满载)
  就像 8 个工位,20 个员工轮流坐(错峰上班)

如何配置 vCPU(实践建议):
  - 单线程/轻量服务:1-2 个 vCPU
  - 数据库/重计算:4-8 个 vCPU
  - 不要"贪多":配太多 vCPU,调度开销反而变大(得不偿失)

"vCPU 数不是越多越好——虚拟机在物理核上'排队'是有调度成本的。给 MySQL 配 32 个 vCPU 而物理机只有 8 核,大部分时间都在排队,性能反而更差。配置原则:够用就好,宁少勿滥。"


三、虚拟内存:物理内存的"分时复用"

"内存是虚拟化里最敏感的资源,因为内存不能像 CPU 一样'排队'。"老周严肃地说:

CPU 可以排队(等一会儿再算)→ 所以 vCPU 可以超分
内存不能排队(数据必须立即存在)→ 所以内存最好不超分!

内存超分的后果:
  物理机 32G,VM 配置加起来 40G → 内存不够
  → Guest OS 以为有 8G,实际分不到 → 性能急剧下降甚至 OOM

虚拟化的内存技术(进阶,了解即可):
  - Memory Ballooning:虚拟机之间"借"闲置内存(回收再分配)
  - Transparent Page Sharing:多个 VM 相同的页共享(省内存)
  - Memory Compression:压缩不常用的内存页(缓解压力)

实践建议(云间书店):
  MySQL(8G)+ Redis(2G)+ Web(4G)+ ... = 29G < 物理 32G
  内存按"真实需求"配,永远留 15-20% 给 Hypervisor 自己。

"内存配置的黄金法则:按需求配,留余量,宁多勿超。 你可以省 CPU,但别省内存——数据库 OOM 是生产事故里最惨的那种。"


四、虚拟磁盘:VM 的"硬盘"就是一堆文件

"虚拟机的硬盘,本质上是一个文件。"老周打开数据存储浏览器:

VM 在存储上的文件组成(一个 VM = 一堆文件):
  web-01.vmx        :VM 配置文件(这台电脑的"身份证")
  web-01.vmdk       :虚拟磁盘文件(这台电脑的"硬盘",100G 在这)
  web-01.nvram      :BIOS 设置
  web-01.vmsd/.vmsn :快照相关文件(第四章讲)
  web-01.log        :VM 日志

vmdk 文件(虚拟磁盘)两种形式:
  厚置备(Thick):一次性分配全部空间,性能稳,占空间
  精简置备(Thin):用多少占多少,省空间,性能略降(会变胖)

例子(云间书店):
  db-01 的 100G 磁盘用"厚置备"(数据库要稳定性能)
  test-01 的 50G 磁盘用"精简置备"(测试机不常用)

"因为磁盘是文件,所以 VM 可以:复制、移动、备份、克隆、快照——这是虚拟化'活'的灵魂。 后面几章(模板、快照、迁移)全靠'磁盘是文件'这个特性。"


五、虚拟网卡与 Guest OS

"最后两样:虚拟网卡和 Guest OS。"

虚拟网卡(vNIC):
  VM 里的网卡也是虚拟的——把物理网卡"切成"很多虚拟网卡
  常见类型:
    vmxnet3   :VMware 高性能虚拟网卡(生产首选,性能好)
    e1000/e1000e:模拟 Intel 网卡(老系统兼容用)
  每块虚拟网卡连到"虚拟交换机"的一个端口(第五章详细讲)

Guest OS(客户机操作系统):
  跑在 VM 里的操作系统(Linux/Windows),就像普通电脑上的系统
  装了 VMware Tools 后:性能更好、能优雅关机、能查 IP 等
  安装 VMware Tools 是 VM 上线的基本操作(别忘了!)

六、场景实操:给云间书店 7 台 VM 做资源配置

小陈按老周教的原则,重新梳理了 7 台 VM 的配置:

云间书店 VM 资源配置表(最终版):
  VM          服务      vCPU   内存    磁盘类型   说明
  web-01      Web      2      4G     精简置备   前端,CPU 要求不高
  db-01       MySQL    4      8G     厚置备     数据库,稳字当头
  cache-01    Redis    2      2G     精简置备   内存型服务
  file-01     文件     2      4G     精简置备   大文件,用空间换
  ai-01       AI 服务   4      8G     厚置备    计算密集
  mq-01       消息队列  2      2G     精简置备   轻量
  monitor-01  监控     1      1G     精简置备   自己人,省点

  合计(物理 8 核 32G):vCPU 17 个(超分 OK)
                         内存 29G(< 32G,留余量 OK)

"师傅,内存 29G 是不是太满了?Hypervisor 自己还要用呢?"小陈问。

"你学会抢答了!"老周笑,"29G 确实太满——ESXi 自己要留 4-5G,还要留缓冲。所以我们把 mq 和 monitor 的内存各砍半,最终压到 26G,留 6G 给 Hypervisor 和突发。记住:物理资源永远要留 15-20% 的余量,给 Hypervisor 自己、给突发流量、给将来。"


七、章末:老周的第二层总结

第二层:虚拟机组成
├── vCPU:虚拟处理器,可以超分(错峰复用),宁少勿滥
├── 内存:虚拟内存,不能超分(OOM 风险),按需配+留余量
├── 虚拟磁盘:一个 .vmdk 文件!厚置备(稳)/ 精简置备(省)
├── 虚拟网卡:vmxnet3(高性能)/ e1000(兼容)
└── Guest OS + VMware Tools:VM 里的操作系统(别忘了装 Tools)

"小陈,这一层你学到最重要的一句话:VM 的一切都是文件、一切都能被调度——但内存是个例外,它对'共享'最敏感。 记住了这个,你配置任何 VM 都不会犯大错。"

"那师傅……磁盘和网卡,好像还有很多故事没讲?"小陈看着白板,"我听说 VMware 有 VMFS、有快照、有虚拟交换机……"

"都记着呢。"老周笑了,"磁盘和网络是虚拟化里最深的两个领域,各占一整章。下一章我们先讲存储虚拟化——你的 VM 磁盘到底放在哪、VMFS 是什么、快照又是什么黑魔法。走吧,带你去看数据存储。"

✌ 语言