虚拟化
虚拟化(Virtualization) 是把一套物理资源(CPU / 内存 / 磁盘 / 网络)抽象成多套逻辑资源,让多套系统或应用相互隔离、同时运行的技术。
在不增加物理机器的前提下,提高资源利用率、隔离性和可管理性
在一台物理机上运行多个 虚拟机(VM)
架构
硬件
└── Hypervisor
├── VM1 (OS + App)
├── VM2 (OS + App)
└── VM3 (OS + App)
Hypervisor 分类
| 类型 | 说明 | 代表 |
|---|---|---|
| Type 1(裸金属) | 直接跑在硬件上 | ESXi / Hyper-V / Xen |
| Type 2(宿主机) | 跑在宿主 OS 上 | VirtualBox / VMware Workstation |
特点
- ✅ 隔离强
- ❌ 有 OS 开销
- ❌ 启动慢(秒~分钟)
多个应用共享 同一个内核
架构
硬件
└── Host OS
└── Container Runtime
├── Container1 (App)
├── Container2 (App)
└── Container3 (App)
代表
- Docker
- Podman
- Kubernetes(容器编排)
特点
- ✅ 启动极快(毫秒级)
- ✅ 资源利用率高
- ❌ 隔离性 < VM
- ❌ 依赖内核能力
把物理网络抽象成逻辑网络
- VLAN
- VXLAN
- SDN(OpenFlow)
- Kubernetes CNI(Calico / Flannel)
👉 云、K8S 的底座
多块物理盘 -> 统一逻辑存储池
- LVM
- Ceph
- SAN / NAS
- 云盘(EBS / Cinder)
- VDI
- RemoteApp
- Citrix
没有硬件辅助(早期)
- 指令陷阱
- 二进制翻译
- 性能差
现在(主流)
- Intel VT-x
- AMD-V
👉 CPU 原生支持虚拟化,性能接近物理机
常见技术
- 页表映射(Shadow Page Table)
- EPT / NPT(二级页表)
- Ballooning
- HugePage
问题
- 内存超分
- NUMA 影响
- OOM 风险
| 类型 | 说明 |
|---|---|
| 半虚拟化 | virtio |
| 全虚拟化 | 模拟设备 |
| 直通 | PCI Passthrough |
| SR-IOV | 网卡虚拟功能 |
👉 高性能场景(数据库、网络)
| 维度 | 虚拟机 | 容器 |
|---|---|---|
| 内核 | 各自 OS | 共享 |
| 启动 | 慢 | 快 |
| 隔离 | 强 | 中 |
| 密度 | 低 | 高 |
| 典型 | ESXi | Docker |
结论:
- 强隔离 -> VM
- 微服务 / DevOps -> 容器
- 云平台 -> VM + 容器混合
IaaS -> 虚拟机 / 网络 / 存储
PaaS -> 容器 / 平台
SaaS -> 应用
👉 虚拟化是云计算的地基
- 服务器整合(1 台顶 10 台)
- 云平台(OpenStack / 公有云)
- 测试环境
- 灾备 / 快照 / 迁移
- Kubernetes 节点
企业级
- VMware vSphere
- Microsoft Hyper-V
- OpenStack
- Proxmox VE
Linux / 云原生
- KVM + QEMU
- libvirt
- Docker / Podman
- Kubernetes
- CPU 超分比例怎么算?
- NUMA 如何绑定?
- VM 卡顿怎么排查?
- 容器逃逸是什么?
- SR-IOV 如何配置?
- 虚拟化 vs 裸金属数据库?
虚拟化 = 资源抽象 + 隔离 + 调度,是现代云、容器、分布式系统的起点