
问题:虚拟化配置文件nvme直通配置缺少msix_vectors="128"会导致不识别nvme本地盘
解决:NVMe 直通设备缺少msix_vectors="128"参数。刷新虚拟化配置文件,将<driver name="vfio-nvme"/>改为<driver name="vfio-nvme" msix_vectors="128"/> 重启机器后正常识别。
NVMe 设备的工作强依赖 MSI-X 中断。NVMe 规范要求通过 MSI-X 向量来为每个 I/O 队列分配中断。如果 QEMU/VFIO 没有正确配置足够的 MSI-X 向量数:


NVMe 没这个参数,Guest 里的驱动拿不到足够的 MSI-X 中断向量,I/O 队列建不起来,盘自然就认不到。PCI 设备层面可能都挂上了,但 NVMe 协议层握手直接失败。
这种问题排查起来比较隐蔽——设备直通本身没报错,QEMU 启动也正常,就是 Guest 内静默不识别。以后碰到类似的"直通了但不认盘",第一个查的就是 MSI-X 向量数配置。
另外,需要注意下云系统盘和本地nvme数据盘的位置跟viostor和stornvme的tag值有关,ISO全新安装的系统,viostor的tag值是34,stornvme的则是33,值小的排前边,我把viostor改为1后重启,云系统盘就到磁盘0的位置了。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。