大道至简,知行合一。

现实世界中的磁盘故障:一百万小时的MTTF对你来说意味着什么?

摘要

在大规模IT安装中组件故障成为一个越来越大的问题,因为单集群中组件的数量已经接近百万。

在本文中,我们提供和分析了很多大规模生产系统中的磁盘替换的数据,其中涉及高性能计算站点和因特网服务站点。统计数据涉及大约100000个磁盘,有些涉及整整五年的生命周期。统计数据包含SCSI和FC驱动,以及SATA接口。在他们的数据表中指出的平均无故障时间(MTTF)的范围从1000000到1500000,这意味着名义年故障率最大为0.88%。我们发现实际上年磁盘替换率一般得增加1%,普遍来说是2-4%,某些得增加13%。这意味着实际的磁盘替换进程与依照数据表MTTF预测的进程完全不同。

基于磁盘替换记录我们还发现,该故障率不是恒定的,随着时间的增长而增长,像儿童夭折概率一样.我们看到了一个显著的早发性磨损退化曲线。也就是说,更换率在5年的标称寿命内,往往没有象设定那样随着年龄的不断增长。有趣的是:我们观察到SCSI,FC和SATA驱动器之间的替代率差别不大,在另一方面,我们只见过一例客户因为媒体的错误率高拒绝了整个一个批次的硬盘,这个问题出现在SATA磁盘上.更换时间,故障间隔时间,都不能很好的建立出一个指数模型,并现出显著时间相关信,包括自相关和远距离依赖。

1 动机

尽管工业界和学术界共同的辛苦努力,高可靠性在大规模IT系统中仍然是一个很大的挑战,灾难预防和实际的灾难成本组成总拥有成本(total cost of ownership)的很大部分。随着更大的服务器集群出现,维持高等级的可靠性和可用性对很多站点来说是一个日益严重的问题,这些站点涉及高性能计算系统和因特网服务提供商。出于以下原因,特别让人担忧的是存储系统的可靠性。第一,存储故障不仅会造成数据暂时不可用,而且更糟糕的将会导致数据永久丢失。第二,技术趋势和市场力量将会组合起来使得未来存储系统故障将会更频繁发生[24]。第三,存储系统在现代大规模IT部署中已经增长到史无前例的规模,包含数以千计的存储设备,这使得组件故障成为常态而不是异常[7]。

因此大规模IT系统需要更好的系统设计和管理来处理更频繁的故障。例如,可以预见为特定故障模式设计更高等级的冗余[3,7]。这样的设计和管理系统基于非常简单的组件故障和修复模型[22]。更多的认识存储故障过程的统计特征可能会使研究者和设计者能够开发出新的、更可靠的和更可用的存储系统。

【译者注:总拥有成本(total cost of ownership)是一种在整个企业范围内长期考虑企业整个成本的一种全局性的方法。它是定性分析机构的信息系统的效能的一种定量化的手段,是一种有助于机构全面彻底分析、评价、管理和降低自己的成本的一套方法和建模工具,从而提高整个IT投资的价值,使IT更好地支持业务。】

很不幸,实际系统中磁盘故障的很多方面并没有被很好的理解,可能是因为这些系统的拥有者不情愿公布故障数据或者没有收集这些数据。结果,实践者经常得依赖供应商指定的参数,例如平均无故障时间(MTTF),来模型化故障过程,虽然很多人怀疑这些模型的准确性[4,5,33]。太多的学术界和工业界的研究是基于臆想的数据和粗略的计算,而不是经验数据[28]。

本文的工作是一个更广泛的研究计划的一部分,这个研究计划的长期目标是通过收集、分析和公开大规模生产系统的真实故障数据来提供一个对系统故障更好的理解。我们已经向很多大规模生产站点诉说了我们的请求,其中很多答应提供他们系统的故障数据。

在本文中,我们对收集到的七个数据集做了分析,主要关注存储相关的故障。这些数据集来自大规模生产系统,涉及高性能计算站点和因特网服务站点,主要包括硬件替换日志。这些数据集的持续时间从一个月到五年不等,总共包含至少四个供应商的超过100000个磁盘驱动器。这些数据中的磁盘驱动包含SCSI和FC接口,这两种通常来说代表磁盘驱动中最可靠的类型,也有SATA接口,通常用于桌面和近线系统(nearline systems)。虽然100000个磁盘驱动器相对于以前公布的研究是一个很大的采样,但是与2006年估计的三千五百万个企业磁盘驱动器和总共生产的三亿个磁盘驱动器相比只是很小的采样[1]。诸如由于生产线改变引起的批量次货的现象可能需要更大的数据集才能完整的描述。【译者注: 近线存储( near-online storage)指的是存放在移动媒体上的在站存储数据。】

我们分析了数据三个不同的方面。在第章,我们对磁盘的替换频率和其它硬件的替换频率做了比较。在第章,我们使用现实中的数据对磁盘替换率做了量化分析,与磁盘供应商的预测和模型做了比较。在第章,我们分析了磁盘替换率的统计特征。我们研究了磁盘替换之间的相关性,鉴别了替换时间的经验分布的关键属性,并经将我们的结果与通常的模型和假设做了比较。第章提供了相关工作的综述,第章做了总结。

表 1:七个故障数据集的综述。注意,表中出现的磁盘数量指的是数据收集结束时系统中磁盘驱动器的数量。对于一些系统,在数据收集过程中,磁盘驱动器的数量是变化的,在分析中,我们做了解释。磁盘参数10K和15K指的是以每分钟旋转数表示的转速;没有标记10K和15K的磁盘可能是7200rpm。

2 方法

2.1 磁盘故障是什么?

虽然磁盘故障经常被假设为简单的故障-停止(fail-stop)模型(也就是说通过一个简单的检测方法,磁盘要么正常工作要么完全故障[22,24]),但是现实中的磁盘故障复杂很多。例如,磁盘驱动器可能发生潜在的扇区错误或者瞬时的性能问题。通常来说,将问题的根源正确地归于特定的硬件是很难的。

我们的工作基于硬件替换记录和日志,也就是说,我们关注导致客户认为磁盘已经永久故障并且替换掉它的条件。我们分析了从很多从大规模生产系统收集的记录,其中包含每个磁盘被替换的记录。为了正确的阐述我们工作的结果,理解数据产生的过程是至关重要的。当磁盘驱动器被认定是某问题的“嫌疑犯”之后,运维人员(或者计算机系统自己)将对该磁盘驱动器做一系列测试来评估它的状态。如果该磁盘的状态被认定为客户所定义的有问题的,那么这个磁盘就会被替换掉,硬件替换日志就会添加对应的条目。

务必注意,对于磁盘驱动器是否有问题并没有一个统一的定义。特别的,客户和供应商可能使用不同的定义。举例来说,客户通常的方法是读所有的扇区,看看是否有任何读错误,如果某操作的时间超过特定的阈值,那么就断定这个磁盘有问题。这种测试方式的结果依赖于阈值的选择。很多站点都是抱着“宁可事先谨慎有余,不要事后追悔莫及”的心态,甚至进行更严格的测试。结果会出现这种情况:客户声称磁盘故障了,然而制造商认为是正常的。也有可能客户对“故障”的定义并不满足制造商承诺的稳定性预估中的定义。实际上,某个磁盘供应商声称客户退回的43%的硬盘都是没有任何问题的[ 1]。

务必注意,磁盘故障行为依赖于操作环境,不仅仅是组件等级的因素。举例来说,故障率受环境因素影响,例如温度、湿度、数据中心处理流程、工作负载和“占空比”或者启动时间模式。

我们还想指出磁盘驱动器的故障行为即使在相同的磁盘型号下也可能是不同的,因为磁盘是组装的,部分流程可能改变。这些改变可能改变磁盘的故障行为,例如驱动器固件的改变或者硬件组件甚至组装线的改变。这种影响经常被称为批次或者年份的影响。一个坏批次可能导致异常的高磁盘故障率或者异常的高介质错误率。举例来说,在HPC3数据集中(表 1)客户在2006年10月发现写操作高频率介质错误后替换掉了11000个SATA磁盘驱动器。虽然经过一年的协商处理后,客户和供应商一直认为这些驱动器并不符合保证条件。事故被归因于缓冲设施故障导致的无法承受的高负载。在数据中,这些磁盘驱动器的替换并没有被记录为故障。

在我们的分析中并没有深入研究批次的影响。我们报告一组客户的磁盘替换率的实地经验。客户通常没有判断某些磁盘来自相同或者不同批次所需的必要信息。因为我们的数据涵盖大量的磁盘驱动器(超过100000个),来在不同的客户和系统,所以我们假设这些数据也覆盖不同的供应商,型号和批次。因而我们认为我们的结果不会因为“坏批次”而存在显著偏差。然而,我们要警告读者不要假设所有的磁盘行为完全相同。

2.2 指定磁盘可靠性和故障率

磁盘厂商通过年故障率(AFR)和平均无故障时间(MTTF)这两个相关测量来指定产品的可靠性,年故障率指的是测试中故障磁盘的百分比扩展到一年的估计。新产品的AFR通常是基于应力加速寿命试验或者早期产品的实际数据的估计[2]。MTTF是用每年通电时间除以AFR来估计。在服务器中磁盘的通电时间通常假设为100%。我们的数据集提供者都相信他们的磁盘一直处于通电工作状态。目前最高质量的磁盘的MTTF指定为从1000000小时到1500000小时,对应0.58%到0.88%的AFR。制造商对AFR和MTTF的估计包含在磁盘的数据表中,我们将它们称做为数据表AFR和数据表MTTF。与此相反,我们对数据的分析将会报告反映真实情况的年替换率(ARR),严格来说,客户日志中记录的磁盘替换并不一定等价于磁盘故障(在 2.1章中已经说明)。

2.3 数据源

1提供了该研究中七个数据集的综述。数据集HPC1、HPC2和HPC3来自三个使用超级计算机的组织的三个大规模集群系统。数据集HPC4来自于很多独立管理的HPC站点,其中包括超级计算机站点和商业HPC站点。数据集COM1、COM2和COM3来自具有很多分布式独立管理站点的大规模因特网服务提供商的至少三个不同的集群系统。就所有情况而言,我们的数据报告仅仅基于每个组织运行系统的一部分,就像数据源所决定和选择的那样。务必注意,对于一些系统来说,在数据采集周期中磁盘驱动器的数量是显著变化的。然而在上述表格中仅仅提供了数据采集结束时磁盘的数量,但是在下文的分析中考虑了随日期变化的实际磁盘驱动器数量。再者,有些日志不仅仅记录了替换事件,上表中关于磁盘的事件数量并不一定等于替换或者故障的数量。因此ARR不能直接从表 1中计算出来。

下面我们更详细的说明每个数据集和它所来自的环境。

HPC1是一个五年的硬件替换日志,采集自一个具有765个节点的高性能计算集群。每个节点是一个具有4GB内存和3到4个18GB 10K rpm SCSI驱动器的4路SMP系统。其中64个节点做为文件系统节点,这些节点除了具有3到4个18GB 10K rpm SCSI驱动器,还包含17个36GB 10K rpm SCSI驱动器。运行在该系统上的应用通常是大规模科学模拟或者可视化应用。这个数据集包含五年的硬件替换记录,当出现问题后,记录下受影响的节点、硬件组件和校正行动的简单描述。HPC2是一个具有256个计算节点的HPC集群的磁盘替换记录。每个节点是一个具有16GB内存和两个36GB 10K rpm SCSI驱动器的4路SMP系统,其中的8个节点每个具有8个36GB 10K rpm SCSI驱动器。运行在该系统上的应用通常是大规模科学模拟或者可视化应用。对于每次磁盘替换,数据集记录下受影响的节点号、故障开始时间和替换掉的磁盘的槽号。

HPC3是一个具有1532个节点的HPC集群的磁盘替换记录。每个节点装配有8个CPU和32GB内存。除了其中4个登陆节点以外,每个节点有两个146GB 15K rpm SCSI驱动器。另外,11000个7200 rpm 250GB SATA驱动器做为外部共享文件系统使用,144个73GB 15K rpm SCSI驱动器用于存储文件系统元数据。运行在该系统上的应用通常是大规模科学模拟或者可视化应用。对于每次磁盘替换,数据集记录了替换的日期。

HPC4数据集是一个保修服务的磁盘替换日志。它覆盖很多独立管理的HPC集群中三种不同类型的SATA驱动器。对已第一种驱动器,数据跨越三年,其它两种的时间跨度略小于一年。数据集包含所有13618个驱动器的安装时间和替换时间(如果有问题)。COM1是某个因特网服务提供商记录的硬件故障日志,涵盖多个分布式站点。数据集中的每条记录包含故障修复的时间戳、故障症状的信息和诊断修复故障的步骤列表。数据中没有包含故障发生的实际时间,仅仅只有修复的时间。数据集涵盖26734个10K rpm SCSI磁盘驱动器。在被监控的站点中的服务器总数不清楚。 COM2是一个保修服务的硬件故障日志,代表某个因特网服务提供商多个分布式站点的事件。每个故障记录包含一个修复码(比如,“替换硬盘”)和修复完成的时间。这里也是没有故障发生时间的信息。这些记录不包含在客户站点通过空闲磁盘热拔插替换掉的磁盘。因为这些记录是在保修过程中创建的,保修服务不可能包含现场热插拔替换。为了解决丢失的磁盘替换记录,我们从因特网服务提供商那里获取了周期补充的现场空闲磁盘库存记录。在测量周期中,该系统的大小发生了显著的变换,2004年开始测量时有420台服务器,到2006年测量结束时有9232台服务器。我们获取了测量周期中每个季度的硬件采购记录用来估计ARR分析中的磁盘数量。

COM3数据集来自一个由Internet服务提供商使用的巨大的外部存储系统,包括FC磁盘不同类型的四个族群(见表1)。当这个数据收集于2005年时,系统有一些遗留的老到早至1998的组件和已知在初始安装后被物理移动的。在我们的分析中并没有包括这些“过时”的磁盘替代品。COM3和其他数据集的不同在于,它只提供磁盘故障的汇总统计,而不是为每个故障进行个别记录。数据包含了失败的并在2005年为四个磁盘族群的每一个所替换的磁盘的数量。

2.4 统计方法

我们使用两个导入指标来描述经验分布:平均数 和 变异系数平方

$C^2$

 变异系数平方是对分布离散度的测量,其定义为标准偏差的平方除以平均值的平方。使用变异系数平方作为对离散度的测量,而不是用方差或标准差,其相对优势在于它由平均值标准化了,因此允许对不同平均值的分布进行离散度比较。

我们也考虑经验累积分布函数(CDF),以及它如何适用于可靠性理论中四个常用概率分布:指数分布;韦布分布;伽玛分布;对数正态分布。我们通过最大似然估计进行参数化分布,通过目视检查,否定的对数似然函数和卡方检验(chi-square tests)对拟合优度进行评价。

我们也会讨论替换时间间隔分布的风险率。一般而言,如果随机变量 t 的概率分布f(t) 是累积分布函数是 F(t),那么它的风险率定义为 [25]

\begin{displaymath}h(t) = \frac{f(t)}{1-F(t)}\end{displaymath}

显而易见,如果随机变量 t 表示故障间隔时间,那么故障率 h(t) 便描述了一个瞬时失效率,即相关于上次故障以来所流逝时间的函数。的分布的一个重要特性是它的风险率是否是一个常数(指数分布就是这种情况)或者是否是递增或递减的。风险率为常数,说明在给定时间点的失效率,并不依赖于其距离最近一次故障的时间长短。递增的风险率,意味着如果距离上次故障时间越长,失效的概率越大。递减的风险率,意味着如果距离上次故障时间越长,失效的概率越小。风险率常用来研究生命周期的分布。重要的是要注意到,我们将关注于 磁盘替换间隔时间的风险率,而不是磁盘生命周期分布的风险率。

因为我们关注磁盘故障之间的相关性,所以我们需要一个参数来表示相关性的等级。自相关函数(ACF)表征一个随机变量当前状态与其时滞后状态的相关性。举例来说,ACF可以用来判断某天的故障数是否与天之后的故障数相关。自相关系数范围在1(高度正相关)与-1(高度负相关)之间。0值表示没有相关性,也就说每天的故障独立。我们研究故障过程的另一方面是长期相关性(long-range dependence)。长期相关性表示过程的记忆,在我们的研究中指的就是随着时间的增加,自相关系数以多快的速度衰减。长期相关性用Hurst指数量化。如果Hurst指数 

$0.5 < H < 1$

 ,那么这个序列呈现长期相关性。我们使用Selfis[ 14]来估计Hurst参数,其中使用了五种不同的方法:绝对值法、方差法、R/S方法、周期图法和Whittle估计法。长期相关性的简介和Hurst参数估计的描述在参考文献[ 15]中。

3 磁盘替换率与其它硬件替换率的比较

表 3:在HPC1、COM1和COM2中十种最频繁替换的组件的相对频率。缩写词直接来源于数据,并不清楚在不同的数据集它们是否有同样的定义。

系统的可靠性依赖于其组件,不仅仅是硬盘驱动器。自然而然就有一个问题,跟其它硬件相比,磁盘故障的相对频率是多少。为了回答这个问题,我们统计了数据集HPC1、COM1和COM2,因为这三个数据集包含所有硬件的替换记录,不仅仅是磁盘。表3展示了十种最频繁替换的硬件,以及每种所占的比例。我们发现虽然磁盘替换所占的比例在不同的数据集不同(从20%到50%不等),但是在这三个数据集中,磁盘替换都占有显著的比例。在HPC1和COM2中,磁盘驱动器是最常见被替换的硬件,分别占所有硬件替换的30%和50%。在COM1中,磁盘替换率就略逊于其它组件,差不多占所有硬件替换的20%。

虽然表3表明磁盘是最频繁被替换的硬件组件,但是这并不意味着相比于其它硬件,磁盘是不可靠的或者生命周期更短。在系统中磁盘的数量可能远远超过其它硬件组件。为了比较不同硬件的可靠性,我们需要用组件的数量正规化组件替换的数量。很不幸对于任意系统,我们都没有准确的硬件数量。但是在HPC1中我们有足够的信息来估计四种最频繁替换硬件(CPU、内存、磁盘、主板)的数量。我们估计有3060块CPU,3060块内存条,765块主板和3406块磁盘。结合表3中的数据,针对HPC1系统,我们得出结论,五年中内存条的替换基本于磁盘相同;CPU的替换相对于磁盘少2.5倍;主板的替换比磁盘少50%。

Table 2: 归因于硬件问题的节点故障 。这包含所有的故障,不仅仅是需要替换硬件的故障。

以上的讨论仅仅涉及需要替换硬件的故障。在运行大规模系统的时候,任何引发节点故障的硬件问题都被关注,而不仅仅是需要替换硬件的情况。因此我们获取了HPC1对任意节点归咎于硬件问题的故障检修记录,其中包括需要替换硬件的情况和需要其它方式修复的情况。表2提供了所有将硬件问题识别为根本原因的检修记录明细表。我们发现16%的故障记录关于磁盘(对比表3中的30%),这是第三最普遍的故障根源。其中最普遍的两个故障根源是CPU和内存,分别占44%和29%。

为了对情况有个完整的把握,我们也需要考虑异常情况的严重程度。仔细观察HPC1的检修数据,CPU和内存故障大部分是由于奇偶校验错误引起的,也就是说超出纠错码能力的错误。在这种情况下,只需要简单重启一下就能使受影响的节点恢复工作。另一方面,由磁盘引起的大部分问题(大约90%)都将导致磁盘替换,这是一个更昂贵、更耗时的修复措施。理想情况下,我们将会比较硬件问题的频率与其它类型问题的频率,比如软件故障、网络问题等。很不幸,在表 1中我们没有系统这方面的信息。然而在最近的工作中[ 27],我们分析了涵盖任意类型节点故障的数据,其中包括硬件问题、软件问题、网络问题、环境问题和操作失误。这些数据收集周期超过9年,来自超过20个HPC集群,包括详细的故障根源信息。我们发现对于数据中大部分HPC系统,超过50%的故障是由硬件问题引起的,大约20%的故障是由软件问题引起的。与表 2中的数据一致,引起节点故障的两个最普遍的硬件是内存和CPU。这份最近的研究[ 27]的数据并没有用于本文,这是因为那些数据不包含存储替换的信息。

4 磁盘替换率

 4.1 磁盘替换和MTTF

  图 1: 数据表中的AFR(实线和短划线)和实际的ARR之间的比较。图中的每一个柱表示表1中的一行。虚线表示所有数据集的加权平均。只有五年名义寿命之内的磁盘包含在图中,也就是说COM3中部署于1998的磁盘没有出现在图中。图中COM3的第三个柱被截断了——它的ARR是13.5%。

接下来,我们研究比较实际的磁盘替换与数据表中的磁盘可靠性。图1展示了数据表上的AFR(水平的实线和短划线),七个数据集观测到的ARR和寿命少于五年的磁盘的加权平均ARR(虚线)。对于包含不同种类磁盘的HPC1、HPC3、HPC4和COM3,图中包含好几个柱,每一个代表一种磁盘,从左到右依次对应表1中自上而下。因为我们对磁盘名义寿命之后的磨损效应不感兴趣,所以我们只使用了表1中五年名义寿命之内的磁盘数据。特别的,我们没有包括COM3中的第四类磁盘驱动器(看表1),因为这些磁盘驱动器部署于1998年,在完成数据收集时寿命已经超过七年了。这些可能“过时”的磁盘在测量周期中的ARR达到24%,因为这些磁盘超出了供应商的名义磁盘寿命,所以也不奇怪这些磁盘可能破烂不堪。其它磁盘都在名义寿命之内,并且统计在图中。

1表明所有数据集观测到的ARR和数据表中的AFR存在显著差异。虽然数据表AFR介于0.58%与0.88%之间,但是观测到的ARR范围从0.5%至13.5%。也就是说,观测到的ARR超过数据表AFR 15倍。

对于大多数情况,观测到的ARR值在3%左右。例如HPC1,基本涵盖整个五年名义寿命,它的ARR是3.4%(显著的高于数据表中0.88%的AFR)。所有数据集的平均ARR(通过每个数据集磁盘数量加权计算)是3.01%。即使在移除了最高ARR的COM3的数据之后,平均的ARR仍然高达2.86%,是0.88%的3.3倍。我们发现在所有数据集中SCSI、FC驱动器的替换率与SATA驱动器的替换率没有显著差异,SCSI和FC驱动器通常代表最可靠的磁盘驱动器种类,SATA通常被称为低质量的。例如全部都是SATA驱动器的HPC4数据集,它的ARR是所有数据集中最低的。此外,HPC3同时包含SCSI驱动器和SATA驱动器(SATA驱动器做为系统的一部分工作在同样的操作环境),它们几乎具有一样的替换率。当然这些HPC3 SATA驱动器由于缓冲系统故障造成的媒介错误率而全部报废了(回想一下 2.1章),这是我们对坏批次唯一的证据,所有可能我们需要更多的数据来更好的理解批次对整体质量的影响。

我们也发现只有HPC4中的第二、第三种磁盘驱动器的观测ARR低于数据表AFR。一个可能的原因是这些都是相对较新的磁盘,都不超过一年(回想一下表1)。而且这里的ARR仅仅基于16次替换,可能数据太少以至于不能得出确切的结论。

自然而然就出现了一个问题:为什么实际的磁盘替换率比数据表中MTTF表明的高这么多,即使对于刚运行一年的驱动器。就像在2.1章和2.2章讨论的那样,可能有很多原因。第一,对于磁盘发生“故障”,客户和供应商可能有不同的定义。磁盘被替换意味着它没有通过(可能是客户指定的)健康测试。当健康测试比较保守的时候,客户替换掉的磁盘对于供应商的测试可能是健康的。注意,即使我们将图 1中的ARR降低到57%,用来估计返厂之后测试良好的磁盘比例[ 1],在大部分情况下得出的AFR估计仍然比数据表中的AFR高两倍。

第二,数据表MTTF通常是基于加速(压力)测试决定的,这对磁盘被使用的操作环境(比如温度将总是低于某一阈值)、故障负载、“占空比”或者启动时间模式和数据中心遵循的处理流程做了特定的假设。在实践中,操作环境可能并不总是像决定数据表MTTF的测试中假设的那么理想。Elerath和Shah给出了造成磁盘可靠性期望与现实之间差距的因素的更详细的讨论[6]。

下面我们总结本节的关键观测结果。

观测结果1:数据表中的MTTF与实际磁盘替换率之间的差异比预想的大。ARR的加权平均值是0.88%的3.4倍,0.88%对应数据表中1000000小时的MTTF。

观测结果2:对于旧系统(5-8年),数据表中的MTTF低估了磁盘替换率多达30倍。

观测结果3:即使在系统生命周期的前几年(小于3年),当磨损并不被认为是一个重要因素的时候,数据表中MTTF已经是观测到的磁盘替换时间的6倍。观测结果4:在我们的数据集中,SATA驱动器的替换率并不比SCSI或者FC驱动器的替换率更糟糕。这可能表明非磁盘因素对替换率的影响超过磁盘本身的因素,非磁盘因素包括操作条件、使用和环境因素。然而,我们发现的唯一一个坏批次的证据是关于高媒介错误率的SATA驱动器。我们关于坏批次的数据太少以至于很难估计不同种类磁盘驱动器之间发生坏批次的频率,虽然有大量传言声称坏批次不仅仅发生于SATA驱动器。

4.2 时间相关的替换率

图 2:磁盘的生命周期故障模式 [33].

对于像MTTF和AFR这种单一值指标不能很好的表示磁盘故障的一个原因是真实的磁盘故障率不是恒定的[5]。硬件的故障率通常遵循“浴盆曲线”,在开始的时候(早期故障期)和生命周期结束的时候(磨损期)故障率高。图2展示了磁盘整个生命周期的预期故障率模式[4,5,33]。参照这个模型,磁盘运行的第一年被称作早期故障期。在2-5年,故障率近似在稳定的状态,5-7年后,磨损开始出现了。

MTTF不能表示早期故障期的事实得到了大家共同的关注,国际磁盘驱动器设备及材料协会(IDEMA)提出了基于图2中磁盘故障模型的规格化磁盘可靠性的新标准[5,33]。新标准要求提供商给出四个不同的MTTF估计,一个对应运行的前1-3月,一个对应4-6月,一个对应7-12月,一个对应13-60月。

基于真实的磁盘替换数据,本节的目标是研究在大规模系统中,磁盘的替换率是如何随着系统生命周期变化的。注意我们仅仅知道用户可见的替换。任何在生产、系统集成和安装测试时期的早期故障不可能记录在产品替换日志中。

研究系统生命周期磁盘替换率最佳的数据是HPC1和HPC4的第一类磁盘。原因是这些数据集的时间跨度足够长(分别是5年、3年),另外磁盘数量相当均匀,让我们可以关注在时间的影响上。

图 3:HPC1生命周期前五年的ARR,左边是计算节点,中间是文件系统节点。右边是HPC4中第一类磁盘的ARR。

图 4:HPC1生命周期前五年的每月ARR,左边是计算节点,中间是文件系统节点。右边是HPC4中第一类磁盘的每月ARR。

我们在两个不同的时间粒度上将磁盘替换率的变化做为时间的函数,分别是每月和每年,这样可以更简单的检测短期和长期趋势。图3以每年的时间粒度展示了HPC1系统的计算节点的年替换率(左边),HPC1系统的文件系统节点的年替换率(中间)和HPC4中第一类磁盘的年替换率(右边)。我们得出了两个有趣的观测结果。第一,除了第一年,其它年份的替换率都比数据表中的MTTF大。例如,在HPC1的第二年,文件系统节点的替换率比期望的大20%,计算节点是期望的两倍。在第4和第5年(仍然在磁盘的名义寿命内),磁盘的实际替换率是基于数据表MTTF所期望的故障率的7-10倍。

第二个观测结果是即使是在生命周期的早些年,替换率随着时间显著的增加。在HPC1中第二年的替换率是第一年的两倍,第三年的替换率是第二年的两倍。这个观测结果表明磨损可能比预期的更早发生,在系统的大部分使用寿命中导致了稳定的替换率增加。这个观测结果很有趣是因为这并不与通常的一年之后“浴盆底部”稳定的故障率的假设一致。下面我们观察一下 展示在图 4 中的每月的磁盘替换率。我们发现对于HPC1文件系统节点,在前12个月没有替换,也就说没有早期故障期。对于HPC4,第一年头几个月的磁盘ARR并不比第一年末几个月的替换率高。在HPC1计算节点中,早期故障期被限制在第一个月,替换率不高于数据表MTTF对稳定状态的估计。观察12个月之后的生命周期,我们仍然发现了持续增长的替换率,而不是期望的“浴盆底部”。

下面我们总结本节的关键观测结果。

观测结果5: 与通常提出的模型相反,磁盘替换率在第一年之后并没有进入稳定状态。相反替换率似乎随着时间稳步增加。观测结果6: 即使在仅仅考虑系统寿命头三年和头五年的时候,相比于早期故障期,磨损现象的早发似乎对生命周期替换率有更强的影响,就像终端用户经历的那样。因此我们建议将摩擦整合到新的磁盘稳定性标准中。IDEMA提出的新标准并不考虑磨损 [ 5 , 33 ].。

5. 磁盘故障的统计特征

在前面的章节中,我们关注了一些整体统计结果,例如:一段时间内平均替换掉的磁盘数量。然而相对于平均情况来说,我们经常需要一些故障间的统计特征。举个例子来说,想要确定一个RAID系统预期的故障时间,需要估计在一段很短的时间内出现第二个磁盘故障的概率。这段很短的时间,即从冗余数据中重建已经丢失的数据的时间。这个概率依赖于潜在的(底层的)概率分布,并且可以通过把一年一次的故障率调整到几个小时一次来粗略估计。

关于磁盘故障的统计特征中最主要的假设是:他们形成了一个泊松过程。这意味着以下两个关键性质:

  1. 故障是相互独立的。
  2. 两次故障之间的时间服从指数分布。

本节的目的是评估上述假设有多大的现实意义。我们首先提供统计证据表明,在现实世界中的磁盘故障不可能遵循一个泊松(Poisson)过程。然后我们独立地检查两个关键属性(独立的故障和故障之间的指数时间)中的每一个并详细描述泊松假设在何处以及怎样被打破。在我们的研究中,我们专注于 HPC1 数据集,因为这是包含检测到问题时的精确时间戳(而不仅仅是修理发生时的时间戳)的唯一的数据集。

5.1 泊松假设

Figure 5:HPC1每月磁盘替换数量的CDF,左边是整个生命周期的情况,右边是第2-3年的情况。

泊松假设意味着给定时间间隔(比如一周或者一个月),故障数量符合泊松分布。图5(左)给出了HPC1中每月磁盘替换数量的经验CDF,虚线表示符合数据集观测平均值的泊松分布。

我们发现泊松分布并没有很好的拟合每月的磁盘替换数量,特别对于某些月份特别小和特别大的替换数量。例如,对于泊松分布,当每月替换的数量大于20时,对应的概率小于0.0024,而在HPC1中,我们看到每月替换数量大于20的月份占了所有月份的20%。类似地,在泊松分布中没有故障或者有一个故障的概率仅有0.0003,而在HPC1中20%的月份没有磁盘替换或者有一个磁盘替换。

通过卡方检测,我们发现可以以0.05的显著性水平拒绝每月磁盘替换数量符合泊松分布的假设。当观察每天、每周而不是每月的磁盘替换数量分布时,以上得出的结果都是类似的。造成泊松分布拟合较差的原因可能是HPC1生命周期中的故障率不稳定。因此我们对HPC1部分生命周期做了同样的分析。图 5(右)展示了HPC1第二年和第三年的每月磁盘替换分布。在这个时间周期中,泊松分布拟合的更好,卡方检测以0.05的显著性水平接受泊松假设。然而这并不意味着第二年和第三年的故障过程符合泊松过程,因为还需要满足泊松过程的两个关键属性(故障独立和故障之间的指数性时间)。在下述两节,我们详细的研究了这两个属性。

5.2 相关性

在本节,我们关注泊松过程的第一个关键属性——故障独立。直观上来说,同一个系统的磁盘故障不可能完全独立。比如磁盘的故障概率依赖很多因素,例如像温度这种环境因素,系统中所有的磁盘都共享同样的因素。当温度超过名义值时,所有的磁盘都会经受比正常值更高的故障概率。本节的目标是统计量化和描述磁盘替换之间的相关性。

我们以一个简单的测试开始,通过计算给定周或月与之前周或月的替换数量的相关系数来判定连续的周或月的磁盘替换数量相关性。对于符合泊松过程的数据,我们将会期望相关系数接近0.相反我们发现无论是按每月的时间粒度还是每周的时间粒度都具有显著性水平的相关性。

连续两周的相关系数是0.72,连续两月的相关系数是0.79。按照每年的时间粒度重复上述测试,我们仍然发现相关系数是0.4-0.8。从统计学上来说,上述的相关系数表示强相关,但是对上述结果有个更直观的解释还是很不错的。故障相关性的一种解读是一个时间间隔的故障率可以预测下一个时间间隔的故障率。为了测试这种预测的强度,我们依据每周的磁盘替换数量将HPC1的每周放到三个桶中的一个   1,三个桶分别对应小数量的替换、中数量的替换和大数量的替换。我们期望在“小”数量替换之后的那周比在“大”数量替换之后的那周更可能是小数量替换。然而,如果故障是独立的,该周的替换数量将不会依赖前一周。
图 7: 依赖前一周的磁盘替换数量期望的本周磁盘替换数量,左边是HPC1整个生命周期的情况,右边是HPC1第三年的情况。

7(左)展示了HPC1生命周期中以前一周的情况做为函数输入得出的本周的期望磁盘替换数量,我们发现依赖前一周落到第一个桶还是第三个桶得出的本周期望的磁盘替换数量有9倍的差别,然而如果故障是独立的,我们期待没有变化。当对HPC1第3年的数据重复上述过程的时候,我们发现第一个桶和第三个桶仍有接近两倍的差别。

图 6:每周磁盘替换数量的自相关函数,左边是HPC1整个生命周期的情况,右边是HPC!某一年的情况。

到目前为止,我们仅仅考虑了连续时间间隔之间的相关性,例如连续两周之间。描述相关性的一个更通用的办法是使用自相关函数研究不同时间延迟的相关性。图6(左)是整个HPC1数据集每周磁盘替换数量的自相关函数。对于平稳的故障过程(比如服从泊松过程的数据),在所有的时滞,自相关值接近零。相反我们发现在100周(接近两年)的时滞范围内具有强自相关。

我们在部分HPC1生命周期中重复了自相关测试,发现了类似等级的自相关性。图6(右)展示了HPC1第三年数据的自相关函数。相关性在长达30周的时滞内很显著。

另外一个对相关性的测量是长期相关性,长期相关性通过Hurst指数 H 量化。Hurst指数测量自相关函数随着时间增加以多快的速度下降。0.5-1之间的Hurst指数表明统计过程具有长期记忆,自相关函数是缓慢下降的。通过对HPC1数据使用几种不同的估计方法(看第2章),我们得出在每周的时间粒度上Hurst指数在0.6-0.8之间。这些值与描述以太网流量的Hurst指数具有可比性,也就是说存在强长期相关性[16]。

观测结果7:磁盘替换数量存在显著性水平的自相关。

观测结果8:磁盘替换数量存在长期相关性。

5.3 故障之间时间间隔的分布

图 8:HPC1中所有节点磁盘替换时间间隔的分布

在本节,我们关注泊松故障过程的第二个关键属性——故障之间的指数分布的时间。图8展示了HPC1系统中磁盘替换时间间隔的经验累积分布函数和四种匹配它的分布。

直观上来看伽玛分布和Weibull分布拟合的最好,指数分布和对数分布拟合的不好。这与我们从负指数似然得到的结果一致,负指数似然显示Weibull分布是拟合的最好的,接下来是伽玛分布。通过卡方检测,我们可以用0.05的显著性水平拒绝指数分布和对数分布的假设。另一方面,Weibull分布或者伽玛分布不能以0.05的显著性水平拒绝。

8(右)是较小磁盘替换时间间隔(小于24小时)的经验累积分布函数的特写。这部分让人感兴趣的原因是指数分布假设的关键应用是用于估计RAID系统中数据丢失的时间。这个时间依赖重建过程中第二个磁盘故障的概率,重建的过程通常需要几小时。从图中可见指数分布大大低估了期间第二次故障的概率。举例来说,在集群中一小时之内有两块磁盘故障的真实概率是指数分布的四倍。在集群中十小时之内有两块磁盘故障的真实概率是指数分布的两倍。

图 9:HPC1第3年所有节点的磁盘替换时间间隔的分布

指数分布拟合的不好可能是由于故障率在整个生命周期都是变化的,指数分布不能描述这种磁盘替换时间间隔的变化性。因此我们对HPC1生命周期的部分重新进行了上述分析。图 9展示了HPC1第3年磁盘替换时间间隔的分析结果。虽然直观上看指数分布拟合的很好,但是我们仍然以0.05的显著性水平拒绝了指数分布的假设。对于HPC1其它一年甚至六个月的时间段,情况类似。这让我们相信即使在HPC1较短的生命周期内也不能用指数分布真实地建模。

虽然针对简单的指数分布没有更灵活的两个参数的分布拟合的好这样一个事实没什么需要惊讶的,但是一个有趣的问题是什么属性导致了经验时间间隔与理论的指数分布不一致。我们识别的第一个差别是,与理论指数分布相比,数据展示了更高的变化性。数据的C2是指数分布的C2的两倍多,数据的C2是2.4,指数分布的C2是1。

第二个差别是数据中的磁盘替换时间间隔显示出下降的危险率。回想一下2.4节,危险率方程测量距上一次故障的时间如何影响下一次故障的期望剩余时间。递增的危险率函数预言如果离上一次故障时间很长,那么下一次故障就临近了。对于递减的危险率函数预言相反的情况。下表总结了提供最佳拟合的Weibull分布和伽玛分布的参数。

对于文件系统节点、计算节点和所有节点,提供最佳拟合的伽玛分布和Weibull分布的形状参数都小于1,这明确的表示递减的危险率。

图 10:递减的危险率的图解

10展示了磁盘替换时间间隔递减的危险率,Y轴表示到距下一次磁盘替换的期望剩余时间,X轴表示距上次磁盘替换的时间。我们发现当一个磁盘被替换后,距下一个磁盘被替换的期望剩余时间大约是4天,在这一刻经验数据和指数分布是一致的。对于经验数据,在10天没有磁盘替换之后,距下一次磁盘替换的期望剩余时间从最初的4天增加到10天;在20天没有磁盘替换之后,距下一次磁盘替换的期望剩余时间增长到15天。相比之下,在指数分布中,期望剩余时间保持不变(也被称作无记忆属性)。

注意,以上结果并不与4.2节递增的替换率矛盾,因为我们关注的是集群中磁盘替换时间间隔的分布,而不是磁盘生命周期的分布(也就是说在磁盘被替换之前它运行了多长时间)。

观测结果9:磁盘替换时间间隔遵循指数分布的假设可以以高可信度拒绝。

观测结果10:磁盘替换时间间隔具有比指数分布更高的变化性。

观测结果11:磁盘替换时间间隔具有递减的危险率,也就是说,距下一个磁盘被替换的期望剩余时间随着与距上一次磁盘替换的时间的增加而递增。

6 相关著作

极少有已出版著作是分析真正大规模存储系统的失效问题的,这可能是由于系统所有者不愿意发布这样的系统故障数据。

在为数不多的现存研究文献中,有一篇是Talagala等人 [29]所写,其中研究了用于一台web服务器的研究型存储系统上的错误日志,里面还包含了不同硬件部分故障率的比较。他们指出SCSI硬盘附件是最不可靠的组件,而SCSI硬盘是最可靠的组件之一,这与我们的结论有所不同。

在一个最近的研究中,Schwarz等人[28]着手收集失败数据记录于互联网档案馆(Internet Archive),他们计划用这些数据来研究硬盘故障率和钻头磨损率,以及它们是如何受不同环境因素影响的。在他们初步结论中,ARR值在2-6%,互联网档案馆也没有发现有明显的早发性磨损。这二者与我们的发现一致。

Gray [31]报告了不可修复的磁盘读错误的频率,他发现这些数字要比供应商数据显示的要小。Gray也给出了SCSI和ATA磁盘的ARR估计,范围在3-6%,这在我们观测到的SCSI驱动器ARR数据范围之内。

Pinheiro等人由大量串口和并口ATA 驱动器分析了磁盘替换数据 [23]。他们说ARR值在1.7% 到 8.6%范围,与我们结果一致。他们研究的焦点在于,各种系统参数和驱动器故障之间的相关性。他们发现温度和利用率与故障之间的相关性要比设想中的要小很多,有几个智能计数器(SMART counters)的值与故障高度相关。例如,他们指出在一次擦除错误之后,与没有擦除错误的比起来,磁盘在60天内有39倍的故障可能性,另外在失效的驱动器中有44%的智能计数有增加,至少是四个特殊计数器中的一个计数增加了。

许多人批评基于MTTF故障率预测的精确度,他们指出需要有更现实的数据模型。特别需要关注的是,单一的MTTF数值无法捕捉到生命周期模式 [4,5,33]。我们对生命周期的研究显示,这种担心是合理的,因为我们发现即使在生命周期的头二到三年,故障率也有显著的变化。然而,在已出版研究文献中的最常见的生命周期数据,低估了早期失效率。我们的研究不能支持它。相反我们观察到它们对早期磨损有显著的低估。

早前有关于RAID系统的文献 [8]提供了一些磁盘故障间隔时间的统计分析(那是些1980年代使用磁盘的数据),但是没有找到充分的证据很有信心的拒绝失败之间的指数倍数关系的假说。然而,故障间隔时间已经在几个其它非存储数据的研究文献中被分析过了 [11,17,26,27,30,32]。其中四篇使用分布进行拟合,发现韦布分布对其有很好的拟合[11,17,27,32],这与我们的结果相符。所有的研究都关注于故障率函数,但是却得到了不同的结论。其中四篇 [11,17,27,32]发现递减的故障率(韦布形参<0.5)。其余的发现故障率是平直的[30],或者是递增的[26]。而我们发现的是0.7-0.8形参的韦布分布的故障率。

大规模故障的研究是稀缺的,即使当考虑的是一般的IT系统而不仅是存储系统。大多数现有的研究只限于几个月的数据,覆盖通常只有几百个故障[13,20,21,26,30,32]。许多最常被引用的故障分析研究源于80年代末和90年代初,那时的计算机系统与今天[9,10,12,17,18,19,30]明显不同。

7 结论

有许多人指出需要对实际环境中磁盘故障是怎样的一种情形有更好的理解。但是很少有出版著作提供了对生产系统中磁盘故障的大规模研究。作为缩小这个差距的第一步,我们分析了磁盘替换数据,这些都来源于许多生产系统,横跨了至少四个不同供应商的超过100,000个驱动器,包括了SCSI, FC 和 SATA接口。下面是我们其中一部分结论的概括。

  • 大规模安装现场使用情形似乎与标称MTTF数据表中的情形差异显著。系统的现场替换率比我们基于MTTF数据表预计的要显著的大。
  • 对于少于5年寿命的驱动器,现场更换率比MTTF数据表提出的要高2-10倍。对于5到8年的驱动器,现场更换率要比MTTF数据表提出的要高30倍。
  • 磁盘在生命周期头5年的替换率的变化情况比通常想象的要更富戏剧性。虽然替换率经常被期望在2-5年的运行中是稳定的(“浴缸曲线”的底部),但我们观察到有一个持续的替换率增长,在运行期的第二年就开始了。
  • 在我们的数据集中,SATA磁盘的替换率并不比SCSI或 FC差。这可能暗示着磁盘属于独立因素,正如操作条件,使用以及环境因素一样,它比特定组件因素对替换率的影响要来得大。不过,我们有唯一的一次证据显示,有一批坏磁盘是属于一批具有很高介质误码率的SATA磁盘中的。我们几乎没有什么关于坏批次的数据,因此无法根据磁盘类型估计坏批次的相对频率,即使是已经有大量证据传闻显示,坏批次并不是仅仅针对SATA磁盘的。
  • 通常情况下MTTF对早期磨损率的低估导致了对包含早期磨损率标准的提议 [33]。我们发现相比于仅仅是低估早期磨损率并建议在新标准中包含它,实际情况中对早期磨损率的低估是一个相当严重的问题。
  • 虽然很多人怀疑通常认为的指数分布故障间隔时间/替换时间是不现实的,先前的研究还没有找到足够的有充分统计学信心的证据来证明这一假设错了 [8]。基于我们的数据分析,我们能够有信心拒绝磁盘更换间隔时间服从指数分布的假设。我们建议在可能的条件下,研究人员和设计师使用现场替换数据,或者具有两个参数的分布,比如韦布分布。
  • 我们识别出的关键特性是,磁盘更换间隔时间的经验分布与指数分布之间的区别,它具有更高水平的可变性和更低的风险率。我们发现经验分布能够与具有0.7~0.8形参的韦布分布有很好的拟合。
  • 我们还提供了强有力的证据,证明在磁盘替换相互间隔之间存在相关性。特别的,经验数据显示出了显著水平的自相关性和长期的独立性。

转自《现实世界中的磁盘故障:一百万小时的MTTF对你来说意味着什么? 》

赞(0)
未经允许不得转载:北凉柿子 » 现实世界中的磁盘故障:一百万小时的MTTF对你来说意味着什么?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址