值得重视的假性磁盘故障,译自“What is false disk failure, and why is it a problem?”

这一段时间在查找磁盘故障、可靠性相关的资料,下面这篇是之前了解较少的,

翻译一下(直译,比较生硬,请见谅,权且当作google的翻译工具吧,:) )


另外,我接触的磁盘样本数量较少,目前遇到过一次磁盘假性故障(假死):在Linux OS

下,lsscsi看,该SATA磁盘盘符/dev/sd$X仍然存在,但是执行管理命令(例如smartctl)

或IO命令都报错(例如dd读写)。 在机器上从发现磁盘IO异常到期间定位的几十分钟时间内,

该磁盘都是这种状态,奇怪的是,Linux OS也并没有让该磁盘Offline。 之后把该磁盘拔下后

重新插回原机器、原槽位,能正常IO。


如有类似经验,欢迎提供症状与解决办法,:)



原文地址:http://blog.lsi.com/what-is-false-disk-failure-and-why-is-it-a-problem/

http://blog.lsi.com/what-is-false-disk-failure-and-why-is-it-a-problem/
March 19th, 2013 by Rob Ober
重视假性磁盘故障    
我(注:LSI的Rob Ober)花了大量的时间,走访世界各地各种规模的数据中心,试图了解数据中心运转时存在的问题,方方面面的问题。你能想像到,在很多大型数据中心(mega datacenters)中,第一大问题是什么吗?答案可能是闻所未闻,或甚至是未曾考虑过的,那就是被称作“假性磁盘故障”(false disk failure)问题。有些数据中心已经在采取措施面对和解决这个问题,有些还没有重视它。
为什么需要重视“假性磁盘故障”呢?如今很多大型数据中心在线使用的磁盘数量巨大,高达一百万到四百万片,这也是一个非常有意思的统计数字。大型数据中心采购磁盘时,数量这么巨大的磁盘用量,当然能够得到一个非常优惠的价格,甚至可能比OEM渠道商拿到的价格都要好。也许有读者说,磁盘出故障有什么值得大惊小怪的,磁盘采购成本低廉,换磁盘也不费事,坏一块更换就是了,反正数据有冗余机制保护。但是且慢,数据中心磁盘出现故障时,一系列的工作以及相应的负担开销远不是一块磁盘的采购成本那么简单:
  • 一块2TB或3TB磁盘故障后,RAID重建或者数据副本的情形中

    • RAID重建时,必然给RAID的应用性能带来影响,应用性能的QoS也很难控制;并且这么大容量的RAID重构,通常需要数天时间

    • 数据复制时,需要增加存储容量(例如加磁盘),这是有相应成本,大约$40~$50

    • 需要在多台服务器之间重新分布副本数据

    • IT基础架构中,需要把应用负载分配到其它服务器、重新进行负载均衡

    • 需要IT运维人员移走故障磁盘、更换上新的磁盘


我们来看一些上规模的数字,这个问题的严重性就会很明显。在所走访的数据数据中心中,其中一个非常慷慨地分享了他们在实际运行中的数据。这个数据中心规模不算大,之所以说不算大,是因为该数据中心的规模只是其它众多数据中心的1/4~1/2的样子。即便这样,这种规模数据中心的绝对数字依然大得惊人:拥有超过20万台服务器。其它数据中心的情况没有透露。我认识的一个在磁盘制造工厂工作的工程师听说了磁盘的故障数据后说”哇,我本来以为更糟糕呢,现在看来已经相当不错了“。数据中心所使用的硬盘是相当好的,但是一旦上规模后,问题依然会变得非常严重。
来看具体的数据:
做RAID的SAS磁盘:
  • 30万片SAS磁盘

  • 每天报告故障的约15~30片

    • SAS磁盘的假性故障率在30%~45%(每天10-15片)

    • 年假性故障率约1/1000(译者注:(10~15)*365/300000 = (12~18)/1000)


通过HBA卡直接连接、补做RAID的SATA:
  • 120万片SATA磁盘

  • 每天报告故障的约60-80片

    • SATA磁盘的假性故障率在40%~55%(每天24-40片)

    • 年假性故障率约1/100(译者注:(24~40)*365/1200000 = (7~12/1000) )


从SATA和SAS的数据对比来看,它们的相对故障率值得关注,SATA磁盘的年假性磁盘故障率比SAS磁盘的高出10倍(?译者疑问)。坦白的说,其中部分原因是因为SAS协议和SATA协议的不同造成的:SAS协议的错误处理能力比SATA要胜出不止一筹。另外,SAS磁盘比SATA磁盘贵出不少,笔者相信,磁盘制造厂商会选择质量更好的元器件来制作SATA磁盘。我们知道,SAS磁盘上的电路板看上去比SATA磁盘要复杂一些。
假性故障?什么是假性故障?是的,这是一个非常有意思的话题,从数据中心提供的数字来看,SAS磁盘有约40%的假性故障,SATA磁盘有约50%的假性故障。所谓假性故障,是指磁盘并不是真正故障,磁盘只是在一段时间内没有反应(不响应主机命令)。当把假性故障的磁盘从运行机器上拔下来插入到检测装置时,检测一圈下来,磁盘表现完全正常。更有意思的是,当把这样的磁盘重新接入运行机器上使用时,从数据中心统计的情况来看,它们再次故障的概率并不比其它磁盘高。这是什么原因呢? 没有人知道,对此我非常怀疑。
我曾经做过引擎控制器,那是一个很偏执的行业,如果出问题或者某人出事故了,那就吃上官司了。如果控制器需要召回,需要更换的数量都得有数百万,光模具开销就是数百万;每更换一个还得搭上数百美元的人工费。没有人愿意承担这样的大风险,因此在设计时,我们对内存和寄存器中的各种软错误都进行了非常认真仔细地处理,我们采用了在服务器中所使用的ECC校验技术、后台检验和,主动扫描检测,以及各种各样的专有技术,包括看门狗和超级快速的自重置技术,该技术能让引擎在不到一个完整冲程的时间就能重置重新开始工作。 为什么这么做?这是有原因的。从历史统计数据来看,软错误事件发生的概率非常低,在引擎的整个生命期也就1~2次,而且事件发生时,一次点火就能重置状态,很好地解决了问题。但是,软错误终究会发生,一旦发生就会导致召回、吃官司,所以需要足够重视、采用各种技术手段来应对各种错误...  磁盘控制器没有这样的保护机制,当然这也是情有可原的,毕竟就磁盘的价钱来说,那么复杂的保护机制显得过于奢望了。
还记得丰田普锐斯的加速器故障事件么?我知道的情况是控制器没有对软错误提供足够的处理和保护机制,当然事故的真正原因没有公布、仍然是个“谜”。也许它只是短时间没有反应而已,这也可以说是一个假性故障,对吧。
回到磁盘相关话题上来,假性故障确实令人难受,想想,在发生故障的磁盘中,有一半的磁盘其实没有问题不需要更换,但是,假性故障带来的损失(详见下)确实实实在在发生了、但却不知道真正的原因,憋屈啊。而解决这种问题的方法居然是只要让磁盘重置就足够了(ok,这引出了一系列的动作,RAID卡控制器或应用程序需要来处理磁盘的上电重置,一般这个过程需要10秒,应用程序要处理这段时间的上层IO,此处假定这些都已经搞定了)。
这样的数据中心每天都要做的事情:
  • 更换100片左右的磁盘

    • 物理上更换100片故障磁盘(需要维护人员介入)

    • 复制副本或RAID重构这些磁盘包含的200~300TB数据量,想想就够头大的了

    • 重新对至少100台服务器进行负载均衡,或者是100个集群中的机器负载均衡,那也许是2000多台服务器呢

    • 要应对副本复制200~300TB数据量所需要的网络带宽开销

      • 按10Gb以太网带宽计算,那也是需要50小时的量级啊



而上述所有的事情开销,其中一半居然是没有确切原因的假性磁盘故障所导致的!下面来具体看看。
首先,如果磁盘做RAID了,那么为什么不重构磁盘呢?一般来说,数据中心的应用多是集群,传统的RAID重构会把服务器的性能拉下50%左右。如果是重构2TB的磁盘,在重负载下重构时间可能长达一周,在一周的时长内,服务器的性能只能发挥50%,这在集群应用中,意味着整个集群中的服务器都只能发挥50%的性能。假定集群有200个节点,等于在重构的一周时间内,只有100个节点的性能产出,这个损失可不小。还不如简单点,干脆让这个节点离线,这样集群服务器可以发挥100%的性能、而集群整体的性能可以达到故障前的99.5%,也可以把负载重新分配到其它节点上(因为在其它机器上有数据副本)。但是让节点离线会引入其它问题,当节点RAID重构完成后,这个节点回到集群时,还需要和集群重新同步或重新映像,这些实现起来没什么问题,改天再谈。 当然,也可以不做RAID,直接使用单盘,那么就只需要不挂载该磁盘、让故障磁盘离线即可。
其次,为什么通过网络复制数据、为什么复制数据是个大事情呢?这是因为,出于异地容灾冗余或区域局部访问性能考虑,数据中心需要多份数据副本。通常是建立3副本来获得足够的可靠性;如果采用的是纠删码方案,那么需要 2.2~2.5个副本(很奇怪的数学计算产物哈,怎么会有0.5个副本呢...)。如果有副本损坏丢失,副本总数减少变成2乃至1时,就需要快速复制把副本恢复到让系统足够冗余可靠的3副本状态。这就需要通过网络复制数据到数据中心的其它节点上,从而产生网络流量开销。复制数据的网络流量过大时甚至会造成网络拥塞,网络拥塞会对数据中心的其它运行业务造成影响。在上述的例子中,这个数据中心每天会产生持续长达50小时的带宽达到10Gb的网络流量。
公平的说,SAS接口中有个新的标准,当磁盘不响应时,会重置磁盘;而SATA则刚开始就这个问题进行讨论、SATA的问题要复杂得多。不管怎么说,从开始讨论标准到业界实现,怎么着都得一年以上的时间。
这对用户来说,意味着什么?
嗯,可以预见的情况是:每年真正故障的磁盘有1/100,还有1/100的磁盘会发生假性故障。假性故障发生时,仍然会产生各种开销:RAID重构或副本复制、更换磁盘、介入管理工作量、安排停机维护时间。而磁盘的OEM更换价格是$600左右(?),价格取决于磁盘的用量,如果量大的话,价格不算什么大问题。假性磁盘故障问题的解决办法其实很简单,而且代价也不贵,甚至比磁盘盘架都便宜得多,解决起来也简单透明--只要磁盘厂商在磁盘发生假性故障时记录并重置磁盘即可。磁盘用户群体需要说服厂商采用这个解决方案。


你可能感兴趣的:(磁盘故障,假性磁盘故障)