一、安装KVM及相关组件
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
将用户加入libvirt组
sudo usermod -aG libvirt $USER
newgrp libvirt # 刷新组权限(或重新登录)
二、启用IOMMU支持
- 编辑GRUB配置:
sudo vim /etc/default/grub
- intel CPU:修改GRUB_CMDLINE_LINUX行:
GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"
- AMD CPU:
GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt"
- 更新GRUB并重启:
sudo update-grub
sudo reboot
三、验证IOMMU是否启用
dmesg | grep -i iommu
# 应看到类似 "IOMMU enabled" 的输出
四、配置SR-IOV虚拟功能(VF)
1.确认网卡支持SR-IOV
lspci -nn | grep -i ethernet
# 记录网卡的 PCI 地址(如 0000:02:00.0)
ethtool -i <网卡名> | grep driver
# 确认驱动支持 SR-IOV(如 ixgbe、i40e 等)
2.启动SR-IOV并创建VF
# 查看当前 VF 数量
cat /sys/class/net/<网卡名>/device/sriov_numvfs
# 临时创建 4 个 VF
echo 4 | sudo tee /sys/class/net/<网卡名>/device/sriov_numvfs
# 永久配置(以 Intel 驱动为例)
sudo nano /etc/modprobe.d/ixgbe.conf
# 添加:
options ixgbe max_vfs=4
3.确认VF已生成
ip link show
# 应看到类似 "vf 0" 的条目
lspci | grep Virtual
# 应列出 VF 的 PCI 设备
五、将VF绑定到vfio-pci驱动
# 安装 vfio-pci 驱动
sudo apt install vfio-pci
# 获取 VF 的 PCI ID(如 0000:02:10.0)
VF_PCI_ID="0000:02:10.0"
# 解绑原有驱动
echo $VF_PCI_ID | sudo tee /sys/bus/pci/devices/$VF_PCI_ID/driver/unbind
# 绑定到 vfio-pci
echo "vfio-pci" | sudo tee /sys/bus/pci/devices/$VF_PCI_ID/driver_override
echo $VF_PCI_ID | sudo tee /sys/bus/pci/drivers/vfio-pci/bind
六、使用virt-manager创建虚拟机
- 启动virt-manager:
virt-manager
-
新建虚拟机时,在 最后一步 勾选 Customize before install。
-
添加 PCI 设备:
-
点击 Add Hardware → PCI Host Device
-
选择对应的 VF 设备(如 0000:02:10.0)
-
确保虚拟机配置使用 Q35 芯片组和 UEFI(如 OVMF)。
七、验证虚拟机内的SR-IOV网卡
- 启动虚拟机后,检查网卡是否识别:
lspci | grep Ethernet
ip link show
2.配置网络(如静态IP或DHCP)
常见问题排查
- VF 未显示:
- 检查 dmesg | grep -i sriov
- 确认 BIOS 中启用 SR-IOV 和 VT-d/AMD-Vi
- 性能问题:
- 启动 iommu=pt 减少开销
- 检查IRQ分配是否均衡
- 权限问题:
- 确保用户属于kvm 和 libvirt 组