RAID_0">RAID是什么?
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种将多个磁盘驱动器组合成一个逻辑单元的数据存储虚拟化技术。
RAID的主要目的是提高数据的可靠性、容错能力和性能。通过在多个硬盘之间分散数据,RAID可以在一块或多块硬盘发生故障时保护数据不丢失,并且可以通过并行操作提高数据访问速度。
磁盘阵列还能利用同位检查(Parity Check)的观念,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。
RAID_15">常见RAID级别
RAID_0_16">1.RAID 0(条带化):
图源于网络技术联盟站
数据被分割成多个部分(条带),然后分散存储在两个或多个硬盘上。
优点是提高了数据的读写速度,因为多个硬盘可以并行工作。
缺点是没有冗余,任何一个硬盘的故障都会导致整个阵列中的数据丢失。
RAID_1_25">2.RAID 1(镜像):
图源于网络技术联盟站
数据在两个硬盘上存储两份,即每次写操作都会写到两个硬盘上。
优点是提供了高数据冗余,任何一个硬盘的故障都不会导致数据丢失。
缺点是存储效率低,只有50%的存储空间被使用,且写入速度较慢。
RAID_5_33">3.RAID 5(带奇偶校验的条带化):
图源于网络技术联盟站
RAID 5的可用空间等于硬盘总数减去1。这是因为一个硬盘的容量被用来存储奇偶校验信息。
数据和奇偶校验信息被分散存储在三个或更多的硬盘上。
优点是提供了冗余和较好的读写性能。
缺点是写入操作较慢,因为需要计算奇偶校验信息。
RAID_6_42">4.RAID 6(双奇偶校验):
类似于RAID 5,但是有两个奇偶校验块,可以容忍两块硬盘同时故障。
图源于网络技术联盟站
RAID_10RAID_10_47">5.RAID 10(或称RAID 1+0):
图源于网络技术联盟站
结合了RAID 1和RAID 0的特点,先进行镜像再进行条带化。
优点是提供了高冗余和高性能。
缺点是成本较高,因为需要至少四块硬盘。
RAID_50RAID_50_55">6.RAID 50(或称RAID 5+0):
图源于网络技术联盟站
结合了RAID 5和RAID 0的特点,先进行条带化再进行奇偶校验。
优点是提高了性能,尤其是在大量硬盘的情况下。
缺点是写入性能仍然受到奇偶校验计算的限制。
RAID5_67">常用之RAID5
RAID_5_68">RAID 5奇偶校验块分布
RAID 5 中根据奇偶校验块分布可以将RAID5又分成几类。
RAID5_72">一个案例:RAID5写命令分解过程(大写)
假如有如上的RAID5阵列,块大小2KB,我们要写数据长度16k,起始地址为0。
则要写的有效数据为图中的0~7块。
对0号盘来说:
顺序写出0,3,6块,可以合并为一个读命令,数据长度为6k。
为什么不用写0号盘上的P?因为我们只更新了前三行,0号盘上的P是第四行的校验和,不用更新。
对1号盘来说:
1.计算校验P
2.写数据和校验命令(合并为1条命令)
注意,计算1号盘的P是需要读8号块的旧数据的(大写) 所以1号盘还需要等待3号盘先读8号块的旧数据
对2号盘来说:
1.计算校验P
2.写数据和校验命令(合并为1条命令)
2号盘没有什么特殊的
对3号盘来说:
1.读旧的数据命令
2.计算校验命令
3.写数据和校验(合并为1命令)
3号盘读的8号块的旧数据,这是为了1号盘第三行P的更新。
RAID5_99">另一个案例:RAID5写命令分解过程(小写)
写命令:0x0a,数据长度38k,起始地址为0,则要写的有效数据为图中的0~18块。
小写过程
1.读第18号块的旧数据
2.读图中红色的旧校验数据
3.计算校验:P= D18old⊕ D18 ⊕ Pold
4.写入新的数据D18和新的校验P
本文内容参考百度百科、网络技术联盟站、一得同学等