问题描述:
ECS突然无故重启,业务服务中断,尝试登录ECS手动恢复业务服务时发现SSH报错:
Connection to xx.xx.xx.xx closed by remote host.
Connection to xx.xx.xx.xx closed.
使用非root账户证书登录正常,但无法sudo,提示:
Segmentation fault
问题排查:
查看/var/log/kern.log 日志:
Jan 13 15:11:57 xxx kernel: [15497.531991] su[14855]: segfault at c0 ip 00007f178a24cc6d sp 00007fff08e79870 error 4 in libc-2.19.so[7f178a203000+1ba000]
Jan 13 15:12:39 xxx kernel: [15539.828644] su[14985]: segfault at c0 ip 00007fb678effc6d sp 00007ffe5a7dc840 error 4 in libc-2.19.so[7fb678eb6000+1ba000]
Jan 13 15:13:01 xxx kernel: [15561.726876] su[15160]: segfault at c0 ip 00007fecc7ed9c6d sp 00007ffcd2cca760 error 4 in libc-2.19.so[7fecc7e90000+1ba000]
Jan 13 15:17:39 xxx kernel: [15839.346744] sudo[16630]: segfault at c0 ip 00007f6f3ec9fc6d sp 00007ffceca98b20 error 4 in libc-2.19.so[7f6f3ec56000+1ba000]
基本可以看出是libc-2.19.so库出现问题了。
将问题描述后,申请工单请求阿里工程师协助。
对方恢复未果后给出建议:
将您目前的系统盘临时卸载挂载到同可用区下的同版本实例中,对比下/lib /lib64 等信息,尝试做替换(先重命名备份),
操作方法如下:
https://help.aliyun.com/document_detail/146752.html
按文档操作指引:
- 停止ECS运行
- 卸载有问题的ECS系统盘
- 将卸载的系统盘作为文件盘挂载到另一台正常的ECS上。
-
fdisk -l
查看新盘符 mount /dev/xxx /opt/bad_fs
- 对比正常的/lib 和 /opt/bad_fs/lib 区别
> find /lib -printf "%P\n" | sort > file_list.txt
> find /opt/bad_fs/lib -printf "%P\n" | sort | diff file_list.txt -
发现一个pam_shter.so
文件不同
问题修复
将/opt/bad_fs/lib 下pam_shter.so
备份
将/lib 下pam_shter.so
拷贝到/opt/bad_fs/lib下
新旧两个文件如下:
-rw-r--r-- 1 x x 6168 Jan 13 18:44 ./x86_64-linux-gnu/security/pam_shter.so
-rwxr-xr-x 1 x x 12113 Apr 9 2018 ./x86_64-linux-gnu/security/pam_shter.so_bak
- 卸载bad_fs
umount /dev/xx
- 在阿里云控制台卸载云盘
- 重新将其挂载到原ECS上,启动
- 登录正常,恢复业务系统。
参考: