跳到主要内容

硬件直通

硬件直通(PCI Passthrough)是一项高级虚拟化技术,允许将宿主机的物理 PCI 设备直接分配给虚拟机使用,绕过虚拟化层的模拟,获得接近原生的设备性能。

权限与开关

硬件直通功能仅对管理员开放,需要管理员权限才能配置直通设备。此外,硬件直通受系统设置中的 hardware_passthrough_enabled 开关控制(默认关闭),未开启时相关功能入口不可用。

技术原理​

设备直通架构​

工作流程​

支持的设备类型​

GPU 直通​

GPU 直通是最常见的硬件直通场景,将物理显卡直接分配给虚拟机,实现接近原生的图形性能。

GPU 类型用途性能
消费级 GPU游戏、图形渲染接近原生
专业 GPUCAD、3D 建模接近原生
计算 GPUAI 训练、科学计算接近原生

GPU 直通优势:

  • 原生驱动支持:虚拟机直接使用官方驱动
  • 完整功能:支持 GPU 的所有特性
  • 高性能:无虚拟化开销

NVMe 硬盘直通​

NVMe 直通将 NVMe SSD 控制器直接分配给虚拟机,提供最高的存储性能。

特性说明
延迟接近原生延迟
IOPS接近原生 IOPS
带宽接近原生带宽

网卡直通​

网卡直通将物理网卡直接分配给虚拟机,适用于对网络性能要求极高的场景。

适用场景:

  • 高频交易系统
  • 网络功能虚拟化(NFV)
  • 高性能计算集群

VFIO 配置​

VFIO(Virtual Function I/O)是 Linux 内核提供的设备直通框架,提供安全的设备访问机制。

VFIO 绑定状态​

状态说明图标
已绑定设备已绑定到 vfio-pci 驱动绿色标签
待绑定设备尚未绑定,等待虚拟机启动黄色标签

绑定流程​

前置条件​

使用硬件直通需要满足以下条件:

条件说明检查方法
IOMMU 支持CPU 和主板支持 IOMMUBIOS 设置中启用 VT-d/AMD-Vi
IOMMU 分组设备在独立的 IOMMU 组中lspci -nnk 查看
内核支持内核编译时启用 VFIOlsmod | grep vfio
BIOS 设置启用 VT-d 或 AMD-Vi进入 BIOS 检查

配置直通设备​

添加设备​

  1. 查看可用设备:系统列出宿主机上所有可用的 PCI 设备
  2. 选择目标设备:选择要直通的设备
  3. 确认绑定状态:检查设备是否已被其他虚拟机占用
  4. 保存配置:将直通配置保存到虚拟机定义

设备信息​

信息说明示例
PCI 地址设备在 PCI 总线上的位置0000:01:00.0
设备名称设备的型号名称NVIDIA GeForce RTX 3080
厂商 ID设备制造商标识10de
设备 ID设备型号标识2206
绑定状态当前 VFIO 绑定状态已绑定/待绑定

移除设备​

移除直通设备时:

  1. 虚拟机必须处于关机状态
  2. 设备会从虚拟机配置中移除
  3. 设备的 vfio-pci 绑定会在下次启动时释放

常见直通场景​

游戏虚拟机​

推荐配置:

  • GPU:消费级显卡(NVIDIA/AMD)
  • USB:USB 控制器直通
  • 内存:大内存分配(16GB+)
  • CPU:多核心分配

AI 训练环境​

组件配置建议
GPU计算卡(NVIDIA Tesla/A100)
NVMeNVMe 直通用于数据集
网卡高速网卡直通用于分布式训练
CPU多核心 + CPU 亲和性优化

开发测试环境​

  • GPU:用于图形开发测试
  • 串口:用于嵌入式开发调试
  • 专用网卡:用于网络协议测试

常见问题​

设备无法直通​

问题原因解决方案
IOMMU 未启用BIOS 未开启 VT-d/AMD-Vi进入 BIOS 启用
设备在错误的 IOMMU 组与其他设备共享 IOMMU 组使用 ACS 补丁或更换插槽
驱动冲突宿主机驱动占用设备解绑宿主机驱动
设备被其他 VM 使用设备已分配给其他虚拟机先从其他虚拟机移除

性能问题​

问题可能原因解决方案
GPU 性能低下未安装正确驱动安装官方驱动
中断延迟高CPU 亲和性配置不当优化 CPU 亲和性
内存带宽不足NUMA 跨节点访问确保设备和 VM 在同一 NUMA 节点

NVIDIA GPU 特殊处理​

NVIDIA 消费级 GPU 在虚拟机中使用时可能遇到错误 43,需要额外配置:

配置项说明
隐藏虚拟化在 SMBIOS 中隐藏虚拟化特征
vendor_id设置为非 KVM 标识
kvm hidden启用 KVM 隐藏模式
提示

CVMConsole 会自动为 NVIDIA GPU 配置必要的隐藏参数,大多数情况下无需手动处理。

安全考虑​

设备隔离​

硬件直通提供了强大的设备隔离保证:

  • 内存隔离:设备只能访问虚拟机的内存空间
  • DMA 保护:IOMMU 防止设备进行恶意 DMA 操作
  • 中断隔离:设备中断只传递给拥有该设备的虚拟机

风险提示​

风险说明缓解措施
设备固件漏洞恶意固件可能攻击宿主机仅使用可信设备
DMA 攻击设备可能尝试访问其他内存依赖 IOMMU 保护
资源独占直通设备无法共享合理规划设备分配
注意

硬件直通将物理设备的完全控制权交给虚拟机,如果虚拟机被入侵,直通设备可能成为攻击向量。请确保虚拟机的安全性。