lspci 返回“无法打开 /sys/bus/pci/devices/xxxxx/resource:没有此文件或目录”

lspci 返回“无法打开 /sys/bus/pci/devices/xxxxx/resource:没有此文件或目录”

我的 MS Azure(NV6 系列)中的 Ubuntu 16.10 服务器 VM 突然因未知原因(不是我造成的)出现故障,我不得不重新启动它,当它恢复在线时,我却无法再使用机器上的 GPU。

nvidia-smi 应用程序冻结。

该命令lspci产生

lspci: Cannot open /sys/bus/pci/devices/7ec1:00:00.0/resource: No such file or directory

当然,那条路(不再存在?)是存在的。真正存在的是,

$: ls /sys/bus/pci/devices/
0000:00:00.0/    0000:00:07.0/    0000:00:07.1/    0000:00:07.3/    0000:00:08.0/    b717ec1:00:00.0/

通过谷歌搜索,我找到了一些与我类似的问题,其中很多都是在过去 24 小时内被问到的,比如这个

这可能是由于 Ubuntu 或 Azure 造成的,我不知道这个问题的根源是什么或如何解决它。

有人有主意吗?

答案1

我遇到了同样的问题(使用 Azure NC24 实例),经过几个小时的努力,我找到了这篇文章并决定向 Microsoft 提交支持请求。他们告诉我的是:

Canonical 似乎最近发布了适用于 Ubuntu 16.04 的内核 4.4.0-75,这对 NC 系列虚拟机上的 Tesla GPU 产生了不利影响。安装 4.4.0-75 会破坏目前建议在这些系统上使用的 NVIDIA CUDA 驱动程序 8.0.61-1 版本,导致 nvidia-smi 不显示适配器,并且 lspci 返回类似于以下内容的错误:

root@pd-nvtest2:~# lspci lspci: Cannot open /sys/bus/pci/devices/2baf:00:00.0/resource: No such file or directory

他们建议备份操作系统驱动器,运行

apt-get remove linux-image-4.4.0-75-generic

进而

update-grub

重启后它应该可以正常工作了!至少这样做可以修复 lspci 输出,我仍然需要修复一些 CUDA 问题,但那是早期调试尝试的结果。

答案2

这可能是由于您已停止(释放)Azure VM,然后再次启动VM。根据[1],当您停止(释放)然后再次启动VM时,硬件IP(如gpu,cpu)已更改。但Ubuntu系统尚未针对新硬件(如gpu,cpu)IP地址进行更新。因此,lspci会告诉您无法打开某些与硬件ip地址相关的文件夹。

[1]https://blogs.technet.microsoft.com/gbanin/2015/04/22/difference-between-the-states-of-azure-virtual-machines-stopped-and-stopped-deallocated/

答案3

在 Azure VM 上,这似乎是 RedHat 7.5 上 LIS 的一个问题,更新 V​​M 的 Azure LIS 应该可以解决该问题。

wget https://aka.ms/lis
tar xvzf lis
cd LISISO
sudo ./install.sh
sudo reboot

相关内容