云计算百科
云计算领域专业知识百科平台

搞服务器硬件为啥要懂 硬件直通

在服务器虚拟化中,硬件直通(PCIe Passthrough) 是一种将物理设备(如硬盘、显卡、网卡)直接分配给特定虚拟机(VM)的技术,绕过虚拟化层的抽象,让VM独占硬件并获得接近原生的性能。但不同设备(如硬盘和显卡)的直通实现方式和限制有所差异。以下是具体方法和注意事项:


一、硬盘直通的限制与替代方案

1. 为什么普通硬盘无法直接直通?
  • 硬盘控制器共享问题:单个物理硬盘通常通过SATA/SAS控制器连接,而控制器本身可能被多个VM共享,无法直接分配给单个VM。

  • 文件系统冲突:虚拟化平台(如ESXi、KVM)通常将硬盘作为虚拟磁盘文件(如.vmdk、.qcow2)管理,直接直通会导致宿主机的存储管理失效。

2. 替代方案:通过PCIe Passthrough直通整个控制器
  • 适用场景:若服务器有独立的硬盘控制器(如HBA卡、NVMe SSD),可将整个控制器直通给VM。

  • 操作步骤(以KVM为例):

  • 查看控制器PCI设备地址:

    bash

    lspci | grep -i "storage\\|sata\\|nvme"
    # 示例输出:01:00.0 SATA controller: Intel Corporation C610/X99 series chipset sSATA Controller

  • 将设备标记为直通模式(需启用IOMMU):

    bash

    echo "options vfio-pci ids=8086:8d02" > /etc/modprobe.d/vfio.conf
    update-initramfs -u

  • 在VM配置文件中添加PCI设备(如virsh edit vm_name):

    xml

    <hostdev mode='subsystem' type='pci' managed='yes'>
    <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </source>
    </hostdev>

  • 注意事项:

    • 直通后,该控制器下的所有硬盘将由VM独占,宿主机无法访问。

    • 需确保VM已安装对应硬盘控制器的驱动程序(如LSI SAS驱动)。


二、显卡直通的实现与常见问题

1. 显卡直通的典型场景
  • GPU计算:直通给VM运行AI训练(如NVIDIA Tesla)或3D渲染。

  • 游戏/图形工作站:直通消费级显卡(如RTX 4090)给Windows VM。

2. 显卡直通步骤(以KVM + NVIDIA显卡为例)
  • 前提条件:

    • 服务器支持 IOMMU(Intel VT-d / AMD-Vi),并在BIOS中启用。

    • 显卡支持直通(NVIDIA消费级卡需破解驱动限制,企业级卡如Tesla无需破解)。

  • 操作流程:

  • 屏蔽宿主机显卡驱动:

    bash

    echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf

  • 绑定显卡到VFIO驱动:

    bash

    lspci -nn | grep -i nvidia
    # 输出示例:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3090] [10de:2204]
    echo "options vfio-pci ids=10de:2204" > /etc/modprobe.d/vfio.conf
    update-initramfs -u

  • 在VM配置中添加PCI设备(同硬盘控制器直通步骤)。

  • 针对NVIDIA显卡的额外步骤:

    • 修改VM的XML配置,隐藏虚拟化特征(绕过NVIDIA驱动限制):

      <hyperv>
      <vendor_id state='on' value='whatever'/>
      </hyperv>
      <kvm>
      <hidden state='on'/>
      </kvm>

3. 显卡直通的限制
  • 消费级显卡:NVIDIA的GeForce驱动会检测虚拟化环境并拒绝工作(需破解或使用企业级卡)。

  • 多GPU冲突:若宿主机有多个GPU,直通其中一个可能导致宿主机无法使用图形界面(需无头模式运行)。

  • SR-IOV支持:部分显卡(如Intel Arc、NVIDIA Ampere)支持SR-IOV虚拟化,可分割为多个虚拟GPU(vGPU),无需独占直通。


三、通用硬件直通的必要条件

  • BIOS/固件支持:

    • 启用 Intel VT-d 或 AMD-Vi(IOMMU)。

    • 禁用 Above 4G Decoding(某些主板需关闭此选项以避免地址冲突)。

  • 操作系统配置:

    • Linux内核需加载 vfio-pci 驱动。

    • Windows宿主机需启用Hyper-V的“离散设备分配”(DDA)。

  • 硬件隔离性:

    • 直通的设备必须属于独立的IOMMU组(检查命令:find /sys/kernel/iommu_groups/ -type l)。


  • 四、常见问题与解决方案

    • 问题1:直通后VM无法启动,提示VFIO device is already in use
      解决:宿主机驱动未正确屏蔽,需确保无其他驱动(如nouveau)占用设备。

    • 问题2:直通NVMe SSD后性能下降
      解决:检查是否启用PCIe ACS(Access Control Services)隔离,避免总线争用。

    • 问题3:NVIDIA显卡直通后报错Error 43
      解决:在VM配置中添加<hidden state='on'/>并安装特定版本驱动。


    总结

    • 硬盘直通:通常需直通整个控制器(如HBA卡),而非单个硬盘。

    • 显卡直通:需破解驱动限制(消费级卡)或使用企业级卡,并配置IOMMU/VFIO。

    • 关键点:硬件直通的本质是PCIe设备的独占分配,因此必须确保设备在物理和逻辑上的隔离性。

    参考视频

    https://www.bilibili.com/video/BV1F14y1V7vo/?spm_id_from=333.337.search-card.all.click&vd_source=fa61a9dfb9afcda93746f7ee661258de
    PVE直通原理讲解,10分钟理解直通

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 搞服务器硬件为啥要懂 硬件直通
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!