概念
虚拟化:把一份物理资源(服务器、存储、网络)抽象成多份逻辑资源,让多个"虚拟"的实体共享同一份硬件。
类型
一、服务器虚拟化(最主流)
在一台物理服务器上运行多个虚拟机(VM),每个 VM 有独立的操作系统。
实现方式:
1. 全虚拟化(Full Virtualization)
虚拟机监视器(Hypervisor)模拟完整的硬件,客户操作系统不需要修改就能运行。
2. 半虚拟化(Paravirtualization)
客户操作系统经过修改,知道自己运行在虚拟环境中,通过专门的接口与 Hypervisor 协作。
性能更好,但需要操作系统支持。
3. 硬件辅助虚拟化
现代 CPU 内置虚拟化支持:
- Intel VT-x;
- AMD-V。
它们提供了专门的指令和运行模式,让 Hypervisor 能更高效地管理虚拟机(把原本需要软件模拟的操作交给硬件)。
这是现代虚拟化性能的基础——需要在 BIOS 中开启。
二、容器虚拟化
前文提到过:容器共享宿主内核,通过 namespace 和 cgroups 隔离。比虚拟机更轻量,但隔离性较弱。
三、其它
- 桌面虚拟化(VDI):把桌面环境集中到服务器,用户通过瘦客户端访问;
- 应用虚拟化;
- 网络虚拟化(SDN、VPC);
- 存储虚拟化。
有什么用
一、提高资源利用率
一台物理服务器如果只跑一个应用,CPU 利用率可能只有 10%–20%。
虚拟化为多个 VM 后,利用率可以提升到 60%–80%。
这是云计算的经济基础——云厂商正是靠把一台物理机切成多个虚拟机来降低成本。
二、隔离
不同应用运行在不同的 VM 中,互不干扰。一个 VM 崩溃或被攻击,不影响其它 VM。
三、灵活性与快速交付
创建一台虚拟机只需几分钟(而采购、上架、配置一台物理服务器需要数天到数周)。
四、便于迁移和备份
虚拟机本质上是文件(磁盘镜像 + 配置文件)——可以整体复制、快照、迁移。
五、资源调度与弹性
云平台可以根据负载自动创建或销毁 VM,实现弹性伸缩。
代价
一、性能开销
虚拟化会引入一定的性能损失。
- CPU:有了硬件辅助虚拟化后,开销很小(通常 1%–5%);
- 内存:地址转换(虚拟地址 → 物理地址 → 机器地址)的开销,通过 EPT/NPT 等硬件特性大幅优化;
- I/O:开销相对明显,通过 SR-IOV、设备直通(Passthrough)等技术优化。
二、复杂度
需要管理 Hypervisor、镜像、网络、存储——运维复杂度增加。
三、"吵闹的邻居"问题(Noisy Neighbor)
共享同一台物理机的多个 VM 之间会相互竞争资源。如果某个 VM 占用大量 CPU 或 I/O,可能影响其它 VM 的性能。
云厂商通过资源配额和调度策略来缓解,但无法完全消除。
常见工具
- 企业级:VMware vSphere、Microsoft Hyper-V、Citrix XenServer;
- 开源:KVM(Linux 内核内置,是多数云厂商的基础)、Xen、Proxmox VE;
- 桌面:VirtualBox、VMware Workstation、Parallels Desktop;
- 容器:Docker、containerd、Podman。
一个延伸
嵌套虚拟化:在虚拟机里再跑虚拟机。用于开发测试、云计算教学等场景。
现代 CPU 已支持,但性能开销较大。
说明:本文为虚拟化技术的知识整理。