本章提供有关 Solaris Volume Manager 的 RAID-5 卷的概念性信息。有关执行相关任务的信息,请参见第 15 章,RAID-5 卷(任务)。
本章包含以下主题:
RAID 级别 5 类似于条带化,但其奇偶校验数据分布于所有组件(磁盘或逻辑卷)中。如果某个组件出现故障,则可以根据其他组件上分布的数据和奇偶校验信息来重新生成该组件上的数据。在 Solaris Volume Manager 中,RAID-5 卷是支持 RAID 级别 5 的卷。
RAID-5 卷使用相当于卷中的一个组件的存储容量来存储冗余信息(奇偶校验)。此奇偶校验信息包含有关在 RAID-5 卷的其余组件上所存储用户数据的信息。也就是说,如果您有三个组件,则相当于有一个组件的存储容量将用于存储奇偶校验信息。如果您有五个组件,则其中仍有相当于一个组件的存储容量将用于存储奇偶校验信息。奇偶校验信息分布于卷的所有组件中。与镜像类似,RAID-5 卷也可以增强数据可用性,而且所需的硬件成本最低,对写操作性能的影响也是可接受的。但是,您不能对根 (/)、/usr 和 swap 文件系统使用 RAID-5 卷,也不能对其他现有文件系统使用 RAID-5 卷。
替换现有组件时,Solaris Volume Manager 会自动对 RAID-5 卷进行重新同步。如果出现系统故障或崩溃,Solaris Volume Manager 也会在重新引导期间重新同步 RAID-5 卷。
图 14–1 说明了包含四个磁盘(组件)的 RAID-5 卷。
前三个数据段将写入到组件 A(交错 1)、组件 B(交错 2)和组件 C(交错 3)中。接下来写入的数据段为奇偶校验段。此奇偶校验段将写入组件 D (P 1–3) 中。此段包含前三个数据段的异或结果。接下来的三个数据段将写入组件 A(交错 4)、组件 B(交错 5)和组件 D(交错 6)中。然后,另一个奇偶校验段写入组件 C (P 4–6) 中。
数据段和奇偶校验段的这种写入模式将使数据和奇偶校验分布在 RAID-5 卷的所有磁盘中。可以分别读取每个磁盘。奇偶校验可以防止出现单个磁盘故障。如果本示例中的每一张磁盘容量都为 2 GB,则 RAID-5 卷的总容量将为 6 GB。相当于一个磁盘的空间将被分配给奇偶校验。
下图显示最初包含四张磁盘(组件)的 RAID-5 卷的示例。为扩展 RAID-5 卷,已将第五张磁盘与该磁盘动态串联。
创建初始的 RAID-5 卷时会分配奇偶校验区域。尽管实际的奇偶校验块分布于用于分布 I/O 的所有原始组件中,但系统会为奇偶校验分配相当于一个组件的空间。将其他组件与 RAID-5 卷串联时,新增的空间将全部用于存储数据,不会分配任何新的奇偶校验块。但是,串联组件上的数据包括在奇偶校验计算中,因此可以保护数据不受单个设备故障的影响。
串联的 RAID-5 卷不适合长期使用。在重新配置更大 RAID-5 卷之前,可以使用串联的 RAID-5 卷。然后,将数据复制到更大的卷中。
将新的组件添加到 RAID-5 卷时,Solaris Volume Manager 会将该组件中的所有块都设为“零”。此过程确保奇偶校验能保护新数据。数据写入到新增的空间时,Solaris Volume Manager 会将这些数据包括在奇偶校验计算中。
使用 RAID-5 卷时,请考虑RAID-5 卷的要求和RAID-5 卷指南。许多条带化原则也适用于 RAID-5 卷配置。请参见RAID-0 卷要求。
RAID-5 卷必须至少包含三个组件。不过,RAID-5 卷包含的组件越多,组件出现故障时读写操作所用的时间就越长。
不能对 RAID-5 卷执行条带化、串联或镜像操作。
请勿使用包含现有文件系统的组件来创建 RAID-5 卷。这样做将使数据在 RAID-5 初始化过程被清除。
创建 RAID-5 卷时,可以定义交错值。如果未指定交错值,则该值缺省为 16 KB。该值对于大多数应用程序都是合理的。
RAID-5 卷(不含热备件)只能处理单个组件故障。
创建 RAID-5 卷时,请使用分布于不同控制器的组件。与磁盘相比,控制器及其关联电缆出现故障的频率往往会更频繁。
请使用大小相同的组件。使用大小不同的组件创建 RAID-5 卷会导致磁盘空间无法使用。
由于奇偶校验计算的复杂性,写入容量超过 20% 的卷可能不应作为 RAID-5 卷。如果需要在包含大量写入内容的卷上具备数据冗余,可考虑镜像。
如果 RAID-5 卷中的不同组件驻留在不同的控制器上,而且对该卷的访问主要是大型连续访问,则将交错值设置为 32 KB 可能会提高性能。
可通过将其他组件与 RAID-5 卷串联起来扩展该卷。将新的组件与现有 RAID-5 卷串联可能会降低卷的总体性能,因为串联的数据是连续的。未跨越所有组件对数据进行条带化。卷的原始组件将跨越所有组件对数据和奇偶校验进行条带化。串联组件中没有这种条带化。但是,由于在组件 I/O 期间使用奇偶校验,因此出现错误后仍可恢复数据。产生的 RAID-5 卷将继续处理单个组件故障。
此外,串联组件的不同之处还在于它们不会对任何区域进行奇偶校验条带化。因此,组件的全部内容都可用于数据。
串联组件时,大型或连续写入操作的任何性能增强都将丧失。
您可以创建 RAID-5 卷,而不必将数据块都“设置为零”。为此,请执行以下操作之一:
使用带有 -k 选项的 metainit 命令。-k 选项将重新创建 RAID-5 卷,而不对其进行初始化,而且会将磁盘块设置为“Okay(正常)”状态。该选项可能很危险,因为卷内的磁盘块上存在的任何错误都将导致 Solaris Volume Manager 中出现不可预测的行为,包括伪造数据的可能性。
请初始化设备并从磁带中恢复数据。有关更多信息,请参见 metainit(1M) 手册页。
通过查看 RAID-5 卷状态和卷的片状态,可以检查这些卷的状态。排除 RAID-5 卷错误时,片状态可提供最具体的信息。RAID-5 卷状态仅提供常规状态信息,如“Okay(正常)”或“Maintenance(维护)”。
如果 RAID-5 卷状态报告“Maintenance(维护)”状态,请参阅片状态。片状态具体报告片是处于“Maintenance(维护)”状态,还是处于“Last Erred(最近出错)”状态。根据片处于“Maintenance(维护)”状态还是处于“Last Erred(最近出错)”状态,可以执行不同的恢复操作。如果只具有处于“Maintenance(维护)”状态的片,则可以对片进行修复,而不会丢失数据。如果同时即有处于“Maintenance(维护)”状态的片,又有处于“Last Erred(最近出错)”状态的片,则数据可能已被损坏。必须首先修复处于“Maintenance(维护)”状态的片,然后再修复处于“Last Erred(最近出错)”状态的片。
下表说明了 RAID-5 卷状态。
表 14–1 RAID-5 卷状态
状态 |
含义 |
---|---|
正在初始化 |
片正在将所有的磁盘块都设置为零。由于 RAID-5 卷的性质与数据和奇偶校验交错分组相关,因此该过程是必需的。 状态更改为“Okay(正常)”后,初始化过程即完成,并且您可以打开设备。在此之前,应用程序会一直收到错误消息。 |
正常 |
设备可供使用且当前没有错误。 |
维护 |
由于 I/O 或打开错误,已将片标记为有故障。这些错误会在读取或写入操作期间遇到。 |
下表说明了 RAID-5 卷的片状态以及可能执行的操作。
表 14–2 RAID-5 片状态
状态 |
含义 |
操作 |
---|---|---|
正在初始化 |
片正在将所有的磁盘块都设置为零。由于 RAID-5 卷的性质与数据和奇偶校验交错分组相关,因此该过程是必需的。 |
正常,无如果在此过程期间出现 I/O 错误,则设备将进入“Maintenance(维护)”状态。如果初始化失败,则卷处于“Initialization Failed(初始化失败)”状态,而片处于“Maintenance(维护)”状态。如果发生这种情况,请清除卷并重新创建该卷。 |
正常 |
设备可供使用且当前没有错误。 |
无。可以添加或替换片(如有必要)。 |
正在重新同步 |
正在以活动方式重新同步片。出现错误但已更正,已启用片,或已添加片。 |
如果需要,请监视 RAID-5 卷状态,直到重新同步完成为止。 |
维护 |
由于 I/O 或打开错误,已将单个片标记为有故障。这些错误会在读取或写入操作期间遇到。 |
启用或替换出现故障的片。请参见如何在 RAID-5 卷中启用组件或如何在 RAID-5 卷中替换组件。metastat 命令将显示 invoke 恢复消息,其中包含要使用 metareplace 命令执行的相应操作。 |
维护/最近出错 |
多个片遇到了错误。出现故障的片的状态为“Maintenance(维护)”或“Last Erred(最近出错)”。在这种情况下,不会对处于“Maintenance(维护)”状态的片尝试 I/O。但是,会对标记为“Last Erred(最近出错)”的片尝试 I/O,结果将影响 I/O 请求的总体状态。 |
请启用或替换出现故障的片。请参见如何在 RAID-5 卷中启用组件或如何在 RAID-5 卷中替换组件。metastat 命令将显示 invoke 恢复消息,其中包含要使用 metareplace 命令执行的相应操作。此命令必须使用 -f 标志来运行。此状态表明由于存在多个有故障的片,因此可能会伪造数据。 |
Solaris Volume Manager 能够替换和启用镜像及 RAID-5 卷中的组件。对于镜像和 RAID-5 卷,执行此操作的问题和要求是相同的。有关更多信息,请参见在 RAID-1 和 RAID-5 卷中替换和启用组件的概述。
RAID-5 卷允许具有冗余存储,而不会带来 RAID-1 卷的额外开销费用(RAID-1 卷需要具备总存储空间的两倍容量才能提供数据冗余)。通过设置 RAID-5 卷,可以提供比使用同一组磁盘组件上的 RAID-1 卷实现的冗余存储容量更大的冗余存储。此外,借助热备件的帮助(请参见第 16 章,热备用池(概述),特别是热备件的工作原理),可以实现几乎相同的安全级别。缺点是增加了写入时间,且在组件出现故障时明显降低了性能。但是,上述优缺点的折衷可能对于许多情况无关紧要。以下示例(利用第 5 章,配置和使用 Solaris Volume Manager(方案)中说明的样例方案)介绍了 RAID-5 卷如何提供额外的存储容量。
RAID-0 和 RAID-1 卷的其他方案使用分布于 2 个控制器上的 6 张磁盘上的 6 个片(c1t1d0、c1t2d0、c1t3d0、c2t1d0、c2t2d0、c2t3d0)来提供 27 GB 的冗余存储。通过使用 RAID-5 配置中的相同的片,可以实现 45 GB 的存储。此外,该配置可以经受单个组件故障,而不会丢失数据或中断访问。通过向该配置中添加热备件,RAID-5 卷可以经受其他的组件故障。此方法的最明显的缺点是控制器故障会导致该 RAID-5 卷上的数据丢失,而方案-RAID-1 卷(镜像)中介绍的 RAID-1 卷不会出现这种情况。