驱动器阵列和容错方法
驱动器阵列
单个物理(硬盘)驱动器的容量和性能足够家庭用户使用。但是,企业用户需要更大的存储容量、更高的
数据传输速率以及在驱动器发生故障时更有效地防止数据丢失。
将额外的物理驱动器(图中的 Pn )连接到系统可增加总存储容量,但对读取 / 写入 (R/W) 操作的效率不会
产生影响。仍只能将数据一次传输到一个物理驱动器。
在系统中安装阵列控制器后,可将若干物理驱动器的容量组成一个或多个称为 逻辑驱动器 (也称为 逻辑
卷 ,在本节的图中用 Ln 表示)的虚拟单位。然后,其中所有物理驱动器的读 / 写头同时活动,减少了数据
传输所需的总时间。
由于读 / 写头同时活动,因此可在任意给定时间间隔内向每个驱动器写入相同的数据量。每个数据单位称为
一个 块 (在图中用 Bn 表示),而相邻的若干块形成一组数据 带区 (Sn) ,分布在构成逻辑驱动器的所有物
理驱动器上。
为使逻辑驱动器中的数据可读,每个带区中的数据块顺序必须相同。由阵列控制器执行此排序过程,其中
将数据块以正确顺序发送到驱动器写头。
128 故障排除 带区化过程自然而然的结果是给定逻辑驱动器中的每个物理驱动器均包含等量数据。如果一个物理驱动器
的容量大于同一逻辑驱动器中的其它物理驱动器,则将浪费前者多出来的容量,因为逻辑驱动器无法使用
这些容量。
包含逻辑驱动器的物理驱动器组称为 驱动器阵列 ,或简称为 阵列 (在图中用 An 表示)。由于通常将阵列
中的所有物理驱动器仅配置为一个逻辑驱动器,因此一般使用“阵列”这个词作为逻辑驱动器的同义词。
但是,阵列可包含多个逻辑驱动器,其中每个的大小可不同。
阵列中的每个逻辑驱动器分布在阵列中的所有物理驱动器上。逻辑驱动器还可扩展到同一控制器上的多个
端口上,但不能扩展到多个控制器上。
驱动器故障会造成灾难性的损失,虽然这种情况很少发生。对于按上图所示方式配置的阵列,阵列中任意
物理驱动器发生故障都会导致阵列中每个逻辑驱动器丢失数据,且无法恢复。为防止因物理驱动器故障而
丢失数据,为逻辑驱动器配置了容错。
对于除 RAID 0 以外的任何配置,可通过分配一个驱动器作为 联机备用 (或 热备用 ),进一步防止丢失数
据。此驱动器不含任何数据,连接到与阵列相同的控制器。当阵列中的任意其它物理驱动器发生故障时,
控制器自动将最初位于故障驱动器上的信息重建到联机备用驱动器。于是,系统即恢复完整的 RAID 级别
数据保护,即使其现在不再具有联机备用驱动器也是如此。(但是,在极少数情况下,如果将数据重新写
入备用驱动器时阵列中的另一个驱动器发生故障,则逻辑驱动器仍将发生故障。)
配置联机备用驱动器后,自动将其分配给同一阵列中的所有逻辑驱动器。此外,不需要向每个阵列分配一
个单独的联机备用驱动器。而是,如果所有阵列都在同一控制器上,可配置一个硬盘驱动器作为这些阵列
的联机备用驱动器。
硬盘故障对逻辑驱动器的影响
驱动器发生故障时,将影响同一阵列中的所有逻辑驱动器。阵列中的每个逻辑驱动器可能使用不同的容错
方法,因此每个逻辑驱动器可能受到不同的影响。
• RAID 0 配置无法承受任何驱动器发生故障。如果阵列中的任意物理驱动器发生故障,则同一阵列中的
所有 RAID 0 逻辑驱动器也会发生故障。
• RAID 1 可承受一个驱动器发生故障。
• RAID 10 配置可承受多个驱动器发生故障,只要发生故障的驱动器不互为镜像即可。
• RAID 5 配置可以承受一个驱动器发生故障。
故障排除 129 • RAID 50 配置可以承受每个奇偶校验组中有一个驱动器发生故障。
• RAID 6 配置可以承受在给定时间内两个驱动器发生故障。
• RAID 60 配置可以承受每个奇偶校验组中有两个驱动器发生故障。
• RAID 1 (ADM) 和 RAID 10 (ADM) 配置可以承受多个驱动器发生故障,只要不超过两个互相镜像的驱
动器发生故障即可。
容错方法
当前存在多种容错方法。 Smart Array 控制器的最常用方法是基于硬件的 RAID 方法。
也可以使用替代的容错方法。但是,基于硬件的 RAID 方法所提供的容错环境更加稳定和受控,因此很少
使用这些备选方法。
RAID 0
RAID 0 配置提供数据条带化,但在驱动器发生故障时无法防止丢失数据。但是,在快速存储大量非重要数
据(例如,用于打印或图像编辑)或当成本是最重要的考虑因素时,这种方法很有用。所需的最小驱动器
数为一个。
此方法具有下列优势:
• 对于性能和低成本比数据保护更重要的情况来说,非常有用。
• 与所有其它 RAID 方法相比,具有最高的写性能。
• 在所有 RAID 方法中存储数据的单位成本最低。
• 驱动器的全部容量均用于存储数据(不分配任何容量用于容错)。
RAID 1 和 RAID 1+0 (RAID 10)
在 RAID 1 和 RAID 1+0 (RAID 10) 配置中,将数据复制到另一个驱动器。可用容量为 C x (n / 2) ,其中,
C 为驱动器容量, n 为阵列中的驱动器个数。最少需要两个驱动器。
130 故障排除 当阵列仅包含两个物理驱动器时,容错方法称为 RAID 1 。
当阵列具有两个以上物理驱动器时,驱动器按对进行镜像,而容错方法称为 RAID 1+0 或 RAID 10 。如果
某个物理驱动器发生故障,镜像对中的剩余驱动器仍可提供所有必要的数据。只要同一镜像对中发生故障
的驱动器不超过两个,阵列中多个驱动器发生故障就不会导致丢失数据。总驱动器数必须以 2 个驱动器为
增量递增。最少需要四个驱动器。
此方法具有下列优势:
• 当高性能和数据保护比可用容量更重要时,此方法很有效。
• 此方法的写性能在所有容错配置中最高。
• 只要故障驱动器并未镜像到另一个故障驱动器,则一个驱动器发生故障就不会丢失数据。
• 阵列中最多有一半的物理驱动器发生故障也仍可运转。
故障排除 131 RAID 1 (ADM) 和 RAID 10 (ADM)
在 RAID 1 (高级数据镜像 (ADM) )和 RAID 10 (ADM) 配置中,数据将复制到两个额外的驱动器。可用
容量为 C x (n / 3) ,其中, C 为驱动器容量, n 为阵列中的驱动器个数。最少需要 3 个驱动器。
当阵列仅包含三个物理驱动器时,容错方法称为 RAID 1 (ADM) 。
在阵列具有超过 6 个物理驱动器时,驱动器按三个一组进行镜像,并且容错方法称为 RAID 10 (ADM) 。如
果某个物理驱动器发生故障,三件镜像中剩余的两个驱动器仍可提供所有必要的数据。只要故障驱动器中
的任意三个不属于同一个三件镜像,阵列中多个驱动器发生故障就不会导致丢失数据。总驱动器数必须递
增 3 个驱动器。
此方法具有下列优势:
• 当高性能和数据保护比可用容量更重要时,非常有用。
• 得益于负载平衡,此方法的读取性能在所有配置中最高。
• 此方法的数据保护性能在所有配置中最高。
132 故障排除 • 只要任意两个故障驱动器并未镜像到另一个故障驱动器,则两个驱动器发生故障就不会丢失数据。
• 阵列中最多有三分之二的物理驱动器发生故障也仍可运转。
RAID 5
RAID 5 可利用奇偶校验保护数据(图中用 Px,y 表示)。通过对带区内每个驱动器中的数据进行求和
(XOR) 来计算奇偶校验数据。奇偶校验数据的条带均匀地分布在逻辑驱动器中的每个物理驱动器上。当某
个物理驱动器发生故障时,可根据阵列中其它驱动器上其余的奇偶校验数据和用户数据恢复故障驱动器上
原有的数据。可用容量为 C x (n - 1) ,其中, C 为驱动器容量, n 为阵列中的驱动器个数。最少需要使用
3 个驱动器。
此方法具有下列优势:
• 当可用容量、写性能和数据保护同等重要时,非常有用。
• 与其他任何容错配置相比,它具有最高的可用容量。
• 如果一个物理驱动器发生故障,不会丢失数据。
RAID 6
RAID 6 使用双重奇偶校验保护数据。 RAID 6 中使用两组不同的奇偶校验数据(在图中用 Px,y 和 Qx,y 表
示),使得在有两个驱动器发生故障时仍可保留数据。每组奇偶校验数据使用的容量与作为组成部分的驱
动器相同。可用容量为 C x (n - 2) ,其中, C 为驱动器容量, n 为阵列中的驱动器个数。
最少需要使用 4 个驱动器。
故障排除 133 当不能接受丢失数据但成本也是重要因素时,此方法最有用。与配置了 RAID 5 的阵列相比,配置了
RAID 6 (高级数据保护 (ADG) )的阵列丢失数据的可能性更小。
此方法具有下列优势:
• 当数据保护和可用容量比写性能更重要时,非常有用。
• 在任意两个驱动器发生故障时不会丢失数据。
RAID 50
RAID 50 是一种嵌套 RAID 方法,它将组成驱动器划分为一些完全相同的 RAID 5 逻辑驱动器组(奇偶校
验组)。可实现的最小 RAID 50 配置具有六个驱动器,划分为两个奇偶校验组,每组有三个驱动器。
对于任何给定数量的驱动器,在驱动器采用具有最大奇偶校验组数的配置时,丢失数据的可能性最小。例
如,四个奇偶校验组、每组三个驱动器要比三个奇偶校验组、每组四个驱动器更安全。但是,使用最大奇
偶校验组数时,阵列上存储的数据将变少。
134 故障排除 如果在第一个故障驱动器完成重建之前同一奇偶校验组中又有第二个驱动器发生故障,则会丢失所有数
据。与非嵌套 RAID 方法(如 RAID 5 )相比,将使用更大比例的阵列容量存储冗余或奇偶校验数据。最
少需要使用 6 个驱动器。
此方法具有下列优势:
• 性能高于 RAID 5 ,特别是写入时。
• 容错优于 RAID 0 或 RAID 5 。
• 只要发生故障的驱动器在不同的奇偶校验组中,最多可有 n 个物理驱动器发生故障(其中 n 是奇偶校
验组的数量)而不丢失数据。
RAID 60
RAID 60 是一种嵌套 RAID 方法,它将组成驱动器划分为一些完全相同的 RAID 6 逻辑驱动器组(奇偶校
验组)。可实现的最小 RAID 60 配置具有八个驱动器,划分为两个奇偶校验组,每组有四个驱动器。
对于任意给定数量的硬盘驱动器,将驱动器安排到奇偶校验组数尽可能最大的配置后,最不容易丢失数
据。例如,五个奇偶校验组、每组四个驱动器要比四个奇偶校验组、每组五个驱动器更安全。但是,使用
最大奇偶校验组数时,阵列上存储的数据将变少。
物理驱动器数必须可被奇偶校验组数除尽。因此,您可以指定的奇偶校验组数受物理驱动器数的限制。特
定数量的物理驱动器的最大奇偶校验组数为驱动器总数除以该 RAID 级别所需的最小驱动器数( RAID 50
为 3 , RAID 60 为 4 )。
最少需要使用 8 个驱动器。
如果在奇偶校验组中其它故障驱动器之一完成重建之前,该奇偶校验组中又有第三个驱动器发生故障,则
丢失所有数据。与非嵌套 RAID 方法相比,阵列容量中用于存储冗余或奇偶校验数据的百分比更大。
此方法具有下列优势:
• 性能高于 RAID 6 ,特别是写入时。
• 容错优于 RAID 0 、 5 、 50 或 6 。
• 只要同一奇偶校验组中发生故障的驱动器不超过两个,最多可有 2n 个物理驱动器发生故障(其中 n 是
奇偶校验组的数量)而不丢失数据。