站长手记 - 站长手记
打印】【收藏此页
本站服务器RAID 5阵列双硬盘失效挽救记录
作者:本站:苏信东  来源:WaveCN.com 世纪音频  发布日期:2015-09-20  最后修改日期:2015-09-20  

前几天,本站下线了一天半的时间。原因是本站服务器的RAID 5阵列出现了双硬盘下线的情况,只能停机维护。这里记录一下我的处理过程,以及一些思考。

说到RAID 5阵列,有所了解的人都应该知道它允许阵列中有一个硬盘故障,但只能有一个(注:RAID 6允许2个)。如果有两个硬盘同时故障,那么数据丢失的风险是极其高的。本人的职业生涯中,这次是第二次碰到RAID 5阵列双硬盘下线的情况。但这次的情况比起上一次有所不同:现在的RAID控制器增加了“Force Online”强制上线功能。也就是说,在满足以下条件时,数据还是能读取的:

1)知道故障硬盘下线的先后顺序,如果无法确定,建议还是交给专业人员,他们可以通过其他方法去确定硬盘下线的先后顺序。

2)后下线的故障硬盘不是零部件级别的故障(比如电路板、电机等);

3)下线后没有进行任何其他的写入操作,不过现在的RAID控制器都会返回总线错误信息给操作系统,从而阻塞任何写盘操作;

4)如果RAID控制器带缓存,且写策略是WB(那个Force WB with no battery我认为根本不应该出现在世界上),则需保证电池不会在此期间失效(因此服务器最好不要断电);

5)你敢于冒险。

故障修复过程:

1、此时服务器已经不可控制,只能通过系统之外的收单重启服务器。这些手段包括按NMI(如果没有在BIOS屏蔽掉的话)按钮重启,或者通过远程管理界面(比如DELL 服务器的iDRAC)RESET服务器。如果两者都不可用,则只能长按电源关机然后重启了。对于关机重启这种方式其实很容易会中了上面第4条的情况,取决于服务器本身的设计有没有实现关机但只要电力不断则电源会继续为电池充电。

2、重启服务器后,通过热键进入RAID CONTROLLER控制界面。

3、在VD管理界面,确定后下线的硬盘,然后操作选择Force Online。这里不得不再次强调的是:前置条件必须满足,否则还是建议给专业人员处理。

4、如果能成功上线的话,阵列的状态会从CRITICAL切换回DEGRADED。退出控制界面,按提示重启服务器。如果上线失败,只能给专业人员处理。

5、重启服务器,拔掉网线,进入操作系统,停掉任何可能写盘的服务(这一点非常重要)

6、检查被Force Online的硬盘的状态是否正常。如果正常(Media Error、Other Error、Predictive Failure都是0),备份数据。如果不正常,建议给专业人员处理。

6、备份完成后,可以尝试重建更早下线的另外一只硬盘。这些都是正常的阵列故障处理程序,这里就不提了。

一些事后的思考和记录(或许有点偏执):

1)控制器支持、资金充足的情况下可以上RAID6。

2)同一批次的硬盘很容易同时出问题。我经历的两次RAID 5双硬盘下线都是如此。要避免这个事情,可以采取以下几个方法:

a. 购买服务器时只买基础需求,然后再逐步增加。现在的控制器都支持VD热扩容,新的操作系统也可以热扩充。

b. 购买服务器时只买基础需求,自己另行购买不同批次的硬盘,甚至选择不同厂商的硬盘。

3)资金充足的情况下,制定硬盘定期轮替更换计划。这里千万不要迷信硬盘厂商的MTBF时间,那只是一个平均估计值。按我的经验,连续运行的服务器,在4年半的时候就会有可能出现第一例硬盘故障。

4)即使服务器在保修期内,自己也要有后备硬盘,并且要买支架,出事时可以快速更换。因为服务商的上门服务不一定真那么及时。

5)对于不容易进行物理访问的服务器,比如托管的服务器,在资金允许的情况下,配置HOT SPARE硬盘。

6)对于使用MegaRaid控制器的服务器,要同时安装MegaRaid Storage Manager(MSM,方便远程监控)和MegaCli(命令行方式的管理)。平时使用MSM,关键时刻使用MegaCli。另外由于MegaCli安装位置在/opt,没有path路径且文件名大小写混杂还有数字(MegaCli或者MegaCli64),建议在/root下建文件夹bin,再在其中建符号链接:megacli -> /opt/MegaRAID/MegaCli/MegaCli64 这样,可以方便使用。

一些名词解释:

VD:Virtual Disk,虚拟磁盘。这是对于RAID控制器而言的,不要和LINUX本身的VD搞混。

PD:Physical Disk,物理磁盘。

WB:Write Back,缓存写,相对于Write Through 直通写。在RAID控制器具备CACHE内存时把需要写入磁盘的内容先缓冲,累积到一定程度后再写入磁盘,从而减少磁盘的写入压力。

MegaCli:MegaRaid的命令行控制工具。网上已经有大量的介绍,搜索即可。