![如何彻底终止卡住的 Docker 服务?](https://linux22.com/image/756706/%E5%A6%82%E4%BD%95%E5%BD%BB%E5%BA%95%E7%BB%88%E6%AD%A2%E5%8D%A1%E4%BD%8F%E7%9A%84%20Docker%20%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
使用带有 3.10 内核的 Centos7、docker 19.03.12。
最终,其中一个 Docker 镜像已满,并将整个/var/
挂载写入 100%,导致 Docker 服务和正在运行的容器崩溃。
现在剩下 2 个我无法杀死的僵尸进程(使用kill -9
或killall
:
ps axjf | grep docker
1 30215 30215 30215 ? -1 Ds 0 0:00 [docker-entrypoi]
1 32063 32063 32063 ? -1 Zsl 0 0:00 [dockerd] <defunct>
与此同时,/var/log/messages
我得到了:
kernel: XFS (dm-8): Failing async write on buffer block 0xb78170. Retrying async write.
kernel: XFS (dm-8): metadata I/O error: block 0xb78170 ("xfs_buf_iodone_callback_error") error 28 numblks 8
似乎某些 IO 仍在尝试写入一些数据。这似乎在无限循环中重复,我不知道如何停止它。
du -sh
并且ls -al
在检查文件时很快挂起/var/lib/docker
。
此外,service docker stop/start
还会挂起;top
报告非常高的负载/等待时间(大约23
为 4 核机器)。
我的问题:在不重新启动机器的情况下,最好的方法是彻底停止xfs
写入、终止僵尸进程并重新启动服务?
答案1
释放一些磁盘空间。
您发布的内核消息报告的错误是 28,“设备上没有剩余空间”。