虚拟机启动访问vfio设备超时¶
今天在解决 使用libvirt和XFS在线扩展Ceph RBD设备 采用了将两个 Ceph Block Device(RBD) 设备连接到另外一个用于维护的虚拟机中处理磁盘扩容。但是,非常意外地发现,当我关闭了维护的虚拟机 z-dev
之后,想要恢复原先使用 Ceph Block Device(RBD) 的 y-k8s-n-1
却出现vfio设备连接超时:
启动虚拟机时vfio设备报告已被使用,连接超时¶
error: Failed to start domain 'y-k8s-n-1'
error: internal error: qemu unexpectedly closed the monitor: 2023-08-31T13:35:04.132854Z qemu-system-x86_64:
-device vfio-pci,id=hostdev0,sysfsdev=/sys/bus/mdev/devices/3eb9d560-0b31-11ee-91a9-bb28039c61eb,display=off,bus=pci.7,addr=0x0:
vfio 3eb9d560-0b31-11ee-91a9-bb28039c61eb: error getting device from group 123: Connection timed out
Verify all devices in group 123 are bound to vfio-<bus> or pci-stub and not already in use
这里的报错繁忙设备 3eb9d560-0b31-11ee-91a9-bb28039c61eb
在 virsh dumpxml y-k8s-n-1
可以看到其实就是 vGPU快速起步 配置的2个 NVIDIA Virtual GPU (vGPU) 设置之一:
执行
vgpu_create
脚本创建2个 P40-12C
NVIDIA Virtual GPU (vGPU) 输出信息第 一 个vgpu设备¶<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' display='off'>
<source>
<address uuid='3eb9d560-0b31-11ee-91a9-bb28039c61eb'/>
</source>
</hostdev>
这是一个 mdev
设备 ( VFIO Mediated devices 设备)
回顾 安装NVIDIA Virtual GPU Manager 笔记可以看到,需要首先确保 nvidia-vgpu-mgr.service
正常运行,也就是说,必须先 vgpu_unlock
检查
nvidia-vgpu-mgr.service
状态:
检查
nvidia-vgpu-mgr
服务状态¶systemctl status nvidia-vgpu-mgr.service
果然,再次发现这个服务启动正常退出(实际上只要执行一次就可以,返回success)。但是,回到了老问题: vgpu_unlock 失效了
查询 vgpu
:
nvidia-smi vgpu -q
查询vGPU¶nvidia-smi vgpu -q
输出显示只激活了 0
个vGPU:
nvidia-smi vgpu -q
查询vGPU显示只有 0
个vGPU¶GPU 00000000:82:00.0
Active vGPUs : 0
我想起来了, vgpu_unlock 需要使用 动态内核模块支持(DKMS) 模块方式安装 NVIDIA Virtual GPU (vGPU) 驱动。最近依次我升级了内核,内核升级时会重新编译安装 NVIDIA Virtual GPU (vGPU) 模块。我重新检查一遍流程,发现原先修订的过程都正确。
这个问题暂时无解,只要重启一次操作系统,就能恢复激活