死磕古董级服务器
作者:田逸(sery@163.com)
朋友接手了一个公司,做电子商务的,原公司遗留下来3个服务器,需要把里面的数据拷贝出来,以便重新部署网站业务。派了一个兄弟过去处理,以为很快就能完成。哪知在那里折腾了半天,连系统都进不去。电话里说:“找不到系统引导盘”。三个机器都试了,都不行,于是只好让他先回来,等有时间自己去一趟,看能不能搞好。
几天后,我到现场,看到三台古董级的dell 2950,这玩意,我在05年的时候,用的最多。看着这堆旧货,心里就打鼓,没信心能弄好。于是跟朋友说,这东西太旧,也不清楚硬件有没有问题,只能尽力而为,搞不好不要怪罪。
书归正传,干活开始…….
三台机器是一模一样的型号和配置。先拉一台接显示器、键盘和电源。开机,不亮;看指示灯,没颜色,估计是电源坏了。拔掉电源,从别的机器拿一个过来顶上;开机,轰鸣了;判断正确,确实是电源坏了。进入post自检环节,屏幕输出错误信息,如下所示:
在这个地方就卡住不动了,再强制重启几次,照旧卡着。根据屏幕输出提示可知,是内存容量、大小、速率等不匹配初步导致不能继续引导。好吧,关机,拔电源,只留一根内存条;再插电,开机,故障排除。
现在第一个槽子和第五个槽子检测到内存了。本来是挨着插的两条内存,编号不是1、2而是1、5呢?手边没说明书,而且也不能上网。碰巧的是,我看到打开的机盖上有一些标识图,心想这是不是内存槽子的编号?先按这个图插内存,固然检测显示与期待的一致,有图有真相:
稀里哗啦把8根条子都插满,开机,又卡住了,很可能这几个服务器的内存不是兼容,拔出来一看,果然不仅品牌不同、模块型号等(一些条子标识是1Rx8,而另一些是2Rx8)也不同。再搬来一台服务器开机,也是这样的问题;查看内存,也是这种情况。看来以前有人动过,把不同型号、不同频率的内存插乱了。先找8根相同的内存,把最先处理的那个服务器的内存插槽插满。再加电开机,再也没有内存相关的输出提示了。
心中一阵狂喜,以为…..
没找到硬盘,这意味着无法引导系统。断电、拔硬盘、再插硬盘、开机,还是如此。进raid管理界面,能检测到2个硬盘。检查raid是否松动、线缆连接是否正常、raid的电池是否失效,结果post自检还是没识别到硬盘。再试着干脆把raid卡电池拔了或者换另一个服务器的raid卡电池,问题依然没解决。
坐下来寻思一下:既然raid控制器的管理程序能看到两个物理磁盘,应该可以证明物理连接上不存在问题,硬盘本身也应该是好的,那么可能的问题就是raid信息丢失掉了。一般来说,raid信息以元数据形式存储在硬盘的最开始的几个扇区内(是引导扇区还是超级块,有待确定)。是不是自检过程中,需要从raid控制器的存储卡取得信息?这款dell 2950的raid卡配有一个锂电池,像手机电池那么大,可重复充电,用以保持控制卡的存储器(像内存条)信息不丢失。因为服务器很久没使用,raid卡的电池耗尽,raid存储器里的信息自然也就丢失了。现在试试能不能重新把磁盘里的raid信息加载在raid控制器的存储卡里,说不定就好了呢?
对raid控制器进行操控,唯一的方法是机器自检过程中,按某些组合键进入raid管理界面,dell 2950是按ctrl + R ,如下图所示:进入
进入管理界面以后,默认到虚拟磁盘管理(VD Mgmt)项。
很明显,可以看出raid信息丢失了。根据屏幕底部的提示,按F2,然后方向键选定“Foreign Config”(外部配置),如图所示:
选定“Import”后,降弹出确认窗口,选择“Yes”按钮。当完成操作后,真的加载了磁盘里的raid信息到raid存储器中,有图为证:
退出raid控制器管理界面,然后重启机器,开始自检,这下硬盘(逻辑驱动器)识别出来了。
到这一步了,还给我出乱子:文件系统又损坏了。执行命令 fsck –y /dev/sda1 修复文件系统,数分钟后,修复完毕;再次执行fsck –n /dev/sda1 未发现错误。于是再次重启系统,终于一切正常。
以同样的方式,一并把剩余的两个服务器也恢复为可用状态。