虛擬化不等於「多用戶登錄」或「鏡像複製」。核心是 **Hypervisor(VMM)** 在 Ring -1(比 Ring 0 更高)運行,利用 CPU 硬體輔助虛擬化,攔截客體 OS 的敏感指令並模擬硬體行為。
兩大架構
| 類型 | 代表 | 原理 | 性能 |
| Type 1 (Bare-metal) | VMware ESXi、Hyper-V、KVM、Xen | Hypervisor 直接運行在硬體上,無宿主 OS | 接近原生(<2% 損耗) |
| Type 2 (Hosted) | VMware Workstation、VirtualBox、Parallels | Hypervisor 作為宿主 OS 上的應用進程運行 | 稍高開銷(5-10%) |
關鍵技術棧
- CPU 虛擬化擴展:Intel VT-x (VMX)、AMD-V (SVM) —— 提供 `VMXON`/`VMLAUNCH`/`VMRESUME` 等指令,硬體級切換上下文。
- 內存虛擬化:EPT (Extended Page Tables, Intel) / NPT (AMD) —— 客體物理地址 → 宿主物理地址二級轉換,無需影子頁表軟件模擬。
- I/O 虛擬化:SR-IOV(單根 I/O 虛擬化)、virtio(半虛擬化驅動)、vhost-net(內核級數據平面)。
- 生命週期管理:libvirt / QEMU / cloud-init / Terraform / Kubernetes (KubeVirt)。
容器 vs 虛擬機
容器(Docker/Podman)共享宿主內核,**非虛擬化**,隔離靠 Namespace + Cgroups,啟動毫秒級、密度極高,但無法運行不同內核/OS。虛擬機完全隔離硬體,可跨 OS(Windows 跑 Linux、Linux 跑 Windows),啟動秒級。
學習路徑建議
- 裸機安裝 ESXi / Proxmox VE,建立 VM、配置網絡/存儲。
- 學習 `virsh` / `qemu-img` / `qemu-system-x86_64` 命令行管理 KVM。
- 閱讀《Understanding the Linux Virtualization Stack》(KVM/QEMU/libvirt 經典圖解)。
- 嘗試嵌套虛擬化(VM 內跑 VM),驗證 VT-x 傳遞。