Hypervisor 型虚拟化分两类,区别只有一个问题:Hypervisor 是直接踩在硬件上,还是先装了一套主机操作系统——直接踩的(Type 1)性能损耗只有个位数百分比,用于数据中心;先装一套的(Type 2)损耗明显,只用于在自己电脑上试装。
前两节讲的是虚拟化【能做什么】(4-3、4-4)。从这一节起,开始讲虚拟化有哪几种做法——教材把它分成两大家族:Hypervisor 型(本节)和容器型(下一节)。
之所以先讲 Hypervisor 型,是因为它是云计算最早、最主流的做法,也是前面所有【虚拟机】三个字的准确含义:一个 Hypervisor + 若干台各自带操作系统的客户机。
一、先把三个名词分清
教材在这一节的副题里点名了三个词,它们是同一件事的三个方面:
| 名词 | 是什么 | 类比 |
|---|---|---|
| Hypervisor | 夹在硬件和虚拟机之间的那层调度软件 | 大楼的物业 |
| 主机操作系统(Host OS) | 物理机上先装的那套操作系统 | 楼里原有的住户 |
| 客户机操作系统(Guest OS) | 每台虚拟机里跑的那套操作系统 | 每户人家自己的生活方式 |
用一句话串起来:Hypervisor 负责把硬件切给各台客户机用;而【主机操作系统】这个名字,只有在【这台物理机上本来就装了一套系统】时才有意义。
这就是两类 Hypervisor 的分界:
- 不需要主机操作系统 → Hypervisor 直接管硬件 → Type 1(裸金属型)
- 需要主机操作系统 → Hypervisor 是跑在它上面的一个程序 → Type 2(宿主型)
二、Type 1 与 Type 2
| 项目 | Type 1(裸金属型) | Type 2(宿主型) |
|---|---|---|
| 谁在硬件之上 | Hypervisor 直接管硬件 | 先有主机 OS,再装 Hypervisor |
| 主机操作系统 | 不需要 | 必须有(Windows/macOS/Linux) |
| 客户机操作系统 | 各自独立,互不影响 | 各自独立,但共享主机 OS 的调度 |
| 性能损耗 | 很低(约 2~5%) | 较高(约 10~20%) |
| 典型产品 | VMware ESXi、KVM、Xen | VirtualBox、VMware Workstation |
| 用在哪 | 数据中心、公有云 | 个人电脑上试装、开发测试 |
为什么性能差这么多:Type 2 里,客户机的一条磁盘读写要这样走一趟:
客户机 → Hypervisor → 主机操作系统 → 硬件
而 Type 1 只有两跳:
客户机 → Hypervisor → 硬件
多出来的那一跳,就是损耗的来源。 平时感觉不明显,但同样的硬件跑同样的业务,Type 1 能多带 15%~20% 的负载——在按台数计费的数据中心里,这是一个很大的差别。
顺便说清一个容易混的地方:Type 2 里的【主机操作系统】和【客户机操作系统】是两套不同的系统。你可以在 Windows 上装一个 VirtualBox,里面跑一个 Linux——Windows 是主机,Linux 是客户机。而 Type 1 里没有主机这个概念,所有操作系统都是客户机。
三、动手 Demo:一台机器最多能切几台
看到什么算成功:
==================================================================================================
【Demo 5】Hypervisor 型虚拟化:两层软件,主机 OS 在不在
==================================================================================================
教材把 Hypervisor 型分成两小类,区别只有一句话:
【Hypervisor 是直接踩在硬件上,还是先装了主机操作系统】。
项目 Type 1(裸金属型) Type 2(宿主型)
--------------------------------------------------------------------------------------------
谁在硬件之上 Hypervisor 直接管硬件 先有主机 OS,再装 Hypervisor
主机操作系统 不需要 必须有(Windows/macOS/Linux)
客户机操作系统 各自独立,互不影响 各自独立,但共享主机 OS 的调度
性能损耗 很低(约 2~5%) 较高(约 10~20%)
典型产品 VMware ESXi、KVM、Xen VirtualBox、VMware Workstation
用在哪 数据中心、公有云 个人电脑上试装、开发测试
--------------------------------------------------------------------------------------------
教材里的三个词,对上号就清楚了:
主机操作系统(Host OS)=先装的那套系统,Type 2 才有
客户机操作系统(Guest OS)=虚拟机里跑的那套系统
Hypervisor =夹在硬件和客户机之间的那一层调度软件
最大能切多少台?以 16 核、128 GB 的主机、每台虚拟机 2 核 4 GB 为例:
按 CPU 上限 = 16 / 2 = 8 台
按内存上限 = 128 / 4 = 32 台
实际可开 = 取小者 = 8 台(内存还剩一大截)
这条算式在真实运维里天天用:先看哪个资源先耗尽,就是那台主机的瓶颈。
读结果:
- 最后三行是一个通用算法,所有虚拟化平台都用它:按每一个可分配的资源分别算上限,取最小的那个。本例里 CPU 先耗尽(8 台),内存还剩一大截——说明这台机器是【CPU 型】的,该配 CPU 更省的业务,或者干脆换成内存更小、核心更多的机型。
- 反过来也一样:如果算出来是内存先耗尽(比如每台要 8 GB,128/8 = 16 台,而 CPU 只用到 16 核里的 32 核),那就是【内存型】机器。这类判断决定了你该买什么规格的机器。
30 秒实验
在任意一台电脑上,打开任务管理器(Windows)或活动监视器(macOS),做三件事:
- 记下 CPU 核数和内存总数。
- 按每台虚拟机 2 核 4 GB 算一下能开几台。
- 看一眼当前实际的 CPU 与内存占用率。
做完这个你会得到两个数字:理论上能开几台、实际上现在用了多少。这两个数字的差距,就是虚拟化能给你的空间——它也正是第一节 Demo 里 12% 那个利用率数字的来源。
常见误区
-
错误:Type 1 和 Type 2 的差别只是【快一点慢一点】。——纠正:差别是【能不能用于生产】。一台物理机通常要跑十几到几十台虚拟机,Type 2 那 10%~20% 的损耗乘上去,相当于白白少了几台机器的容量;更关键的是,主机操作系统本身成了单点——它要打补丁、要重启、会蓝屏,而 Type 1 的 Hypervisor 是一个精简得多的东西,重启时间以秒计。所以两类不是好和更好的关系,是用在不同地方的两样东西。
-
错误:客户机操作系统和主机操作系统是同一套系统的不同叫法。——纠正:是两套独立的系统。主机是物理机上先装的那套(只有 Type 2 有),客户机是每台虚拟机里各自装的那套。同一个物理机上,不同的客户机可以装不同的系统——一台 Windows、一台 Linux——这正是虚拟机相比容器的优势之一(下一节会对照)。
-
错误:性能损耗只在 CPU 上。——纠正:IO 上的损耗往往更明显。磁盘和网络的每一次读写都要经过 Hypervisor 转换,所以虚拟机的磁盘性能对【存储怎么接】非常敏感(本地盘、iSCSI、光纤通道差别很大)。这也是为什么生产环境要用共享存储并配多路径(4-14)——不只是为了能迁移,也是为了性能稳定。
-
错误:Hypervisor 是硬件的一部分,买了一台机器就有。——纠正:它是要安装的软件。同一台机器,装 ESXi 是 Type 1 虚拟化主机,装 Windows 就只是一台普通服务器。虚拟化的能力来自你装了什么,不是来自硬件本身——硬件只提供前提(CPU 的虚拟化指令,见 4-3 的 30 秒实验)。
自测三问(点开对答案)
1. 为什么数据中心几乎只用 Type 1,而个人电脑上试装几乎只用 Type 2? —— 因为**两边的约束正好相反**。数据中心约束的是【每台物理机能带多少负载】,一切损耗都要被放大几十倍,而且**不能让一个可有可无的操作系统成为整台机器的单点**——所以宁可用专门为这活做的 Type 1。个人电脑约束的是【我现在就有 Windows,想在上面顺手试一下】——为此重装一套裸金属系统不现实,**损失的 10% 性能也无所谓**。所以这两类的分工,是由使用场景决定的。 2. 【按核数先耗尽】说明这台机器该配什么业务? —— **配那些【核数需求高、内存需求低】的业务**——比如大量并发的轻量计算、无状态的应用服务器。反过来,如果是内存先耗尽,就适合配【吃内存、不怎么算】的业务,比如缓存、内存数据库。**这条判断的价值在于:同一批机器,配对了业务就能多跑几台,配错了就是资源的一半在闲着。** 3. 为什么说主机操作系统成为单点,是 Type 2 不能用于生产的原因? —— 因为**它把【整个虚拟化平台】的可用性绑在了一个通用操作系统上**。这个系统要打补丁、要重启、会被其他程序影响、可能有驱动冲突——**任何一次重启,上面所有虚拟机一起停**。而 Type 1 的 Hypervisor 是一个功能单一的精简系统,**攻击面小、重启快、不容易被别的东西影响**。所以这条不是性能问题,是**故障模型的问题**。- ☐ 下一节(4-6 虚拟化技术② 容器型:容器型、轻量虚拟化基础技术、Docker)
相关笔记
- 虚拟化技术为何如此方便 —— 上一篇:为什么虚拟化会带来便利
- 云计算的服务器是虚拟服务器 —— 虚拟服务器的两种用法
- 云原生的真正含义 —— 容器与虚拟机在云原生里的分工
- 支撑云服务的技术③ 虚拟化技术 —— 四种主流虚拟化软件
- ☁️ 云计算 · 索引 —— 全课路线图