[Help] PVE 宿主机的命令行消失,除了重启还有其他解决办法不?

2023-07-19 13:31:11 +08:00
 flowdesign

前情提要 基于 PVE 搭的 all in boom ,里面跑了两个 LXC 容器和一个虚拟机,一个容器跑了显卡直通做 Emby server ,另外一个容器装了 alpine 专门用来跑各种各样的的 docker ,本次故障的最大起因可能就是这个容器,后面会细说的。虚拟机用来跑 OP ,整个这套系统比较稳定的运行了快一年,当中偶尔因为装 docker 的容器内存不够折腾过,所有的其他服务都很稳定,因为系统负载也不大。

前几天装了新的 docker 跑本地的 GPT https://github.com/Yidadaa/ChatGPT-Next-Web/ ,当时装好运行一切正常,然而第二天突然开始出现不能用了,web 页面打不开,一开始以为是绑定域名的反代出了问题,就想着在内网直接用局域网 IP 访问,然后发现也不行了,然后一路排查下来发现整个容器已经挂了,没法 ssh ,然后紧接着发现 PVE 宿主的 web 管理页面也打不开了,但是跑 OP 的虚拟机没有问题,所以网络还是正常的。

ssh 到 PVE 宿主上 top 一下,发现两个进程占了 100%的 CPU ,一个是 java 一个是 portainer ,portainer 是跑在 Docker 的容器里的,所以基本上可以确定是那个容器出了问题,本来到这里我还没有觉得有很大的问题,大不了直接重启下容器就好了嘛,然后我再尝试跑了条 pvesh ,就没有任何反馈回来了,再尝试 SSH 的结果就是可以输入用户名和密码,但是接下来没有命令行出现了

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.

Last login: Wed Jul 19 10:59:26 2023 from 192.168.10.26

正常这里会有 root@PVE:~#

然而它就没有了...所以我就压根没机会执行任何的命令

事情到这里我还抱了最后一丝希望,大不了我直接物理连接到宿主机上操作嘛,等了一晚上系统没有自动恢复之后,我开始执行最后的方案,等我接好屏幕和键盘,屏幕上显示的就是一连串

[27234234.123123]systemd failed to start journal service

每一行前面的数字都不相同, 当我 root 登录之后,和 ssh 的结果一样,就没有命令行了... 放狗搜了半天也没发现类似的情况,想要 troubleshooting 都无从入手,还请各位专家帮忙指条明路,除非万不得已我实在不想直接断电重启,真的 all in boom 的话,我今晚就要无家可归了~~
1425 次点击
所在节点    Linux
15 条回复
ltkun
2023-07-19 13:41:59 +08:00
为啥不重启 虽然我也不想
billlee
2023-07-19 13:43:06 +08:00
可能是 profile/bashrc 里面有什么命令阻塞了。可以试试直接 ssh 命令行传递命令。最后,除了断电,还可以 sysreq 重启
Masoud2023
2023-07-19 13:50:16 +08:00
没有命令行应该是系统负载太高了吧,这种情况除了重启也没啥好办法了吧。

说句风凉话:all in boom ,最后 boom 了就要愿赌服输
424778940
2023-07-19 14:00:04 +08:00
+1 你这多半是内存炸了
flowdesign
2023-07-19 14:07:36 +08:00
@billlee 多谢你的指点,ssh 直接传递命令过去我刚刚试了一下,那些有交互的命令就完全没反应,比如 top... 所以就搞得我有点不敢乱执行,虽然我猜就是容器出问题了,可是也不知道是不是可以强制关闭容器成功,现在宿主机还是能 winscp 上去看文件,然后我查了 var/log 下面的东西,没找到任何有价值的信息
flowdesign
2023-07-19 14:11:08 +08:00
@Masoud2023 不风凉,既然做了 all in boom ,自然有最坏打算的准备,当然在可以挽救的前提下还是会尽可能的去救,我没理解的是,如果真的系统负载高到不行,为啥我的 OP 虚拟机还能正常工作让我现在还有机会上来求救一下...按理说容器对于宿主机的影响更小才对嘛
billlee
2023-07-19 14:16:38 +08:00
@flowdesign 文件系统还在运行说明问题不大。top 用不了,可以用 ps, kill, pkill, killall 等命令来杀掉出问题的容器。
flowdesign
2023-07-19 14:28:09 +08:00
@billlee 就是不知道是不是真的杀掉了,前面我跑 emby 的容器都可以正常 ssh 进去,然后我执行了一下 restart ,就没有了...所以我就很忐忑直接 kill 会出什么幺蛾子
billlee
2023-07-19 14:42:52 +08:00
@flowdesign 容器进程是可以在容器外看到的,ps 看不到相关进程,就说明容器已经销毁了。
flowdesign
2023-07-19 14:45:43 +08:00
@billlee
跑了一下这个命令尝试强制杀掉 103 也就是跑 Docker 的容器
<p>root@Openwrt:~# ssh -t root@192.168.10.222 "lxc-stop -n 103 -k"</p>
<p>root@192.168.10.222's password:</p>
窗口就没有任何回应了,也没法继续执行其他命令
flowdesign
2023-07-19 15:13:49 +08:00
等了好几分钟以后提示
Job for pveproxy.service failed because a timeout was exceeded.
See "systemctl status pveproxy.service" and "journalctl -xe" for details.
然后跑 journalctl -xe 灭有反应 again 。。。
ruanimal
2023-07-19 17:23:47 +08:00
过热掉硬盘了?
flowdesign
2023-07-20 09:30:39 +08:00
@ruanimal 没有过热,硬盘也都应该挂载的很好
flowdesign
2023-07-21 10:35:22 +08:00
PVE 还是命硬,苟了两天以后,终于活过来了,初步判断还是卡 IO 导致的,卡 IO 的元凶就是那个跑 docker 的 LXC 容器,所以在我把容器强行 kill 之后,排队的进程慢慢的跑完就基本恢复,但是现在的问题就是那个强行 kill 的容器启动不起来,log 也没啥有价值的东西,又一轮新的 troubleshooting...
flowdesign
2023-07-26 13:34:53 +08:00
@ruanimal 被你猜中了, 真的是容器所在的那个硬盘出了问题 fsck 一把错误不说, 跑完就直接 IO error, all in boom 没有及时备份的痛不外如是...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/957960

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX