AWS 终于支持非裸金属实例的嵌套虚拟化了!成本直降 95%
AWS 终于支持非裸金属实例的嵌套虚拟化了!成本直降 95%
2026年2月12日,AWS 悄悄地在 EC2 API 中加入了一个重磅功能:非裸金属实例的嵌套虚拟化支持。这个更新对于需要在云上运行虚拟机的开发者来说,简直是个大喜讯。
在此之前,如果你想在 AWS 上使用嵌套虚拟化(比如在 EC2 实例里跑 KVM、Docker Desktop 或 Firecracker),唯一的选择就是昂贵的裸金属实例。最便宜的 m5.metal 实例每月要花 $3,364,对于只想跑几个测试虚拟机的开发者来说,这个价格实在是太不友好了。
现在,AWS 终于在第8代 Intel 实例(c8i、m8i、r8i 系列)上支持了嵌套虚拟化,最小的 m8i.large 实例每月只需 $70,成本直接降低了 97.9%!
🎯 什么是嵌套虚拟化?
简单来说,嵌套虚拟化就是"虚拟机里跑虚拟机"。在云计算环境中,这意味着:
- L0 层:AWS 的物理服务器和 Nitro System hypervisor
- L1 层:你的 EC2 实例(已经是虚拟机了)
- L2 层:在 EC2 实例内创建的虚拟机
这种技术允许你在云虚拟机中运行自己的虚拟化环境,比如 KVM、Firecracker、Kata Containers 等。对于开发测试、CI/CD、容器隔离等场景非常有用。
📊 AWS 嵌套虚拟化的演进
| 时间 | 支持情况 |
|---|---|
| 2026年2月12日之前 | 仅支持裸金属实例(m5.metal、c5.metal 等) |
| 2026年2月12日 | 新增第8代 Intel 实例支持(c8i、m8i、r8i 系列) |
| 当前 | 标准虚拟化实例 + 裸金属实例双轨支持 |
⚙️ 技术实现原理
AWS 通过在 EC2 实例中暴露 Intel VT-x(Intel Virtualization Technology) 指令集来实现嵌套虚拟化。简单来说:
- 物理主机使用 AWS Nitro System(基于 KVM 的安全加固 hypervisor)
- L1 实例(你的 EC2)获得 VT-x 扩展支持
- L1 实例内的 hypervisor(如 KVM)可以利用硬件辅助虚拟化创建 L2 虚拟机
这样一来,嵌套虚拟化的性能损耗可以控制在 10% 左右,对于大多数开发测试场景来说完全可以接受。
💻 支持的实例类型
目前支持嵌套虚拟化的是第8代 Intel 实例系列,这些实例采用 定制版 Intel Xeon 6 处理器(仅在 AWS 上提供),性能相当强悍:
- 全核心持续 Turbo 频率:3.9 GHz
- 相比第7代 Intel 实例性能提升 20%
- 内存带宽提升 2.5 倍
- NGINX Web 应用快 60%
- AI 深度学习推荐模型快 40%
通用型实例(General Purpose)
- M8i 系列:从 m8i.large(2 vCPU, 8 GB)到 m8i.96xlarge(384 vCPU, 1536 GB)
- M8id 系列:带本地 NVMe 存储,规格同上
计算优化型实例(Compute Optimized)
- C8i 系列:从 c8i.large(2 vCPU, 4 GB)到 c8i.96xlarge(384 vCPU, 768 GB)
- C8i-flex 系列:灵活配置,适合突发工作负载
- C8id 系列:带本地 NVMe 存储
内存优化型实例(Memory Optimized)
- R8i 系列:从 r8i.large(2 vCPU, 16 GB)到 r8i.96xlarge(384 vCPU, 3072 GB)
- R8i-flex 系列:灵活配置
- R8id 系列:带本地 NVMe 存储
⚠️ 注意:E2 系列、AMD 处理器实例、ARM 处理器实例(Graviton)都不支持嵌套虚拟化。
你可以用这个命令查询所有支持嵌套虚拟化的实例类型:
aws ec2 describe-instance-types \
--filters "Name=processor-info.supported-features,Values=nested-virtualization" \
--query "sort(InstanceTypes[].InstanceType)" \
--region us-east-1
🎯 典型使用场景
1. 开发和测试环境
在单个 EC2 实例上测试多个操作系统版本,验证软件包在不同 OS 上的兼容性。对于需要频繁切换测试环境的开发者来说,这比维护一堆 EC2 实例要方便得多。
2. 容器和微虚拟机
这是最激动人心的应用场景:
- Firecracker:AWS 的轻量级微虚拟机技术,Lambda 和 Fargate 的基础。现在你可以在普通 EC2 实例上跑 Firecracker 了!
- Kata Containers:提供 VM 级别隔离的容器运行时,安全性更高
- Docker Desktop:在云端运行完整的 Docker 开发环境
3. CI/CD 流水线
运行需要虚拟化的自动化测试,比如测试容器编排、虚拟机镜像构建等。配合 Spot 实例使用,成本可以控制得非常低。
4. 灾难恢复和迁移
将本地虚拟机快速迁移到 AWS 而无需转换格式,或者运行无法直接迁移到 EC2 的遗留系统。
5. 教育和培训
教授 hypervisor 和虚拟化技术,为学生提供隔离的实验环境。每个学生可以在自己的虚拟机里随便折腾,不会影响其他人。
6. 多租户平台
为每个租户提供隔离的虚拟化环境,构建 SaaS 平台或虚拟机即服务(VMaaS)。
⚡ 性能和限制
性能损耗
即使有硬件辅助虚拟化,嵌套虚拟机仍会有一定的性能损耗:
- CPU 密集型工作负载:性能下降约 10%
- I/O 密集型工作负载:性能下降可能超过 10%
- 网络性能:可能受到额外虚拟化层的影响
不过对于开发测试、CI/CD 等场景来说,这点性能损耗完全可以接受。如果你需要更高的性能,可以选择更大的实例规格来补偿。
技术限制
- Hypervisor 支持:仅支持 Linux KVM,不支持 Microsoft Hyper-V
- 操作系统:推荐使用 Amazon Linux 2023、Ubuntu、RHEL 等主流 Linux 发行版
- 许可证:L2 虚拟机的商业操作系统需要自带许可证(BYOL)
- 嵌套深度:不支持 L3 及更深层次的嵌套
- 设备直通:不支持 GPU、FPGA 等设备的直通
- 网络:L2 虚拟机无法直接获得 AWS 网络功能(VPC、安全组等),需要通过 L1 实例进行 NAT 或桥接
🚀 如何启用嵌套虚拟化
前置要求
首先,确保你的 AWS CLI 版本足够新。CloudShell 默认的 v2.33.6 不支持这个功能,需要更新到 v2.33.21 或更高版本:
# 在 CloudShell 中更新 AWS CLI
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip -o awscliv2.zip
./aws/install -i ~/aws-cli -b ~/bin --update
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 验证版本
aws --version
方法一:创建新实例时启用
使用 --cpu-options NestedVirtualization=enabled 参数:
aws ec2 run-instances \
--instance-type m8i.large \
--image-id ami-xxxxxxxxx \
--cpu-options NestedVirtualization=enabled \
--subnet-id subnet-xxxxxxxxx \
--security-group-ids sg-xxxxxxxxx \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=nested-virt-test}]' \
--region us-east-1
方法二:修改现有实例
需要先停止实例,然后修改 CPU 选项:
# 停止实例
aws ec2 stop-instances --instance-ids i-xxxxxxxxx
aws ec2 wait instance-stopped --instance-ids i-xxxxxxxxx
# 启用嵌套虚拟化
aws ec2 modify-instance-cpu-options \
--instance-id i-xxxxxxxxx \
--nested-virtualization enabled \
--region us-east-1
# 启动实例
aws ec2 start-instances --instance-ids i-xxxxxxxxx
验证配置
连接到实例后,运行以下命令验证:
# 检查 KVM 设备
ls -la /dev/kvm
# 应该看到:crw-rw-rw-. 1 root kvm 10, 232 ...
# 检查 CPU 标志
grep -E 'vmx|svm' /proc/cpuinfo | head -1
# 应该看到 'vmx' 标志
# 检查 KVM 模块
lsmod | grep kvm
# 应该看到 kvm_intel 和 kvm 模块
安装 KVM 和相关工具
Amazon Linux 2023 / RHEL:
sudo dnf install -y qemu-kvm libvirt virt-install
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
sudo usermod -aG kvm $USER
sudo setfacl -m u:${USER}:rw /dev/kvm
Ubuntu / Debian:
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
sudo systemctl start libvirtd
sudo systemctl enable libvirtd
sudo usermod -aG kvm $USER
sudo setfacl -m u:${USER}:rw /dev/kvm
运行 Firecracker 微虚拟机
这是最酷的部分!Firecracker 是 AWS Lambda 和 Fargate 的基础技术,现在你可以在普通 EC2 实例上玩了:
# 安装 Firecracker
ARCH="$(uname -m)"
release_url="https://github.com/firecracker-microvm/firecracker/releases"
latest=$(basename $(curl -fsSLI -o /dev/null -w %{url_effective} ${release_url}/latest))
curl -L ${release_url}/download/${latest}/firecracker-${latest}-${ARCH}.tgz | tar -xz
sudo mv release-${latest}-${ARCH}/firecracker-${latest}-${ARCH} /usr/local/bin/firecracker
# 下载内核和 rootfs(省略详细步骤,参考官方文档)
# 创建配置文件
cat > vm-config.json <
几秒钟后,你就有一个运行中的微虚拟机了!
💰 定价分析:成本到底降了多少?
这是大家最关心的部分。让我们用数据说话:
裸金属 vs 第8代 Intel 实例(东京区域)
| 实例类型 | vCPU | 内存 | 按需价格(USD/小时) | 月成本 | 节省 |
|---|---|---|---|---|---|
| 裸金属实例(旧方案) | |||||
| m5.metal | 96 | 384 GB | $4.608 | $3,364 | - |
| 第8代 Intel 实例(新方案) | |||||
| m8i.large | 2 | 8 GB | $0.096 | $70 | -97.9% |
| m8i.xlarge | 4 | 16 GB | $0.192 | $140 | -95.8% |
| m8i.2xlarge | 8 | 32 GB | $0.384 | $280 | -91.7% |
| m8i.4xlarge | 16 | 64 GB | $0.768 | $560 | -83.3% |
看到了吗?即使是 m8i.4xlarge(16 vCPU),成本仍然比裸金属实例低 83%!
进一步降低成本:Spot 实例
如果你的工作负载可以容忍中断(比如 CI/CD 流水线),使用 Spot 实例可以再省 70%:
| 实例类型 | 按需价格 | Spot 价格 | 节省 |
|---|---|---|---|
| m8i.large | $0.096 | ~$0.029 | 70% |
| c8i.large | $0.085 | ~$0.026 | 69% |
| r8i.large | $0.252 | ~$0.076 | 70% |
这意味着一个 m8i.large Spot 实例每月只需 $21!
实际成本计算示例
场景:小型开发环境
- 需求:运行 3 个嵌套虚拟机用于开发测试
- 配置:m8i.2xlarge(8 vCPU, 32 GB RAM)
- 存储:100 GB gp3 EBS
- 运行时间:每月 730 小时
成本明细:
实例成本:$0.384/小时 × 730 小时 = $280.32 存储成本:100 GB × $0.08/GB = $8.00 快照成本:50 GB × $0.05/GB = $2.50 数据传输:50 GB × $0.09/GB = $4.50 ------------------------------------------- 月总成本:$295.32
对比裸金属实例的 $3,364,节省了 $3,069(91%)!
☁️ 与其他云厂商对比
AWS 虽然起步晚,但性能和定价都很有竞争力。让我们看看三大云厂商的对比:
| 特性 | AWS | Google Cloud (GCP) | Microsoft Azure |
|---|---|---|---|
| 支持状态 | ✅ 2026年2月新增 | ✅ 已支持数年 | ✅ 已支持数年 |
| 支持的 Hypervisor | KVM | KVM | Hyper-V |
| 最小实例规格 | large(2 vCPU) | n1-standard-1(1 vCPU) | Standard_D2s_v3(2 vCPU) |
| 处理器 | Intel Xeon 6(3.9 GHz) | Intel Cascade/Ice Lake | Intel Cascade/Ice Lake |
| 启用方式 | API 参数 | 许可证密钥 | 默认启用(特定系列) |
| 性能损耗 | ~10% | ~10% | ~10% |
| 定价(2 vCPU, 8 GB) | $70/月 | $71/月 | $70/月 |
选择建议
选择 AWS 的理由:
- 需要最新的 Intel 处理器性能(Xeon 6)
- 已深度使用 AWS 生态系统
- 需要运行 Firecracker、Kata Containers 等 AWS 原生技术
- 需要灵活控制嵌套虚拟化的启用/禁用
选择 GCP 的理由:
- 需要成熟稳定的嵌套虚拟化支持
- 需要支持 AMD 处理器(N2D 系列)
- 偏好 Google Cloud 的网络和全球基础设施
选择 Azure 的理由:
- 需要运行 Windows Server Hyper-V
- 需要与 Windows 生态系统深度集成
- 需要运行 Docker Desktop 或 WSL2
💡 最佳实践和注意事项
实例选择建议
- 开发/测试:m8i.large 或 m8i.xlarge,成本低且足够
- CI/CD 流水线:c8i.large Spot 实例,性价比最高
- 生产环境:m8i.2xlarge 或更大,根据实际负载选择
- 高性能需求:c8i 系列(计算优化)
- 内存密集型:r8i 系列(内存优化)
成本优化技巧
- 使用 Spot 实例用于可中断工作负载,节省 70%
- 使用 预留实例或 Savings Plans,节省 30-50%
- 选择成本较低的区域(us-east-1 最便宜)
- 为 L2 虚拟机使用精简配置,避免过度分配存储
- 将相关工作负载部署在同一可用区,降低数据传输成本
性能优化建议
- 为 L2 虚拟机分配足够的内存,避免交换
- 使用 virtio 驱动以获得更好的 I/O 性能
- 使用 gp3 EBS 卷以获得更好的性价比
- 监控 L1 和 L2 的资源使用情况
安全建议
- 定期更新 L1 实例的操作系统和 hypervisor
- 为 L2 虚拟机使用独立的安全策略
- 启用 CloudTrail 记录 API 调用
- 使用 IAM 角色而非长期凭证
🎬 总结
AWS 的这次更新对于需要嵌套虚拟化的开发者来说,绝对是个重大利好:
- ✅ 成本大幅降低:相比裸金属实例降低 95% 以上
- ✅ 性能领先:第8代 Intel Xeon 6 处理器,3.9 GHz 全核心 Turbo
- ✅ 灵活控制:通过 API 参数轻松启用/禁用
- ✅ 广泛应用:支持 Firecracker、Kata Containers、Docker 等多种技术
- ✅ 简单易用:一行命令即可启用
如果你之前因为成本问题放弃了在 AWS 上使用嵌套虚拟化,现在是时候重新考虑了。从 m8i.large 开始,每月只需 $70,就能获得完整的嵌套虚拟化能力。
对于开发测试、CI/CD、容器隔离等场景,这个功能简直是完美的解决方案。配合 Spot 实例使用,成本可以控制得非常低。
虽然 AWS 在嵌套虚拟化支持上起步较晚(GCP 和 Azure 已经支持多年),但凭借最新的硬件和有竞争力的定价,AWS 的方案依然非常值得考虑。
快速开始
想要立即体验?只需三步:
- 更新 AWS CLI 到 v2.33.21 或更高版本
- 创建一个 m8i.large 实例并启用嵌套虚拟化
- 安装 KVM 并开始创建虚拟机
完整的命令和配置示例都在上面,复制粘贴就能用。
参考资源
Happy virtualizing! 🚀
本文基于 2026年2月16日 的公开信息编写。AWS 服务可能会有更新,建议查阅官方文档获取最新信息。