一、一台 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 是什么、快照又是什么黑魔法。走吧,带你去看数据存储。"