记一次手贱导致的服务器挂掉

folder_open
comment2条评论

0b0000:起因

今天在服务器(Fedora28)上更新了一个程序,运行的时候跟我说公共库版本太低 /lib64/libc.so.6: version `GLIBC_2.18' not found

于是我就添加SCL源安装devtoolset,然后打算将本地的libc.so.6软链过去,接着习惯性地先将软链接删掉 rm -f /lib64/libc.so.6 (各位好孩子可千万别学我)

接下来,当我想使用ln创建软链接的时候,我发现有点不对劲了:

绝大部分命令都无法运行了!

0b0001:经过

其实如果到这里,你还没有断开ssh链接,那么是可以自救的,运行下面这条命令即可:

注意上面的libc-2.27是我当前系统的libc库版本,各个系统不一样,在CentOS 7 上面一般是2.17

BUT:由于我是非常手贱的人,顺手还把/lib64/libc-2.27.so也给一起删了,至此服务器已经被我搞得彻底用不了了,ssh也已经无法连接了

启动失败

于是我赶紧地联系机房的人员协助处理,首先让他们直接使用光盘启动(当然如果你是使用的云服务商,也可以发工单或者直接在后台将iso加载进VPS,如下图)

挂载OS盘

接着使用光盘或者其他什么途径启动到光盘的安装欢迎界面:

安装界面

在这里我们选择Troubleshooting,然后选择Rescue a Fedora system(CentOS显示的是 Rescue a CentOS system ),稍等片刻会进入到恢复界面

恢复模式

选择1然后继续,接下来会提示我们原有系统挂载点已经挂载到/mnt/sysimage,是否使用chroot来将其切换到根,由于原有系统本来就是无法使用的,所以就不挂载了,直接按Enter继续,进入命令行之后,可以再次使用 lsblk来确认一次挂载

确认无误后,执行下面2条语句:

0b0010:结果

 在经过一阵紧张地重启过程后,系统正常启动了,瞬间松了一口气,虽然看起来只需要几个步骤,但是从出问题到找到解决办法再到联系机房人员处理,中间还是花掉了很多时间,导致线上环境受到了一定的影响。幸好线上的架构是多机热备的,其中一个出了问题还有其他的顶着,要不然网站就得瘫痪了。

因此在这里写下这篇记录,就当给自己提个醒 ,希望以后不要再范同样的错误

  1. 凡事在动手之前一定要想想后果
  2. 线上服务器任何操作之前最好都先备份一下,养成习惯
  3. linux系统的rm是个超级大杀器,没有特殊情况的话最好不要加f,最好可以在bashrc里面加上alias rm='rm -i',双重保险
  4. 越着急的问题越不要去催机房的哥们,要不然多半会收到反效果,将心比心吧,冷静点才能最快处理好问题
Tags:

看看其他

2条评论. Leave new

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Fill out this field
Fill out this field
请输入有效的电子邮箱地址。