By zhuhangbo, 8 March, 2025
Forums

一场由服务器重启引发的惨案~

💡 Date:2025-03-06

😱 Problem:93 服务器显卡掉驱动了,显示·No devices were found· 选择重启,但是发现了所有的 docker images 和运行的 container 都消失了!!!花了俩小时找到问题所在,觉得后续还有可能会发生,遂作此记录!

1、 问题起因

$ nvidia-smi 
No devices were found

显卡又又又又掉驱动了,有俩种可能性:

  • 1、`显卡驱动掉了`
  • 2、`显卡损坏`

先查看一下显卡还在不在

lspci | grep -i nvidia
98:00.0 VGA compatible controller: NVIDIA Corporation Device 2204 (rev a1)
98:00.1 Audio device: NVIDIA Corporation Device 1aef (rev a1)

可以读到卡,说明卡没有坏,单纯是显卡驱动掉了,多次的处理经验告诉我,`重启大法`可以解决多个驱动问题,尝试了之前 kill 掉 cuda 的 X 服务,在重启 cuda 驱动也没有效果(因为这次与上次掉驱动不一样Docker突然停止--修复指南,他压根就没有开启 cuda 的 X 服务🤡)

看来只能重启了!

sudo reboot

2、重启之后docker 所有的 imgaes 和 container 都消失了

首先我先 checke 了一下 cuda 驱动有没有重新安装好!==> 驱动是恢复了

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.144.03             Driver Version: 550.144.03     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3090        Off |   00000000:98:00.0 Off |                  N/A |
| 40%   48C    P0            110W /  350W |       1MiB /  24576MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

直觉告诉我,容器外的 cuda 可以运行了,容器内的也需要测试一下(找不到那个打印输出了,就在我自己的 mac 的 docker 上粘贴一下内容)。

(base) zhuhangbo@zhudeMacBook-Pro ~ % docker ps
Cannot connect to the Docker daemon at unix:///Users/zhuhangbo/.docker/run/docker.sock. Is the docker daemon running?

显示我们需要重启一下

sudo systemctl start docker

接下来,就出现`鬼故事`了👻,所有的 docker images 和 container 全部都消失了!!!

docker ps -a
docker images

这两个全部显示为 empty!

花了将近两个小时查找到了这个问题,原来是 93 服务器 docker 默认的 container 和 images 的存储路径经过了修改,在`/data/docker`路径下,但是默认的路径是在 `/var/lib/docker`路径下,没有把 docker 加载的磁盘写入,导致了出现上述问题。

只需要修改一下当前 `/etc/docker`路径下的`daemon.json`文件即可

现有的`dameon.json`如下:

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

仿照下 92 的格式

{
  "storage-driver": "vfs",
  "data-root":"/data/docker_93"
}

重新启动一下 docker,问题解决~