来源:Notion ACP学习笔记 + 阿里云开发者社区 + 网络资料整理
一、详细讲解
1.1 虚拟化概述
**虚拟化(Virtualization)**是将物理计算资源(CPU、内存、存储、网络)抽象成虚拟资源池的技术,使得一个物理服务器可以同时运行多个相互隔离的虚拟机。
虚拟化的核心价值:
- 资源利用率提升:一台物理机跑多个 VM,充分利用 CPU 空闲算力
- 成本降低:减少物理服务器采购,降低机房空间和电力消耗
- 隔离性强:每个 VM 独立运行,故障互不影响
- 快速部署:分钟级创建 VM vs 传统物理机数天交付
- 弹性伸缩:根据负载动态创建/销毁 VM
1.2 CPU 虚拟化(重点)
CPU 虚拟化的原理
CPU 虚拟化让一个物理 CPU 模拟出多个虚拟 CPU(vCPU),每个 VM 认为自己独占一个完整的 CPU。
两种 CPU 虚拟化架构:
| 架构 | 说明 | 特点 |
|---|---|---|
| 全虚拟化 | VM 通过二进制翻译模拟硬件,Guest OS 无需修改 | 性能损耗较大,但兼容性好 |
| 半虚拟化 | Guest OS 经过修改,主动配合 Hypervisor | 性能好,但需要修改 Guest OS |
| 硬件辅助虚拟化 | CPU 提供 VT-x/AMD-V 硬件支持,Guest OS 无需修改 | 性能接近物理机,主流方案 |
阿里云 ECS 使用的虚拟化技术:
- 基于 KVM(Kernel-based Virtual Machine)+ 硬件辅助虚拟化(Intel VT-x / AMD-V)
- 通过 virtio 驱动优化 I/O 性能
vCPU 算力计算
单核 vCPU 算力 ≈ 1 个物理 CPU 超线程的算力
- 1 个物理核心(Core)= 2 个逻辑核心(Thread,超线程)
- 1 个 vCPU ≈ 1 个超线程的算力
ECS 实例规格与 vCPU 的关系:
ecs.g6.large = 2 vCPU + 8 GiB 内存 ecs.g6.xlarge = 4 vCPU + 16 GiB 内存 ecs.c6.2xlarge= 8 vCPU + 16 GiB 内存CPU QoS(服务质量)三种控制策略
| 策略 | 说明 | 场景 |
|---|---|---|
| Guaranteed(保证型) | 100% 保证规格,性能稳定 | 核心数据库、中间件 |
| Burstable(突发型) | 基准算力低,可突发向上 | 开发测试、Web 应用 |
| Shared(共享型) | 多个实例共享物理资源 | 轻量级应用、爬虫 |
1.3 内存虚拟化(重点)
内存虚拟化的原理
内存虚拟化将物理内存抽象为虚拟内存空间,每个 VM 被赋予一块连续、超大的虚拟内存地址。
内存虚拟化的两种模式:
| 模式 | 说明 | 特点 |
|---|---|---|
| 软件模拟 | Hypervisor 模拟虚拟内存地址到物理地址的映射表 | 灵活但性能损耗大 |
| 硬件辅助(EPT/NPT) | CPU 自动完成两级地址转换(VA → PA → MA) | 性能接近物理机 |
地址翻译三级跳:
虚拟地址 (VA) → 物理地址 (PA) → 机器地址 (MA) (VM 视角) (Hypervisor 分配) (实际硬件)内存气泡(Memory Ballooning)
Hypervisor 通过内存气泡机制,从内存使用率低的 VM 借调内存给内存紧张的 VM,提高整体内存利用率。
内存复用技术:
- 内存气泡:动态回收空闲 VM 内存
- 内存压缩:对不活跃内存页面进行压缩
- Swap:将内存换出到磁盘(性能会下降)
1.4 NUMA 架构与 vCPU 绑定
NUMA(Non-Uniform Memory Access):非统一内存访问架构
- 每个 NUMA 节点 = 1 组 CPU + 本地内存
- 跨 NUMA 访问内存延迟远高于本地访问
- 阿里云 ECS 大规格实例(≥ 8 vCPU)默认采用 NUMA 架构
性能优化建议:
- 对延迟敏感的应用:将进程绑定到本地 NUMA 节点
- ECS 开启 NUMA 功能:让 VM 的 vCPU 和内存尽量在同一 NUMA 节点
1.5 I/O 虚拟化
| 技术 | 说明 |
|---|---|
| virtio | 半虚拟化 I/O 驱动,VM 无需模拟真实硬件,Hypervisor 提供虚拟设备,性能好 |
| SR-IOV | 单根 I/O 虚拟化,让 VM 直接访问物理网卡,绕过 Hypervisor,性能最优 |
| VF(Virtual Function) | SR-IOV 虚拟出的功能接口,一个物理网卡可虚拟出多个 VF |
1.6 阿里云 ECS 实例分类
| 实例族 | 特点 | 适用场景 |
|---|---|---|
| 通用型(g) | 平衡 CPU 和内存 | Web 应用、中等负载 |
| 计算型(c) | CPU 占比高 | 高性能计算、批量处理 |
| 内存型(r) | 内存占比高 | 数据库、缓存 |
| 本地 SSD 型(i) | 高性能本地盘 | 低延迟数据库 |
| GPU/FPGA 型(gn) | 异构计算 | AI 推理、深度学习 |
| 弹性裸金属(ebm) | 物理机体验 | 核心数据库、需物理隔离 |
二、背诵版(Night Before Exam)
CPU 虚拟化
KVM + VT-x = 阿里云 ECS 的底层虚拟化技术
- 全虚拟化 = 二进制翻译(慢)
- 半虚拟化 = 修改 Guest OS(快但不通用)
- 硬件辅助虚拟化 = VT-x/AMD-V = 主流 = 快
vCPU 算力
1 vCPU ≈ 1 个物理 CPU 超线程的算力 1 物理核 = 2 vCPU(超线程)
CPU QoS 三种策略
Guaranteed(保证)/ Burstable(突发)/ Shared(共享)
- 保证型:金融数据库,要稳定
- 突发型:Web 开发测试,省钱
- 共享型:爬虫、离线任务
内存虚拟化
地址翻译:VA → PA → MA(虚拟→物理→机器) EPT/NPT = 硬件辅助内存虚拟化 = 主流方案 内存气泡 = Hypervisor 动态回收空闲 VM 内存
NUMA
NUMA = 非统一内存访问 = 本地访问快、跨节点访问慢 大规格 ECS(≥ 8 vCPU)默认 NUMA 架构
三、速记版(考前 5 分钟回忆)
✅ 虚拟化 = 一台物理机变多台虚拟机 ✅ KVM = 阿里云 ECS 底层虚拟化引擎 ✅ VT-x/AMD-V = CPU 硬件辅助虚拟化 = 主流 ✅ 1 vCPU ≈ 1 超线程算力 ✅ 1 物理核 = 2 vCPU(超线程) ✅ EPT = 硬件辅助内存虚拟化 = 零损耗 ✅ 内存气泡 = 动态回收空闲 VM 内存 ✅ NUMA = 本地访问快,跨节点慢 ✅ virtio = 半虚拟化 I/O 驱动 = 性能好 ✅ SR-IOV = 网卡硬件虚拟化 = 最高性能 ✅ 通用型 g = 平衡,计算型 c = CPU 高,内存型 r = 内存高四、测试练习题
单选题
1. 阿里云 ECS 底层使用的虚拟化技术是?
- A. VMware ESXi
- B. Xen
- C. KVM + 硬件辅助虚拟化 ✅
- D. Hyper-V
答案:C
解析:阿里云使用 KVM(Kernel-based Virtual Machine)配合 Intel VT-x / AMD-V 硬件辅助虚拟化。
2. 关于 vCPU 和物理 CPU 的关系,以下说法正确的是?
- A. 1 个 vCPU = 1 个物理核心
- B. 1 个物理核心 = 1 个 vCPU
- C. 1 个物理核心 = 2 个 vCPU(超线程)✅
- D. vCPU 和物理 CPU 没有对应关系
答案:C
解析:现代 CPU 超线程技术让每个物理核心提供 2 个逻辑线程(vCPU)。
3. 内存虚拟化中,VA → PA → MA 的三级地址翻译中,PA 代表什么地址?
- A. 虚拟地址
- B. 物理地址(Hypervisor 分配的)✅
- C. 机器地址
- D. 磁盘地址
答案:B
解析:VA 是 VM 看到的虚拟地址,PA 是 Hypervisor 分配给 VM 的物理地址,MA 是实际硬件机器地址。
4. EPT/NPT 技术的作用是?
- A. 加速 CPU 虚拟化
- B. 加速内存虚拟化 ✅
- C. 加速网络 I/O
- D. 实现存储虚拟化
答案:B
解析:EPT(Extended Page Table)/ NPT(Nested Page Table)是 CPU 硬件辅助的内存虚拟化技术,自动完成两级地址转换。
5. NUMA 架构中,跨 NUMA 节点访问内存的延迟?
- A. 和本地访问一样
- B. 比本地访问慢很多 ✅
- C. 比本地访问快
- D. 不确定
答案:B
解析:NUMA 的设计目标是让 CPU 访问本地节点内存更快,跨节点访问有显著延迟惩罚。
6. 以下哪种 CPU QoS 策略适合开发测试环境?
- A. Guaranteed
- B. Burstable ✅
- C. Dedicated
- D. Reserved
答案:B
解析:突发型(Burstable)价格低,有突发能力,适合负载波动大的开发测试环境。
多选题
7. 阿里云 ECS 的内存复用技术包括?
- A. 内存气泡 ✅
- B. 内存压缩 ✅
- C. 内存交换(Swap) ✅
- D. 内存硬分片
答案:A、B、C
解析:内存气泡、内存压缩、Swap 都是 Hypervisor 层的内存复用技术。硬分片不是标准复用技术。
8. virtio 和 SR-IOV 的区别包括?
- A. virtio 是软件模拟的虚拟化驱动
- B. SR-IOV 让 VM 直接访问物理网卡 ✅
- C. virtio 性能优于 SR-IOV
- D. SR-IOV 需要硬件支持 ✅
答案:B、D
解析:virtio 是半虚拟化驱动(软件),性能好但不如 SR-IOV。SR-IOV 需要网卡硬件支持,性能最优。
判断题
9. 在阿里云 ECS 中,1 个 ecs.c6.2xlarge 实例拥有 2 个物理 CPU 核心,共 4 个 vCPU。
- A. 正确
- B. 错误 ✅
答案:B
解析:2xlarge = 8 vCPU,约等于 4 个物理核心(超线程后)。
10. 内存气泡技术可以无限从空闲 VM 借调内存。
- A. 正确
- B. 错误
答案:A
解析:内存气泡由 Hypervisor 控制,只能回收 VM 实际空闲的内存,不能超量借用。