理论教育 磁盘和磁盘阵列的可靠性分析

磁盘和磁盘阵列的可靠性分析

时间:2023-06-14 理论教育 版权反馈
【摘要】:(二)磁盘阵列的可靠性为了防止可检测的错误,通常采用冗余技术将磁盘组织成磁盘阵列,冗余技术主要分为多路镜像技术和纠删码技术。与多路镜像技术相比,纠删码技术可以提高磁盘阵列的存储效率,并且只引入少量的额外能耗开销。磁盘阵列的条带化是独立构成纠删码算法的信息集合。纠删码技术主要用于解决磁盘故障和潜在扇区错误引起的数据丢失问题,而没有考虑不可检测的磁盘错误引起的无记载数据损坏问题。

磁盘和磁盘阵列的可靠性分析

作为主流的存储设备的磁盘,其存储容量不断增长,已从最初的MB级发展到现在的TB级。一个PB级的数据中心需要采用上千个磁盘,一个EB级的数据中心需要采用上百万个磁盘。磁盘作为一种机械式存储设备,产生的磁盘错误将导致数据丢失或者损坏。磁盘错误类型主要包括:磁盘故障、潜在扇区错误和不可检测的磁盘错误。因为磁盘是数据的载体,所以磁盘的可靠性与被存储数据的可靠性直接相关。

(一)磁盘的可靠性

磁盘错误分为可检测的错误和不可检测的错误。

1.可检测的错误

磁盘故障和潜在扇区错误属于可检测的磁盘错误。

(1)磁盘故障。磁盘故障指磁盘硬件错误导致整个磁盘数据变得无法访问。磁盘的年故障率为1.7%~8.6%,磁盘的年替换率最高达到13%。由此可以看出,对于由上千个磁盘组成的PB级存储系统来说,一年内发生故障的磁盘个数就会达到几十个甚至上百个。而对于由上百万个磁盘组成的EB级存储系统,一年内发生故障的磁盘个数则将达到几万个甚至几十万个。这是一个惊人的数字。

(2)潜在扇区错误。潜在扇区错误指磁盘盘片表面磁介质损坏或ECC错误导致某些扇区数据变得无法访问或不可修复。在32个月内,153万个磁盘中出现潜在扇区错误的磁盘比例为3.45%,并且这些出现错误的磁盘中潜在扇区错误个数的平均值高达19.7。

2.不可检测的错误

不可检测的磁盘错误指磁盘固件或硬件错误导致从磁盘读出的数据与磁盘预存的数据不一致。根据引发的时间点,又可分为不可检测的读错误和不可检测的写错误。不论是不可检测的读错误还是写错误,在应用中对读操作表现出来的症状相同,要么是读取了过时的数据,要么是读取了不正确的数据。过时的数据和不正确的数据的区别是过时的数据虽然正确,但已过期,而不正确的数据就是指错误的数据。不可检测的读错误是瞬时的错误,而不可检测的写错误则是持久的错误。因此,比较起来,不可检测的写错误对存储系统的可靠性的影响更为严重。不可检测的写错误主要分为如下三种。

(1)误地址写。磁盘固件中的缺陷将使正确的数据被写到错误的位置,从而导致误地址写。

(2)丢失写。如果磁盘的磁头信号强度不够就不能将写数据送达磁盘盘片,并覆盖盘片上原先存储的旧数据。但此时,如果磁盘又向上层发出“写操作完成”的报告,就会发生丢失写。

(3)破写。破写是指如果磁盘在写数据的过程中电源被循环重启,就会导致一部分数据刚写入磁盘时,写操作就结束了。

(二)磁盘阵列的可靠性

为了防止可检测的错误(磁盘故障和潜在的扇区错误),通常采用冗余技术将磁盘组织成磁盘阵列,冗余技术主要分为多路镜像技术和纠删码技术。

1.多路镜像技术

多路镜像技术又称为多副本技术,就是将数据复制为多个副本并分别存储,以实现冗余备份。例如,将每份数据同时存储到t+1个磁盘中,以防止t个磁盘同时发生故障。但是这种方法需要t倍的额外存储开销,导致存储成本非常高。RAID11是该技术的一个典型应用,采用2路镜像并且能容忍1个磁盘发生故障。(www.daowen.com)

2.纠删码技术

纠删码技术的基本思想是将k个原始数据元素通过编码计算,得到m块冗余元素,在所有的(k+m)块元素中,任意不高于m块元素出错都可以通过重构算法恢复出原来的k块原始数据。其过程如图4-6所示,先将k个磁盘的原始数据存储到由n个磁盘组成的磁盘阵列中(其中k<n<2k),并对磁盘阵列进行条带化。然后用一个纠删码对每个条带中的数据进行编码,以便在多个磁盘同时发生故障时丢失的数据能被恢复出来。如果采用的纠删码是最大距离可分(Maximum Distance Separable,MDS)码,则可以容忍多达m=n-k个磁盘同时发生故障。为了容忍t个磁盘同时发生故障,纠删码技术只需要t/n(t/n<1)倍的额外冗余。RAID5是该技术的一个典型应用,采用1个冗余磁盘并且能容忍1个磁盘发生故障。与多路镜像技术相比,纠删码技术可以提高磁盘阵列的存储效率,并且只引入少量的额外能耗开销。现已提出多种纠删码技术,主要有RS码、奇偶校验码和阵列码。

图4-6 磁盘阵列

(1)RS码。RS码能够提供高容错能力的最大距离可分码,但编码和解码工作量较大。RS码的原理是利用生成矩阵与数据列向量的乘积得到信息列向量。在重构的时候,利用未出错的信息列向量所对应的残余生成矩阵的逆矩阵,再与未出错的信息列向量相乘,来恢复原始数据。磁盘阵列的条带化是独立构成纠删码算法的信息集合。

(2)奇偶校验码。奇偶校验码是一种基于异或运算的纠删码。最简单的奇偶校验码是单奇偶校验码。在单奇偶校验码中,一个条带中只有唯一的一个校验条块。基于单奇偶校验码可以构造出具有更高容错能力的奇偶校验码。根据构造方式,奇偶校验码可以分为下述两大类。

①几何结构奇偶校验码

几何结构奇偶校验码将一个条带中的条块在逻辑上组织成多维几何结构,然后在每个方向上采用单奇偶校验码进行编码,因此具有规整的结构。虽然此类校验码易于实现,但是存储效率较低。

②图结构奇偶校验码

图结构奇偶校验码由基于Tanner图构造的低密度奇偶校验码组成。低密度奇偶校验码最初是为了通信链路的容错而设计,近年来用于广域网的存储。它的优点是容错性好,具有较高的存储效率,解码复杂度很低。由于它基于不规整的图结构构造,因此在磁盘阵列中不仅很难实现,还将导致硬件设计复杂化。

(3)阵列码。阵列码是奇偶校验阵列码的简称,其原理是将原始数据和冗余数据都存储在二维或者多维的阵列中。阵列码具有易于实现、编码和重构的过程相对简单等特点,因此应用较为广泛。阵列码根据冗余数据和原始数据的排放方式不同可以分为水平和垂直两类。

①水平阵列码是指冗余数据单独存放在独立的冗余磁盘中,而剩余磁盘存放原始数据,这种排放方式可扩展性良好。

②为了使更新复杂度降到最低,提出了垂直阵列码。在S垂直阵列码中,某些条块中既存储了冗余数据,也存储了原始数据。由于垂直阵列码的几何结构简单,因此其计算开销可均匀地分布到各个磁盘上。

③水平垂直阵列码是一类混合结构的阵列码。

纠删码技术主要用于解决磁盘故障和潜在扇区错误引起的数据丢失问题,而没有考虑不可检测的磁盘错误引起的无记载数据损坏问题。传统的方法是为磁盘数据附带存储元数据,包括校验和版本号等额外信息,进而使得无记载数据损坏变得可检测。然而,这种方法需要额外的存储开销来存取元数据,尤其是在写磁盘数据的时候,还要同步地更新元数据,从而对写操作性能影响较大。由于增加元数据方法使写操作过程复杂化,增大了写操作失败的可能性,还可能引起新的无记载数据的损坏。此外,增加元数据方法在检测无记载数据损坏方面也存在一定局限性,不能检测到所有类型条块的更新错误。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈