1.4 虚拟化:虚拟机、容器与无服务器


1.4 虚拟化:虚拟机、容器与无服务器

本节摘要:虚拟化是云计算的"魔法"——它让一台物理服务器分身成几十台独立机器。本节从"为什么要虚拟化"讲起,拆解硬件层虚拟化的原理,然后对比虚拟机(VM)、容器、无服务器(Serverless)三种隔离粒度的取舍:隔离强度、资源占用、启动速度各不相同。读完你就能理解,为什么云的弹性依赖虚拟化,以及"选择虚拟机还是容器"这道经典送命题该怎么解。

阅读收获

阅读完本节,你应当能够:

  1. 解释虚拟化如何让一台物理服务器同时运行多个独立操作系统。
  2. 画出虚拟机与容器的架构差异,说明两者谁共享内核、谁各占内核。
  3. 对比虚拟机、容器、无服务器在隔离性、资源占用、启动速度上的差异。
  4. 针对一个具体负载,判断该用虚拟机、容器还是无服务器。

一、问题与直觉

先算一笔账。一台 32 核、128GB 内存的物理服务器,如果只跑一个业务应用,资源的浪费肉眼可见——CPU 平时 5%,内存用不到一半。可如果直接在物理机上装多个应用,又会出现"一个应用崩了、全家跟着遭殃"的问题,还有版本冲突、端口冲突这些说不完的麻烦。

虚拟化解决的就是这个两难:把一台物理机切分成多个互相隔离的"虚拟电脑",每个都能装自己的操作系统、跑自己的应用,互不干扰。 这就是虚拟机监控器(Hypervisor)干的事——它是云厂商机房里的"房东",负责把一间大厂房隔成许多独立房间,每间房有独立的门锁和电路。

理解了虚拟机,容器和无服务器就顺理成章了:它们都是在"隔离"这条路上的演进——虚拟机隔离得太重,容器轻装上阵;容器还要你自己管理,无服务器干脆连管理也省了。三者不是互相替代,而是各自占据不同的取舍位置。

二、核心原理

2.1 虚拟化的本质:切分与隔离

虚拟化(Virtualization)本质是"用软件模拟硬件,把一份物理资源切分成多份逻辑资源"。一个虚拟机就是一台被软件模拟出来的完整计算机:它有虚拟 CPU、虚拟内存、虚拟磁盘、虚拟网卡,里面装一个完整体面的操作系统(Guest OS)。多个虚拟机可以共存于同一台物理机,每个虚拟机以为自己在独占整台机器。

关键组件是 Hypervisor(虚拟机监控器)。它跑在物理硬件之上,负责:给每个虚拟机分配 CPU 时间片、管理内存地址映射、转发磁盘和网络请求。常见实现有 VMware、Hyper-V、KVM。Hypervisor 之上跑的是完整的客户操作系统,所以虚拟机的隔离性极强——一个虚拟机里的内核崩溃,几乎不会影响其他虚拟机。

2.2 从虚拟机到容器:砍掉一层内核

容器(Container)走了另一条路:所有容器共享宿主机的操作系统内核,只隔离用户空间。 容器里不装操作系统,只打包"应用 + 运行依赖",由宿主机内核直接运行。因为省掉了一整层客户操作系统,容器的体积可以小到几十 MB,启动从"分钟级"变成"毫秒到秒级"。

这个差异带来一个连锁反应:因为共享内核,容器之间没有内核级隔离,一个容器里跑了 rm -rf / 级别的操作,理论上可能影响同宿主机的其他容器(取决于内核漏洞与权限配置);也因为共享内核,容器只能跑与宿主机兼容的操作系统内核,不能像虚拟机那样"一台机器里同时跑 Windows 和 Linux"。容器的典型管理平台是 Docker,编排平台是 Kubernetes(详见第 5.1 节)。

2.3 无服务器:连"实例"都隐形

无服务器(Serverless)再把抽象往上推一层。它不直接给你一个"容器"或"虚拟机"让你管,而是让你提交代码/函数,平台按事件触发执行、执行完就回收资源。你既不碰物理机,也不碰操作系统,甚至不常意识到"实例"的存在。FaaS(函数即服务)是它的核心形态,典型产品是 AWS Lambda、Azure Functions、Google Cloud Functions。

2.3 无服务器:连"实例"都隐形

无服务器的优势是"极致免运维 + 按执行计费":没请求时不花钱,有请求才拉起执行。代价是冷启动延迟、单函数超时限制、长连接与有状态应用不友好。第 5.2 节会展开讲。

三、工程实践要点

3.1 三种方式对比

维度 虚拟机 容器 无服务器
隔离性 强(独立内核) 中(共享内核) 中(平台隔离)
资源占用 很低
启动速度 分钟级 秒级 毫秒~秒级
管理粒度 整机 应用包 函数
计费方式 按时租用 按资源/时长 按执行次数与时长
适用场景 强隔离、异构系统 微服务、CI/CD 事件驱动、突发负载

3.2 选型判断

  • 要装 Windows 或异构系统? 只能虚拟机,容器共享 Linux 内核装不了完整 Windows。
  • 要跑数据库等有状态服务? 传统上虚拟机更稳,容器化数据库近年成熟但仍有运维门槛。
  • 应用是事件驱动的(webhook、消息队列触发)? 无服务器最省心,但注意超时限制。
  • 团队已有 Docker 经验、业务是微服务? 容器是主流,配合 Kubernetes 编排。

⚠️ 常见坑:把"容器启动快"当成"容器一定比虚拟机安全"。容器共享内核,攻击面模型与虚拟机不同,对安全要求极高的负载要做额外的隔离加固(如 Kata、gVisor 这类沙箱容器)。

💡 关键直觉:选型本质是问"我要隔离到哪一层、愿意为隔离付多少成本"。隔离越深越安全越贵,隔离越浅越省资源越快——没有绝对最优,只有适合。

3.3 名词关系梳理

虚拟化是总纲,虚拟机/容器是无服务器的"基础设施";无服务器跑的函数,底层往往还是容器。三层是递进关系,不是三个平行选项:你的云厂商很可能在"虚拟机"上跑"容器"再对外提供"函数服务"。理解这一点,看云厂商的文档就不会被层出不穷的名词绕晕——它们只是把虚拟化这个老魔术换着花样演。

四、一个决策案例:照片处理服务怎么选

把三种隔离方式放进同一个真实业务里,选型逻辑会更清楚。假设你要做一个用户上传照片后自动加水印、压缩、生成缩略图的服务。

第一种思路:买几台虚拟机,装上图像处理软件,用户上传时通过消息队列把任务派给这些机器处理。优点是一切可控,缺点是流量不规律时——白天上传多、凌晨几乎为零——你得为"闲着也是闲着"的虚拟机持续付费,还要自己处理扩容。虚拟机适合"负载有规律、需要稳定长驻"的场景。

第二种思路:把处理逻辑写成 Docker 镜像,在容器集群里跑,流量上来时自动加容器副本。比虚拟机灵活,资源利用率高,但你还是得管一个容器集群——节点、镜像、调度策略,都是运维成本。容器适合"负载波动较大、团队愿意投入运维"的场景。

第三种思路:把每个处理步骤写成一个无服务器函数,照片一到对象存储就自动触发函数处理,处理完生成缩略图回写存储。没有请求就不执行、不花钱;并发突然冲高,平台自动帮你扩函数实例。唯一要当心的是函数超时限制——如果单张照片处理超过平台上限(通常几分钟),就得拆步骤或换方案。无服务器适合"负载突发、任务短小、事件驱动"的场景。

三种方案没有谁"最好",只有谁最贴你的团队结构与业务形态:人力富余选容器,追求极致省心选无服务器,有硬性环境要求选虚拟机。现实中很多团队会混用——长驻的 Web 服务用容器,突发批处理用无服务器。

五、常见问题(FAQ)

Q1:Kubernetes 是虚拟化吗?

不是。Kubernetes 是容器编排平台,管的是"容器怎么部署、怎么伸缩、怎么互相发现",不是"怎么切分物理资源"。虚拟化解决资源切分,Kubernetes 解决切分之后怎么管,两者分工不同、常被一起使用。详见第 5.1 节。

Q2:容器能装 Windows 吗?

不能直接用普通容器跑完整 Windows。Windows 容器是特例,且需要 Windows 宿主机;异构的"Linux 上跑 Windows"需要虚拟机层。所以判断"能不能容器化"时,先确认应用与系统栈的兼容性。

Q3:Docker 和容器是一回事吗?

Docker 是最流行的容器运行时与工具集,容器是通用技术概念。除了 Docker,还有 containerd、Podman、CRI-O 等运行时。可以说 Docker 让容器普及,但不能说容器就是 Docker。

Q4:无服务器一定比虚拟机便宜吗?

不一定。无服务器按执行计费,对"稀疏、突发"负载很划算;但如果是 24 小时高频稳定调用,包时长的虚拟机反而更便宜。所谓"便宜"取决于负载形态,账单导向的选择必须用真实用量说话。

Q5:我该先学虚拟机还是容器?

以云原生的主流方向看,容器(及编排)更贴近今天的工程现实;但虚拟机是理解云资源模型的地基,且数据库、遗留系统仍大量跑在虚拟机上。建议顺序:先吃透虚拟机,再学容器,最后了解无服务器。地基越稳,上面的名词越不容易晃。

本节速览

  • 虚拟化本质:用软件把物理资源切分成逻辑资源,让一台物理机跑多套系统。
  • Hypervisor:虚拟机的"房东",负责资源分配与隔离,代表有 VMware、KVM。
  • 虚拟机:每台带完整操作系统,隔离强、占用高、启动慢。
  • 容器:共享宿主机内核,只隔离用户空间,轻量、启动快、移植性强。
  • 无服务器:连实例概念都隐去,按事件执行、按用量计费,极致免运维。
  • 选型逻辑:隔离强度与成本是一对反比,按负载特性选位置。
  • 三层递进:虚拟化 → 容器 → 无服务器,常常同时存在于一朵云内部。
  • 计费真相:无服务器适合稀疏突发负载,高频稳定负载用包时长更划算。

云的骨架已经立起来了:概念、服务模型、部署模型、虚拟化。接下来第 2 章把这些骨架填上血肉——看看云厂商货架上到底摆着哪些服务。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U