一、案例背景
客户在操作lib库时,误将glibc类库删除导致系统崩溃。glibc做为系统的C函数库,是程序运行时使用到的一些API集合,操作系统很多功能均依赖glibc。如果将其删除,会导致无法执行系统命令,无法新建ssh或者直接登录系统终端。
工程师接到报修后,第一时间联系客户,了解故障发生的详细情况:
据客户描述,当时对/lib、/lib64、/usr/lib和/usr/lib64等4个文件都有操作,但是客户不记得是对哪一个文件操作时失误导致删库。此外,工程师了解到该生产服务器采取的是双机热备模式,向客户表达重装系统然后同步数据可能是最简单且成功率较高的办法。但客户表示数据量较大,更倾向于通过修复手段来恢复系统运行。
二、准备工作
1、了解客户的系统版本和环境配置:
PC服务器:HP DL380 Gen9;
系统:CentOS 6.8 (带可视化界面)
2、进入救援模式和重装系统所需工具:
U盘或USB光驱(用于制作启动介质)
UltraISO软碟通(用于刻录镜像文件)
系统镜像文件
三、解决方案
方案一:进入救援模式,通过挂载/mnt/sysimage,拷贝被误删除的glbic库,恢复系统。
方案二:重装或升级系统:
1、重装系统会导致数据丢失,并且会花费大量时间和精力来重建和同步数据;
2、升级系统会导致该生产的主备服务器系统不一致。
根据客户的业务要求,优先选择第一种方案恢复系统。但误删的glbic确切类名的不确定,给在救援模式中恢复文件带来了一定的困难。
四、操作步骤
1、此时已无法正常进入系统,开机报错如下;
2、重启服务器,插入U盘或光驱,并选择从该媒介引导;
3、选择TroubleShooting ➡ Rescue System ,进入救援模式;
4、提示系统挂载到“/mnt/sysimage”,按提示OK,选择Shell模式;
5、注意: 在此处执行chroot /mnt/sysimage 会报错:
目前系统是挂载在/mnt/sysimage上的,由于glbic函数库被删除,基于该函数库运行的命令无法正常运行。因此需要拷贝所需的类库文件到指定的目录。
6、因客户不确定操作时误删的glbic所在目录,工程师将操作过的4个lib目录均拷贝到 /mnt/sysimage 下:
# cp /lib/* /mnt/sysimage/lib/
# cp /lib64/* /mnt/sysimage/lib64/
# cp /usr/lib/* /mnt/sysimage/usr/lib/
# cp /usr/lib64/* /mnt/sysimage/usr/lib644
7、此时执行chroot /mnt/sysimage,没有任何报错,说明修改成功;
输入exit退出,reboot重启,系统可正常进入。
五、经验总结
1.在发生类似故障时,应及时与客户沟通,确认故障发生的原委及细节,制定解决方案。本案例中,客户在操作多个系统库文件时做出误删,且不确定所删文件的具体目录,给恢复工作带来了一定难度。
2.在处理故障时准备多套解决方案和工具:本案例中,使用U盘作为媒介进入救援模式后,未能有效识别该介质和挂载镜像,插拔、重启多次后依旧无果;更换成USB光驱后便可顺利识别并挂载镜像。
如欲了解更多,请登录十大靠谱网赌软件官方网站:cr93.wakatter.com