RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种将多个物理硬盘组合成一个逻辑单元的技术,主要用于提高数据存储的可靠性、性能或两者兼有。RAID有不同的级别,每个级别都有不同的特点,常见的RAID级别包括:
RAID 0(条带化)、RAID 1(镜像)、RAID 5(分布式奇偶校验)、RAID 10(镜像+条带化)
在本次学习中,我们采用 n 块硬盘,每块硬盘故障率为 p ,我们假设每块硬盘容量为 a TB,单块硬盘速度为 v MB/s。
首先我们先来详细了解一下不同级别RAID的区别:
(1) RAID 0:条带化(Striping)
将数据分块,按顺序写入不同的磁盘,提供更高的读写速度,但没有数据冗余,任何一个硬盘损坏都会导致数据丢失。
(2) RAID 1:镜像(Mirroring)
将数据完全复制到另一块磁盘上,即每写入一份数据,会有一个完整的副本在另一个硬盘上,提供高数据冗余和安全性,但存储效率低(需要双倍的存储空间)。
(3) RAID 5:分布式奇偶校验(Distributed Parity)
将数据和校验信息分布在多个硬盘上,可以提供数据冗余,同时保留较高的存储效率。允许一块硬盘故障后数据仍能恢复。
(4) RAID 10(或RAID 1+0):镜像加条带化
结合了RAID 0和RAID 1的特点,提供了高性能和高冗余。数据先进行镜像(RAID 1),再进行条带化(RAID 0),适合需要高速度和高安全性的场景。
(1)计算不同级别的有效容量:
RAID 0:有效容量=硬盘数量*单块硬盘容量=n*aTB
RAID 1:有效容量=单块硬盘容量=aTB
RAID 5:有效容量=(硬盘数量-1)*单块硬盘容量=(n-1)*aTB
RAID 10:有效容量=(硬盘数量/2)*单块硬盘容量=(n/2)*aTB
(2)计算不同级别的速度(读取速度/写入速度):
RAID 0:
读取速度=硬盘数量*单块硬盘速度=n*v
写入速度=硬盘数量*单块硬盘速度=n*v
RAID 1:
读取速度=硬盘数量*单块硬盘速度=n*v
写入速度=单块硬盘速度=v
RAID 5:
读取速度=(硬盘数量-1)*单块硬盘速度=(n-1)*v
写入速度=单块硬盘速度=v
RAID 10:
读取速度=硬盘数量*单块硬盘速度=n*v
写入速度=(硬盘数量/2)*单块硬盘速度=(n/2)*v
(3)计算不同级别的可靠性(通过生存概率判断):
RAID 0:他不允许任何一块硬盘出问题,所以生存概率=(1-故障率)^硬盘数量=(1-p)^n
RAID 1:因为数据有备份,所以只要不是镜像数据和原始数据都出问题,就可以正常工作,因此生存概率=1-故障率^n=1-p^n
RAID 5:只要不是第二块硬盘在第一块发生故障修好之前发生故障,仍可正常工作,即可以容忍0或1块硬盘发生故障,
生存概率=没有硬盘故障概率+一块硬盘故障概率=(1-p)^n+n*p*(1-p)^(n-1)
一块硬盘故障概率详细计算公式如下:
RAID 10:只要保证镜像对中有一个硬盘可以正常工作,数据就不会丢失,所以生存概率=(1-镜像对中两块硬盘都故障的概率)^(硬盘数量/2)=(1-p^2)^(n/2)
一般情况下的可靠性排名:RAID 1>RAID 10>RAID 5>RAID 0