pci 设备vfio
时间: 2025-02-11 08:06:25 浏览: 24
使用 VFIO 驱动 PCI 设备进行直通虚拟化的配置
准备工作
为了成功使用 VFIO 实现 PCI 直通,在开始之前需确认主机硬件支持 IOMMU (Intel VT-d 或 AMD-Vi),并已在 BIOS 中启用此功能。此外,操作系统内核版本应较新以便兼容最新的特性。
加载必要的模块和支持
确保加载了 vfio
和 vfio-pci
内核模块,这可以通过编辑 /etc/modules-load.d/vfio.conf
文件来完成:
modprobe vfio
modprobe vfio-pci
对于某些特定情况下的优化操作,可能还需要禁用默认的驱动程序绑定,例如针对 NVIDIA 显卡可以执行如下命令[^3]:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
update-initramfs -u
修改 GRUB 参数以激活 IOMMU 功能
编辑 /etc/default/grub
文件中的 GRUB_CMDLINE_LINUX_DEFAULT
变量加入参数 intel_iommu=on
对于 Intel 平台或是 amd_iommu=on
对于 AMD 平台,并更新引导装载器配置:
grub-mkconfig -o /boot/grub/grub.cfg
reboot
重启计算机使更改生效之后,可通过运行 dmesg | grep -e DMAR -e IOMMU
来验证 IOMMU 是否已被正确初始化。
绑定目标 PCI 设备至 VFIO-PCI 驱动
假设要传递给客户机的是 GPU,则先查询其 BDF 地址(Bus:Device.Function),接着利用 virsh nodedev-detach
命令将其从当前使用的驱动卸下再重新关联到 vfio-pci
上:
lspci -nn | grep VGA # 查找GPU对应的BDF地址
virsh nodedev-detach pci_0000_01_00_0 # 将指定设备移交给vfio管理
创建 XML 描述文件定义 VM 的硬件资源分配
在 KVM/QEMU 环境里,创建一个描述来宾系统的 .xml
文档,其中包含关于所选 PCI 设备的信息片段,像下面这样表示将一块网卡和上述提到过的 GPU 分配出去:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x81' slot='0x00' function='0x0'/>
</source>
</hostdev>
最后一步就是启动带有这些额外硬件资源的新实例或者修改现有域的配置使之反映新的变更。
阅读全文
相关推荐


















