gongdear

gongdear的技术博客

欢迎大家参观我的博客
  menu
114 文章
89355 浏览
3 当前访客
ღゝ◡╹)ノ❤️

Proxmox VE 9.1 国产信创集群实战:在兆芯服务器上启用 NVIDIA A10 GPU 直通

🇨🇳 Proxmox VE 9.1 国产信创集群实战:在兆芯服务器上启用 NVIDIA A10 GPU 直通—— Proxmox VE 9.1 完整指南

环境 :5 台国产信创服务器(兆芯 KX-6000/KX-7000 + Intel 芯片组)
GPU :双 NVIDIA A10(GA102GL,PCI ID 10de:2236
虚拟化平台Proxmox VE 9.1 (基于 Debian Bookworm,内核 ≥6.8)
目标 :在信创环境中实现企业级 GPU 虚拟化,支撑 AI 推理、视频编码等高性能业务
核心突破 :打破“国产 CPU 不支持 IOMMU”迷思,实测验证 兆芯 + Intel VT-d = 完整 PCIe 直通能力

📋 先决条件

  • Proxmox VE 9.1 已安装并联网(官方 ISO

  • NVIDIA A10 显卡已物理安装

  • BIOS 中虚拟化相关配置已启用 (部分国产主板默认关闭)

    image.png


🔧 步骤 1:确认 IOMMU 已激活(信创关键!)

dmesg | grep -i "DMAR\|IOMMU"

成功标志

[    4.926818] DMAR: IOMMU enabled
[    4.927001] DMAR-IR: IOAPIC id 15 under DRHD base 0xfe98c000 IOMMU 6

💡 即使 CPU 是 CentaurHauls(兆芯),只要芯片组来自 Intel,VT-d 就可用!

检查设备隔离性:

find /sys/kernel/iommu_groups/ -type l | grep -E "(a1:00.0|21:00.0)"

确保每张 A10 独占一个 IOMMU Group (无其他设备混入)→ 可安全直通。


🔍 步骤 2:获取 GPU 的精确 PCI ID

lspci | grep -i nvidia
# 示例输出:
# a1:00.0 3D controller: NVIDIA Corporation GA102GL [A10] (rev a1)
# 21:00.0 3D controller: NVIDIA Corporation GA102GL [A10] (rev a1)

lspci -n -s a1:00.0
# 输出:a1:00.0 0302: 10de:2236 (rev a1)

记下 10de:2236 (A10 在部分固件中为 2236,非 2237,属正常变体)。


🛑 步骤 3:彻底禁用 nouveau 并绑定 vfio-pci

PVE 9.1 默认仍会加载 nouveau,必须强制拦截:

# 禁用开源驱动
cat <<EOF > /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist nvidiafb
options nouveau modeset=0
EOF

# 绑定 A10 到 vfio-pci
echo 'options vfio-pci ids=10de:2236 disable_vga=1' > /etc/modprobe.d/vfio.conf

# 确保模块开机加载
echo "vfio-pci" >> /etc/modules

⚠️ 务必替换 10de:2236 为你的实际设备 ID!


🔄 步骤 4:更新 initramfs 并重启(PVE 9.1 注意事项)

# PVE 9.1 使用较新内核,需更新所有镜像
update-initramfs -u -k all

# 重启生效
reboot

💡 PVE 9.1 的 pve-kernel-6.8 对 vfio 兼容性更好,无需额外 patch。


✅ 步骤 5:验证 GPU 是否被 vfio-pci 接管

重启后执行:

# 手动加载 vfio-pci(PVE 通常自动处理)
modprobe vfio-pci

# 检查驱动状态
lspci -k -s a1:00.0

理想输出

Kernel driver in use: vfio-pci

image.png

同时确认无残留:

lsmod | grep nouveau  # 应无输出

🖥️ 步骤 6:在 PVE 9.1 Web UI 中直通 GPU

  1. 关闭目标虚拟机

  2. 进入Hardware → Add → PCI Device

  3. 选择你的 A10(如 a1:00.0

  4. 勾选:

    ☑️All Functions (即使只有 .0)

    Primary GPU (除非需物理显示输出)

    image.png

  5. 启动 VM

💡 若设备未显示,刷新页面或执行:

systemctl restart pvedaemon

🐧 步骤 7:虚拟机内安装 NVIDIA 驱动(信创兼容版)

Linux(以Ubuntu 22.04为例 )

image.png

# 添加官方仓库(PVE 9.1 推荐使用 server 驱动)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

# 安装长期支持驱动
sudo apt install nvidia-driver-535-server

sudo reboot

验证:

nvidia-smi  # 应显示 A10 信息

image.png

Windows Server / Win10/11

image.png

  • NVIDIA 企业驱动页 选择:
    • Product Type : Data Center / Tesla
    • Product Series : A-Series
    • Operating System : 你的 Windows 版本
  • 安装后无 Code 43 错误 ✅(A10 为专业卡,官方支持虚拟化)

image.png

image.png

忽略 NVIDIA 显卡警告

NVIDIA GPU 在 Windows 中可能会在使用类似GeForce Experience Passmark Performance Test SiSoftware Sandra 应用时发出警告。

为避免这种情况,在 /etc/modprobe.d/kvm.conf 中添加:

options kvm ignore_msrs=1 report_ignored_msrs=0

🏗️ 信创集群架构:混合部署最佳实践

目前已有 5 台兆芯+A10 节点 + 5 台 Intel 无 GPU 节点,合并为单一 PVE 9.1 集群

节点类型用途CPU 配置建议
兆芯 + A10GPU 计算(AI/渲染)hostkvm64
Intel 无 GPU通用业务(Web/DB/中间件)kvm64(最大兼容)

HA 策略配置(避免乱迁移):

# 创建 GPU 专用 HA 组
pve-ha-manager add group gpu-group --nodes node171,node172,node173,node174,node175

# 将 GPU VM 加入该组
pve-ha-manager add vm:101 --group gpu-group

📌 GPU VM 无法 Live Migration,但 HA 可在同组节点故障恢复(需手动启动)


⚠️ 重要限制与规避方案

限制说明规避方案
不支持 Live MigrationPCIe 直通设备无法热迁移固定 VM 到节点 + 应用层冗余
HA 不能自动转移PVE 无法跨物理 GPU 迁移使用 HA Group + 手动恢复脚本
兆芯 CPU 性能差异相比 Intel 同频性能略低GPU 密集型任务不受影响
驱动兼容性需使用官方企业驱动避免社区版驱动

🏁信创不是妥协,而是可控的创新

兆芯 + Proxmox VE 9.1 上成功直通 NVIDIA A10,证明:

  • 国产硬件完全可支撑高性能 GPU 虚拟化
  • 信创环境不必牺牲技术先进性
  • 关键在于理解底层机制,而非盲目相信“不支持”
宝剑锋从磨砺出,梅花香自苦寒来.