☁️ 第四章 构建云服务的技术
📄 一句话概括

虚拟化做的事只有一件:在一台物理机上装一层软件,把它切成很多台独立的虚拟机——于是【服务器】从一件买来就固定的资产,变成了可以按需分配、随时回收的资源;教材点名的 VMware 与 KVM,分别代表这条路的两端:买服务和自己搭。

📝 本节和前面几节的关系

前两节讲的是地方和机器(4-1、4-2)。这一节是整章的转折点:从这一节起,讲的不再是【机器长什么样】,而是【机器怎么被变成一种可分配的东西】。

第一章的 云计算的服务器是虚拟服务器 讲过虚拟服务器的两种用法(虚拟共享、虚拟独占)和超售的统计学原理。那一节讲的是结果,这一节讲的是怎么做到的:那个能把一台机器切成几十台的东西,就是本节说的虚拟化技术。

一、虚拟化做了什么:把机器变成资源

一句话说清它和物理机的区别:

关键在于多出来的那一层软件。它夹在硬件和操作系统之间,负责两件事:

  1. 切——把 CPU 时间、内存空间、磁盘、网络接口按配额切开
  2. 隔离——让这些切出来的部分互不可见,一台虚拟机里的程序看不到另一台的
对比项 物理机 虚拟机
分配粒度 整台 任意(按核、按 GB 切)
创建时间 采购到货几周 几分钟
搬迁 要搬硬件 可以整体迁到另一台物理机
利用率 按峰值配,平时闲着 可整合,按平均用量配
故障范围 一台 同一台上的所有虚拟机一起停

最后一行是虚拟化最大的代价,也是后面很多技术存在的理由:因为一台物理机上的虚拟机【一起死】,所以才需要 HA 迁移、需要共享存储、需要跨物理机分散(4-14、4-15 会讲)。

二、为什么它是云的地基

云的三个特征——按需、弹性、按量计费——每一条都要靠虚拟化才成立:

云的特征 靠虚拟化提供的什么
按需(想用就开) 开一台虚拟机只要几分钟,不用等采购
弹性(能扩能缩) 扩就是多开几台,缩就是关掉几台
按量计费(用多少算多少) 每个虚拟机的用量可以单独计量

没有虚拟化,云就只能是【主机租用】——你租到的是一台真实的物理机,规格固定、计费按整台、扩缩都要重新签约(1-4 里的四种形态正好说明了这一点)。有了虚拟化,租用的单位才从【一台机器】变成【一份资源】。

三、两种代表:VMware 与 KVM

教材在这里点名了两个名字,它们代表了这条路的两端:

VMware KVM
出身 商用产品 Linux 内核自带
许可 按核订阅 随 Linux 免费
优势 管理工具成熟、生态大、有人兜底 免费、无锁定、公有云普遍在用
弱势 有许可成本、绑定较深 需要自己会搭、自己管
典型用在 企业私有云、传统数据中心 公有云底座、开源云平台

两者性能上早已没有本质差距——都是一个数量级的东西,差在管理工具和商业支持上。所以选择往往不是技术问题,而是这三个问题:

  1. 团队愿意为【不用自己折腾】付钱吗(选 VMware)
  2. 需要避免被某一家绑住吗(倾向 KVM)
  3. 规模多大——台数少时,省下的许可费可能还不够运维多花的人力

这两个名字也对应了云服务商和企业的不同处境:云服务商规模足够大,自己养得起一个把 KVM 用明白的团队,所以倾向于走开源这条路;而中小企业规模不够,买一套成熟产品更划算。

四、动手 Demo:利用率从 12% 到 40%

虚拟化的价值,最直观的算法是看利用率:物理时代按峰值配机器,平均利用率低得惊人;虚拟化之后可以整合。

看到什么算成功:

==================================================================================================
【Demo 3】虚拟化把利用率从 12% 拉到 40%:省下的是整台机器
==================================================================================================
  假设一家公司有 10 台物理服务器,每台 32 核、256 GB 内存。
  业务部门的实际用量的平均值:CPU 12%、内存 12%。

  项目              总量            实际用量        利用率
  --------------------------------------------------------------------------------------------
  CPU(核)         320             38.4            12.0%
  内存(GB)        2560            307.2           12.0%
  --------------------------------------------------------------------------------------------
  也就是说,10 台机器里真正在干活的部分,约等于 1.2 台。

  虚拟化之后,把这 10 台的负载整合进少数几台——按每台留出到 40% 的余量算:

    按 CPU 算,需要 3.0 台
    按内存算,需要 3.0 台
    取大者向上取整 = 3 台

  3 台扛住原来 10 台的活,省下 7 台的电力、机位与维保。
  利用率从 12.0% 提到 40.0%,这就是 4-3 说的【方便】。

  实现虚拟化的四种主流软件(教材点名了前两种):

  软件          类型          许可            常见场景
  --------------------------------------------------------------------------------------------
  VMware        商用 Type 1   按核订阅        企业私有云、传统数据中心
  KVM           开源 Type 1   随 Linux 免费   公有云底座、开源云平台
  Xen           开源 Type 1   免费            XCP-ng、部分云平台
  Hyper-V       商用 Type 1   随 Windows      Windows 为主的机房
  --------------------------------------------------------------------------------------------

读结果:

30 秒实验

在能上网的机器上执行一条命令(Linux 或装了 WSL 的 Windows):

ls /dev/kvm

然后:

  1. 如果这个文件存在——你的这台机器本身就可以当虚拟化主机(KVM 是内核自带的)。
  2. 再执行 egrep -c '(vmx|svm)' /proc/cpuinfo,返回值大于 0 说明 CPU 支持硬件虚拟化。

做完这个你会明白一件事:虚拟化不需要额外买什么硬件,它需要的是 CPU 里那组虚拟化指令——同一块 CPU,开不开这组功能,就决定了它能不能当虚拟化主机。所以虚拟化普及的真正时间点,不是软件发明的 1960 年代,而是这组指令走进每一颗商用 CPU 的那几年。

常见误区

  1. 错误:虚拟化就是【把一个 CPU 分成几份用】,所以性能会按比例下降。——纠正:虚拟化的开销远小于直觉。虚拟机执行的大多数指令是直接在物理 CPU 上跑的(靠 CPU 的硬件虚拟化支持),只有少数特权指令需要拦截处理。实际性能损耗通常在个位数百分比,而不是【分成 8 份就只剩 1/8 的性能】。所以 1 台 32 核切成 8 台 4 核,总的计算能力几乎没少——少的只是【不会同时用到】的那部分冗余。

  2. 错误:既然是免费的,那就该用 KVM,VMware 是浪费钱。——纠正:免费的是软件,不是总成本。KVM 需要你自己搭管理平台、自己做高可用、自己排障、自己承担半夜出事没人接——这些都要人力。规模小时,这些人力比许可费贵;规模足够大、人力摊薄到几百台以上时,KVM 才真正划算。所以这不是【省钱 vs 花钱】,是【把成本记在许可费上还是记在人力上】。

  3. 错误:虚拟化只提高利用率,不改变架构。——纠正:它改变了整个架构的前提。因为虚拟机可以被整体搬走,所以出现了【HA 迁移】;因为可以被快速复制,所以出现了【模板与克隆】;因为可以被大量创建,所以出现了【自动扩缩容】。这些能力在物理机时代都做不了。所以虚拟化不是【让机器用得省一点】,而是让机器变成了软件可以操控的对象——后面所有自动化技术都建立在这件事上。

  4. 错误:一台物理机上的虚拟机互不影响,所以可以随便往上堆。——纠正:它们抢的是同一份资源。CPU 时间、内存带宽、磁盘 IO、网络带宽,全都是共享的。一家虚拟机把磁盘 IO 打满,隔壁的响应时间会一起变差——这种现象叫【吵闹的邻居】。所以生产环境要做资源限额(限核、限内存、限 IOPS),这也是虚拟化管理的主要工作之一。

自测三问(点开对答案) 1. 为什么说【没有虚拟化,云就只能是主机租用】? —— 因为**云的核心是【一份可分配的资源】,而不是【一台可租用的机器】**。主机租用给你的是一台真实机器——规格固定,按台计费,扩缩都要改合同。**只有把机器切开,才可能出现【按核、按 GB、按小时】这种计价单位**,也才可能让弹性和按量计费成立。所以虚拟化不是云的一个功能,是**云之所以能被称为云的前提**。 2. 三家公有云几乎都用开源的 KVM,而企业私有云里 VMware 仍占多数,怎么解释这个差别? —— **因为两者的规模与目标不同**。公有云服务商的规模大到可以把自研和运维的固定成本摊到几十万台机器上,同时**必须避免被单一供应商绑住**(它们自己就是平台方);而企业私有云通常只有几百台以内,**买一套成熟产品、有人兜底,比省下的许可费更值**。同一项技术在不同规模下有不同的最优选择——这也是 2-12 讲【开源的账要算人力】时的同一个道理。 3. 【按 40% 的余量整合】这句话里,40% 是怎么定的? —— **它不是标准,是经验值,取决于业务的波动幅度**。如果业务非常平稳,余量可以留得少一些;如果业务有明显峰值(比如白天忙、月末更忙),就要留得多一些。**判断依据是【历史峰值与平均值之比】**:这个比值越大,需要留的余量越多。所以真实项目里,会先看监控数据里的峰值曲线,再决定每台物理机上放多少虚拟机。

相关笔记