VT-d、SR-IOV;AMD CPU:开启 AMD-Vivi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1"
update-grub
reboot
dmesg | grep -E "IOMMU|DMAR"
# 有输出代表开启正常
# 列出所有NVMe PCI控制器
lspci -nn | grep "Non-Volatile memory controller"
# 示例输出:0000:3c:00.0 Non-Volatile memory controller [0108]: Samsung NVMe SSD [144d:a809]
# BDF地址:3c:00.0
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU Group %s ' "$n"; lspci -nns "${d##*/}"; done
若分组内存在其他设备,无法直通,需调整主板 PCIe 拆分设置。
modprobe vfio
modprobe vfio_pci
modprobe vfio_iommu_type1
[144d:a809] 即 vendor:device)echo "options vfio-pci ids=144d:a809" >> /etc/modprobe.d/vfio.conf
update-initramfs -u
# 解绑原生nvme驱动
echo "0000:3c:00.0" > /sys/bus/pci/drivers/nvme/unbind
# 指定使用vfio驱动
echo "vfio-pci" > /sys/bus/pci/devices/0000\:3c\:00.0/driver_override
# 绑定到vfio
echo "0000:3c:00.0" > /sys/bus/pci/drivers/vfio-pci/bind
lspci -k -s 3c:00.0
# Kernel driver in use: vfio-pci 代表绑定完成
virsh list --all
virsh edit VMID
<devices>标签内添加直通配置,BDF 地址和前面保持一致<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x3c' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0' multifunction='on'/>
</hostdev>
virsh start VMID
nvme list、smartctl可完整读取硬盘 SMART 信息,支持固件刷写;lsblk,不再出现该 NVMe 盘符,代表硬件完全移交虚拟机。| 功能 | CAS 本地磁盘挂载(块映射) | PCIe 完整直通(推荐方案) |
|---|---|---|
| 虚拟机读写数据 | ✅ 支持 | ✅ 支持 |
| 读取 NVMe SMART 健康信息 | ❌ 宿主机拦截硬件指令 | ✅ 完整识别硬件 |
| 磁盘固件升级 | ❌ 无法下发底层固件指令 | ✅ 虚拟机内直接刷写固件 |
| TRIM、NVMe 原生指令 | 部分受限 | 完整原生支持 |
| 集群迁移 / HA | ✅ 支持 | ❌ 不支持 |
| CVK 宿主机可管理磁盘 | ✅ CVK 可见盘符 | ❌ CVK 完全不可见 |
/etc/modprobe.d/vfio.conf永久绑定,重启后驱动恢复原生 nvme。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论