现象:
在安装HP硬件监控(hpasmcli)提示需要依赖Glibc-2.7,而本机
的是Glibc-2.5,看来得升级Glibc了,可惜在升级时又出现了更多的依赖问题,想到在其他
服务器上安装hpasmcli时很顺利,就想到将其他服务器的glibc库
文件直接拷贝到本机尝试,涉及的文件有:
/lib/libc-2.5.so#32位
系统 /lib64/libc-2.5.so#64位系统
因为我操作的服务器系统是64位的,故在覆盖/lib64/libc-2.5.so文件的瞬间,屏幕上立即报出大量内核错误,如下(其中host指代服务器主机名):
Messagefromsyslogd@atFriApr2618:10:352013...hostkernel:in6brsp00007fff8c0b8698error4Messagefromsyslogd@atFriApr2618:10:352013...hostkernel:init[1]:segfaultat0000000000000000rip00002b28b2052e6brsp00007fff8c0b8698error4Messagefromsyslogd@atFriApr2618:10:352013...hostlastmessagerepeated17timesMessagefromsyslogd@atFriApr2618:10:352013...hostkernel:init[1]:segfau6brsp00007fff8c0b8698error4Messagefromsyslogd@atFriApr2618:10:352013...hostkernel:init[16brsp00007fff8c0b8698error4
然后系统就崩溃了,无法再登录了。
紧急联系机房
重启服务器,告知无法启动。
诶,亲手造成了此次事故呀!
要点:
glibc是gnu发布的libc库,即c运行库。glibc是
linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于glibc囊括了几乎所有的UNIX通行的标准,可以想见其内容包罗万象。
升级Glibc的忠告:不要在运行中的系统上安装Glibc,否则将会导致系统崩溃,至少应当将新Glibc安装到其他的单独目录,以保证不覆盖当前正在使用的Glibc。(我就无知的覆盖了,囧!)
解决方法: 赶赴机房吧,幸好我在替换前在目录/lib下保存了原来的库文件(libc-2.5.so.bak),使用Linux系统盘进入救援模式,将被替换的2个库文件恢复,重启系统就可以了;
系统正常启动了,就交给其他部门的同事去恢复数据吧。(我会告诉你,我搞挂的是一台DB服务器嘛!)