前言

内容来源:本文章为阅读OSTEP38.RAID所记录的笔记,文章链接:https://pages.cs.wisc.edu/~remzi/OSTEP/Chinese/38.pdf
本章重点介绍了廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),简称 RAID,这是一种利用多个磁盘来构建更大、更快、更可靠存储系统的技术。

RAID概述

设计目标:解决单个磁盘在速度(I/O慢)、容量(数据不断增长)和可靠性(磁盘故障)方面的限制。RAID通过并行使用多个磁盘来提高I/O性能,通过冗余来提高可靠性,并提供更大的容量。

透明性:对于上层的文件系统或操作系统来说,RAID看起来就像一个大的、单一的磁盘。这种透明性极大地提高了RAID的可部署性,允许用户无需修改现有软件即可用RAID替换单个磁盘。

内部结构:硬件RAID是一个复杂的专业计算机系统,用于管理一组磁盘,。它包括一个微控制器(运行固件)、DRAM 等易失性存储器(用于缓冲数据块)和非易失性存储器(用于安全地缓冲写入),甚至可能包含专用的逻辑电路来执行奇偶校验计算。

RAID评估与故障模型

评估维度

性能工作负载:吞吐量分析通常考虑两种类型的工作负载:顺序(sequential)和随机(random)。磁盘在顺序访问下的传输速率 (S MB/s) 通常远高于随机访问下的传输速率 (R MB/s)

故障模型: RAID 旨在从磁盘故障中恢复。本章假设最简单的故障—停止(fail-stop)模型,即磁盘要么处于工作状态,要么永久丢失,并且故障很容易被检测到。

主要RAID级别介绍

RAID 0:条带化

RAID 0 级通过在系统磁盘上轮转分布数据块来实现并行性,从而提高性能和容量,但不提供冗余,在所有 RAID 级别中,RAID-0 提供了最高的容量 (N) 和最好的性能,但可靠性最差。

image.png
如上图所示,这个例子中,每个磁盘上只有1个块(每个大小为4KB),也可以像下图一样,在每个磁盘上放置两个4KB块,此时,RAID阵列的大块大小为8KB,每个条带由4个大块(32KB)组成。
大块大小会影响阵列性能:

RAID 1:镜像

对于镜像系统,我们只需生成系统中每个块的多个副本。当然,每个副本应该放在一个单独的磁盘上。通过这样做,我们可以容许磁盘故障。
image.png
从镜像阵列读取块时,RAID有一个选择:它可以读取任一副本。例如,如果对RAID发出逻辑块5的读取,则可以自由地从磁盘2或磁盘3读取它。但是,在写入块时,不存在这样的选择:RAID 必须更新两个副本的数据,以保持可靠性。但请注意,这些写入可以并行进行。例如,对逻辑块5的写入可以同时在磁盘2和3上进行。

RAID 4:奇偶检验

RAID 4 为每一条数据(一个条带)添加一个额外的奇偶校验块,用于存储冗余信息,奇偶校验通常使用简单的异或(XOR)函数进行计算。在数据块中的每一位上执行按位 XOR 运算,并将结果放入奇偶校验块的相应位置。RAID 4 允许容忍 1 个磁盘故障。如果丢失了一个磁盘,RAID 可以通过读取该条带中所有其他块(包括奇偶校验块)并进行异或运算来重构(reconstruct)丢失的数据。
image.png

RAID5:旋转校验

为解决小写入问题(至少部分解决),推出了旋转奇偶校验,核心原理和RAID4相同,如下
image.png

RAID性能分析

顺序和随机工作负载会导致磁盘的性能特征差异很大,对于顺序访问,磁盘以高效的模式运行,花费很少的时间寻道并等待旋转,大部分时间在传输数据;对于随机访问则恰恰相反,大部分时间花在寻道和等待旋转上。我们在下面的性能分析中,假设磁盘可以在连续工作负载下以S MB/s传输数据,并且在随机工作负载下以R MB/s传输数据

RAID 0

条带化的性能通常很好,从延迟角度来看,单块请求的延迟应该与单个磁盘的延迟几乎相同,从稳态吞吐量的角度来看,我们期望获得系统的全部带宽。因此吞吐量等于N(磁盘数量)乘以S(单个磁盘的顺序带宽)。对于大量随机的I/O,我们可以再次使用所有磁盘,从而获得N×R MB/s

RAID 1

从容量的角度来看,RAID-1价格昂贵。在镜像级别=2的情况下,我们只能获得峰值有用容量的一半。因此,对于N个磁盘,镜像的有用容量为N/2
从可靠性的角度来看,RAID 1可以容许任何一个磁盘的故障,比如在表38.3中,磁盘0和磁盘2都故障了,但没有数据丢失,更一般地说RAID 1最多可以容许N/2个磁盘故障,不过这取决于哪些磁盘故障,故存在一些不确定性,因此,镜像对于处于单个故障来说才是比较好的
最后分析性能:

RAID 4

从容量的角度来看,RAID-4 使用1个磁盘作为它所保 护的每组磁盘的奇偶校验信息。因此,RAID组的有用容量是(N−1)。可靠性也很容易理解:RAID-4容许1个磁盘故障,不容许更多。如果丢失多个磁盘,则无法重建丢失的数据。
最后分析性能:

RAID 5

RAID-5 的大部分分析与 RAID-4 相同。例如,两级的有效容量和容错能力是相同的。 顺序读写性能也是如此。单个请求(无论是读还是写)的延迟也与 RAID-4 相同。
RAID-5 的随机写入性能明显提高,因为它允许跨请求进行并行处理。想象一下写入块 1 和写入块 10。这将变成对磁盘1和磁盘4(对于块1及其奇偶校验)的请求以及对磁盘0和磁盘2(对于块10及其奇偶校验)的请求。因此,它们可以并行进行。事实上,我们通常可以假设,如果有大量的随机请求,我们将能够保持所有磁盘均匀忙碌。如果是这样的话,那么我们用于小写 入的总带宽将是 N×R/4 MB/S

RAID总结

image.png
如果对可靠性零要求,仅追求极致速度RAID 0
如果需要可靠性且看重随机 I/O 性能(尤其是读取),但容量预算充足RAID 1
如果容量和可靠性是主要目标,且可接受小写入性能损失RAID 5