RAID 技术综述
RAID 是使用条带化技术跨越磁盘阵列组, 用来增强数据可用性的一种存储架构. 阵列的概念是在系统中实现对一组磁盘的单一设备管理. RAID有若干级别. 从RAID-1到RAID-5是最初由伯克利(Berkeley)RAID白皮书确定的. 后来, 由相继开发了RAID0和RAID6.
RAID级别
图 2-23到图2-26显示了最常用的RAID-0,1,3,5架构. 图2-28讨论了RAID-6.
奇偶校验(parity)是用来保存用户数据的冗余信息. 使磁盘失效时再生数据成为可能. 下面的阐述中数据(data)可以理解为一个字节(byte)或块(block), 而不必理解为一个完整的文件(file).
RAID 0
RAID-0并不是一个真正的RAID架构, 因为它没有实现数据奇偶校验. RAID-0把数据经过条带化均布在多个磁盘上, 允许并发读写操作. 所有RAID-0都将数据和工作负荷均布到阵列中的所有磁盘上, 从而提供了比没有采取条带化的磁盘更高的传输性能. 但同时, RAID-0不能提供冗余性. 如图2-23所示, 当发生单个磁盘失效时, 其上数据无法从其它磁盘重建. 而且由于数据被条带化, 阵列中所有数据随之不可用.
图 2-23 RAID 0 (举例: 4个条带)
注意: 绝不要用RAID-0来规划需要较高数据可用性的关键应用. 仅在应用需要RAID-0的高性能特性时使用它.
RAID 1
如图2-24所示, RAID-1 使用数据镜像实现数据冗余. 数据分别在2个磁盘上作一份拷贝. RAID-1可提供较高的读性能, 因为当主拷贝忙时, 读请求会指向镜像的拷贝.
由于数据完全重复, RAID-1是所有阵列架构中最昂贵的方案, 然而由于RAID-1阵列中包含的磁盘数量最少, 它也提供了最佳的数据可用性. 一个阵列中的磁盘越少, 多磁盘失效的可能性也就越低. 当磁盘失效时RAID-1也可提供最高的性能, 因为系统将直接自动切换到镜像的磁盘, 无性能影响, 也无须重建丢失的数据.
图2-24 RAID-1 – 镜像
注意: 当成本不是主要因素时, 考虑RAID-1作为高数据可用性和高性能的方案.
RAID 2
RAID-2支持均衡编码的并发访问和数据条带化. 在概念上, RAID-2和RAID-3十分相似. RAID-2和RAID-3都通过位(bit)级, 字节(byte)级, 或多字节(multibyte)级条带化将数据分布到多个磁盘上. 写数据和查询数据时对所有磁头做并发移动操作.
RAID-2使用均衡纠错编码技术来进行错误诊断和纠正. 这种编码技术需要多块磁盘来保存错误诊断和纠错信息, 从而使RAID-2奇偶校验的实现比RAID-3更加复杂和昂贵. 因此在商业应用环境中很少采用RAID-2架构.
RAID 3
RAID-3 支持并发访问和带奇偶校验的数据条带化. 与RAID-2不同, RAID-3使用一块制定的硬盘存储校验信息. 和RAID-2一样, RAID-3把数据条带化和分布到若干块磁盘上. 数据的写和查询并发地移动所有磁头.
图 2-25 显示了一个包含4个磁盘的阵列. 3个磁盘用来存储数据, 第4块磁盘用来存储前3块磁盘的校验信息. 如果其中一块磁盘的数据失效, 校验磁盘将用来和存有冗余数据的磁盘一起重建数据. 如果校验盘失效, 对数据的访仍然不受影响.
图2-25 RAID3 – 指定校验盘的条带化
由于一个I/O并发地移动所有磁头, 所以在任何一个瞬间只允许一个I/O操作. 由于数据是连续地条带化, 并跨越多个磁盘, 并发磁头移动提供了传输大数据块连续数据时的卓越性能. 但同时, 对于高吞吐量的随机访问数据的应用来说, RAID-3是不适用的. 当随机处理占主要地位时, 磁盘校验即成为写操作的瓶颈.
注意: 当应用主要处理大数据块或需要访问大量连续数据文件时可使用RAID-3
RAID 4
RAID-4支持独立的数据访问和数据条带化, 并指定校验盘. 和RAID-2, RAID-3一样, RAID-4和RAID-5都将数据跨越多块磁盘条带化. 但是条带的增量是一个数据块或一个记录. 在RAID-4设计中只有一个校验盘. 在所有其它方面, RAID-4和RAID-5相同.
由于在每个写操作时需要有校验盘参与, 它可能成为交易吞吐量的瓶颈. 因此RAID-4也不在商务应用中使用.
RAID 5
RAID-5支持独立的访问和数据条带化, 并且实现分布式奇偶校验. 它不需指定校验盘, 而是把数据和校验插入到所有磁盘中. 在RAID-5中, 磁头可以相互独立地移动(如图2-26所示). 这样允许多个并发的阵列设备访问. 它满足了多并发I/O请求, 并且提供了更高的交易吞吐量. RAID-5最适合于使用小数据块的随机数据访问.
图2-26 RAID-5 – 分布式校验的条带化
RAID-3和RAID-5的最主要的区别是: 在RAID-3中, 一个数据段大小等于一个扇区, 对于每块硬盘来说传送单位是一个扇区, 每个传送需要所有磁盘参与. 在RAID-5中, 数据段更大, 大多数传送只需要一块磁盘参与, 允许并行操作, 和更高的交易处理的吞吐量.
RAID-5中存在写仲裁. 每个写I/O引发4个实际的I/O操作, 2个用来读旧数据及奇偶校验信息, 2个用来写数据和奇偶校验信息.
减少写仲裁
减少RAID-5写仲裁的一条途径是使用缓存. 这样可以预先将数据存放于高速的临时空间, 以备磁盘I/O请求之需, 从而提高性能. 通过将存取过的数据暂留在缓存中, 对相同信息的读请求可以快速地从缓存中得到, 而不需要再增加额外的磁盘I/O操作, 从而减少磁盘I/O.
缓存可以用来聚集写请求, 直到一个大的连续的数据块可以在一个I/O操作中写到磁盘上. 在写操作过程中, 数据首先被写到缓存中, 使一个交易能够在发生真实的磁盘写操作前提前结束. 由于应用可以执行并发的真实物理I/O操作, 缓存可以减少与读写数据相关的延迟, 提高RAID-5的性能.
非易失性存储(Nonvolatile storage - NVS) 在电源失效时保持缓存中的数据. 在断电时, NVS切换到由备用电池供电. 而在常规使用中, NVS和普通缓存一样工作. 当向NVS完成一个写请求后, 应用程序可以继续其余步骤, 避免了延迟. 如果发生断电, 更新数据仍然安全地存放在NVS中, 直到数据被写入磁盘. NVS在所有的ESS型号和IBM TotalStorage FastT中实施, 仅低端FastT200除外. 图2-27显示了普通运行环境中的2节点系统. 子系统A(运行于SMP 1和NVS 2, 和子系统B(运行于SMP 2和NVS 1)实现全局数据一致性.
图2-27的右半边显示节点1和节点2的接管机制. 未失效节点首先承担对所有主机适配器(原有的主管权是共享的), 此节点的NVS, 和所有此系统中物理设备的主管权. 未失效节点随之释放(将修改的用户数据从缓存写到磁盘中)所有在它的读缓存和失效节点的本地NVS中的修改数据. 接下来, 此节点允许主机适配器识别其主管的所有虚拟磁盘. 最后, 此节点使用本地的NVS恢复数据操作.
图2-27 IBM TotalStorage 企业存储服务器 (Enterprise Storage System)
注意: 请在以下环境中考虑使用RAID-5方案:
l 需要高数据可用性, 并且应用数据存取类型为小数据记录.
l 大连续记录和小随机数据块的混合存取.
RAID 6
RAID-6引入了一种没有包含在原有的Berkeley RAID级别中的技术, 即独立访问, 数据条带化, 双份的分布式奇偶校验. 它相当于在原有RAID-5基础上增加了第二份独立的奇偶校验块. 图2-28显示了一个包含6块硬盘的RAID-6阵列. 4块磁盘用来存放数据, 2块硬盘用于奇偶校验, 数据和校验在阵列中交叉和轮换.
2个独立校验, 每个使用不同的运算法则, 使数据可用性达到极高的程度. 这个阵列中任意2块磁盘的同时失效都不会导致数据访问中断. 同时, 奇偶校验也需要更多的磁盘空间. 而比起RAID-5, 会引起更多的写仲裁负载. 因此, RAID-6的写性能非常低. 低性能和实施上的复杂性使RAID-6对于多数应用来说都是不切实际的.
图2-28 RAID-6 双份分布式校验的条带化
RAID 10
RAID-10阵列由一组镜像的磁盘存储用户数据. 没有校验盘用来重建失效磁盘上的数据. 如果一块硬盘失效, 则继续访问镜像的拷贝, 并可用其建立另一份冗余拷贝. 因为它是RAID-0(条带化)和RAID-1(镜像)的结合物, RAID-10又被称为RAID-0+1. 由于条带卷跨越了多块磁盘, 因此条带化优化了性能. 图2-29显示了一个例子, 在ESS-800的实施中, 3块或4块磁盘驱动器模块(DDM). RAID-1是通过将每块磁盘的镜像拷贝防止一块硬盘的失效. 由于 RAID-10结合了RAID-0和RAID-1技术, 即可保护数据, 又提高了I/O性能.
|
RAID 10 配置
l 此环路中第一个RAID-10阵列配置为3+3+2S. (S为冗余备份-spare盘)
l 此环路中另一种RAID-10阵列配置为4+4.
l 此例中所有硬盘容量一样.
l 如果一个环路中包含2种容量的硬盘, 那么每种容量需要2个冗余备份盘. 即每种容量都需3+3+2S阵列配置
|
|
图2-29 RAID-10
可以将RAID-10 和RAID-5结合起来配置在一个环路中. 如图2-30所示. 有多种途径在一个环路中配置混合的RAID-5和RAID-10阵列. 如果在一个环路中配置RAID-5和RAID-10, 需要遵循一些特定的原则以平衡两个磁盘控制器的性能.
图2-30 RAID-5和RAID-10混合
RAID 各级别的比较
图2-31显示了比较RAID和JBOD的方法. 在这里, JBOD和RAID-0是最便宜的磁盘方案, 但是没有磁盘保护. RAID-10具有高成本和高性能. 其它的RAID方案介于它们之间. 使用缓存的RAID-5是指智能的RAID-5子系统, 如ESS和FastT, 可以对读写进行缓存.
图2-31, 成本, 性能和可用性
表 2-1 比较了各级RAID:
表 2-1 RAID 级别的比较
|
|
RAID-0 |
RAID-1 |
RAID-3 |
RAID-5 |
RAID-10 |
|
使用的方法 |
磁盘条带化 |
磁盘级镜像 |
带校验的并发磁盘调度 |
独立磁盘访问 |
镜像 |
|
磁盘需求 |
N |
2N |
N+1 |
N+1 |
2N |
|
数据保护 |
无 |
很高 |
高 |
高 |
很高 |
|
数据速度 |
很高 |
对于读: 2倍于单磁盘. 对于写, 和单个磁盘相似. |
和单个磁盘相似 |
和单个磁盘相似 |
对于读: 2倍于单磁盘. 对于写, 和单个磁盘相似. |
|
性能 |
高 |
对于读, 高. 对于写, 中等 |
中等 |
中等(在对写敏感的时候, 可使用写仲裁) |
高 |
|
成本 |
低 |
高(最多2倍于RAID-0) |
中等 |
中等 |
高 |
RAID-5 与 AIX LVM 镜像的比较
当选择数据保护的策略时, 大多数用户把他们的选择限制在两种最为普遍的解决方案中: 由磁盘设备提供的RAID 5, 或者由AIX操作系统提供的LVM镜像. 这两种方案都提供了强壮和可靠的数据保护机制, 尽管它们在性能和成本方面的切入点有所不同.
AIX操作系统可以对磁盘建立卷组(VG), 一个VG可跨越多个物理卷(PV) – 即物理硬盘设备. 在VG中可建立多个逻辑卷(LV), 这些逻辑卷就跨越在VG所包含的多个物理硬盘上, 并实现条带化. 这实际上等同于RAID-0. 在逻辑卷之间可以建立镜像关系, 这实际上就实现了RAID0+1, 即RAID-10. 因此AIX的LVM镜像就相当于RAID-10. 而AIX LVM镜像与RAID-5的比较即为RAID-10和RAID-5的比较. 唯一不同的是AIX的LVM镜像不需要特殊的RAID磁盘阵列卡来实现, 也和磁盘阵列设备无关.
当我们对一个RAID 5 阵列的配置进行评估时, 需要考虑2个重要的事实: 阵列中磁盘的数量和使用此阵列的应用的读/写比例. 在RAID 5配置中, 交易性能(尤其对于读操作来说)是和阵列中使用的磁盘数量直接相关的. 随着阵列中磁盘数量的增加, 每秒完成的I/O操作数量也随之增加, 直到达到磁盘阵列卡的带宽极限. 这是因为读操作可以跨越阵列中多块磁盘实现并发访问.
评估RAID 5配置性能的另一个重要参考依据是: 应用的读写比例. 对于以写为主的应用来说, 如果没有利用快写缓存, 对RAID 5阵列的写操作将会引起性能的下降. 如果应用是以读为主, 间或少量的写操作, 没有快写缓存的RAID 5方案可以提供近似于镜像的性能, 使它适用于大型的磁盘阵列.
如果应用对I/O不敏感, 不使用快写缓存的RAID 5与镜像相比, 能够在大大节省成本的基础上提供可接受的性能. 例如, 在一个RAID 5环境中, 8块硬盘的阵列提供相当于7块硬盘的可用容量. 而镜像的环境则需要14块硬盘提供相当于7块硬盘的可用容量.