文章目录
RAID 是什么
RAID 是冗余磁盘阵列结构,可以简单地理解成很多块 disk 协同工作来达到存储数据并能在根据不同的 RAID 模式对数据的安全性和可靠性进行保证。针对的主要是为了 Fault Tolerance (容错)
RAID 性能的衡量指标是什么
P:一段时间内一个磁盘发生错误的概率
假设磁盘 A A A 在 t t t 时段内发生故障的概率为 P ( A ) P(A) P(A),
假设磁盘 B B B 在 t t t 时段内发生故障的概率为 P ( B ) P(B) P(B),
那么 A , B A, B A,B 同时发生错误的概率为 P ( A ∩ B ) = P ( A ) × P ( B ) P(A∩B) = P(A) × P(B) P(A∩B)=P(A)×P(B),
A , B A, B A,B 有一个发生的概率为 P ( A ) + P ( B ) − P ( A ∩ B ) ≈ P ( A ) + P ( B ) P(A) + P(B) - P(A∩B)≈P(A) + P(B) P(A)+P(B)−P(A∩B)≈P(A)+P(B)
MTTF:平均错误发生时间(Mean time to Failure)
- 假设 A A A 在一年中发生错误的概率为 P ( A ) = 0.2 P(A)=0.2 P(A)=0.2 那么就可以看做 M T T F ( A ) = 1 P ( A ) ∗ 一 年 = 5 年 MTTF(A)=\frac{1}{P(A)}*一年=5年 MTTF(A)=P(A)1∗一年=5年,
- 因为一年发生错误的概率为 P ( A ) = 0.2 P(A)=0.2 P(A)=0.2,可以粗暴的理解 5 年发生的概率就是 100%
- 同样的,如果有两个硬盘 A , B A, B A,B 他们存了同一份数据,那么他们同时出错的概率就是 P ( A ∩ B ) = P ( A ) × P ( B ) = 0.04 P(A∩B) = P(A) × P(B)=0.04 P(A∩B)=P(A)×P(B)=0.04,而他们的 M T T F ( A ∩ B ) = M T T F ( A ) = 1 P ( A ∩ B ) ∗ 一 年 = 25 年 MTTF(A∩B)= MTTF(A)=\frac{1}{P(A∩B)}*一年=25年 MTTF(A∩B)=MTTF(A)=P(A∩B)1∗一年=25年
- 因为用 A , B A,B A,B 同时备份一份数据,只有两个磁盘同时坏掉数据才会丢失,因此, M T T F MTTF MTTF 得到了大幅度的提升。
- 下面的 R A I D 1 RAID1 RAID1 就是这种模式
RAID 有哪些,分别有啥作用
RAID0, RAID1,… RAID6
RAID 0
-
我们在往磁盘上存数据的时候,假设以块(block) 作为基本的存储单位。 A 0 , A 1 , . . . , A 7 A_0,A_1,...,A_7 A0,A1,...,A7 分别表示一段连续的数据。
-
RAID 0 具有 极高的读写速度。因为他可以把 A 0 , A 1 , . . . , A 7 A_0,A_1,...,A_7 A0,A1,...,A7 这段连续的数据拆分然后并发地存入两个磁盘
-
但是要注意,两块磁盘任意一块损坏了,其他一块磁盘的数据将毫无意义。所以错误发生的概率也提高两倍。因此 MTTF (发生失效行为的间隔时间)会折半。
RAID 1
- 采用镜像的方式将两块磁盘一块放数据,一块放镜像,因此最少要两块磁盘,任意一块坏掉,另外一块用来完全恢复数据。
- 读吞吐量高,写吞吐量低,因为跟一块磁盘没区别
- 只能存一块磁盘的数据量
- 但是可靠性大幅增加, M T T F MTTF MTTF 时间为一块磁盘的平方 M T T F 2 MTTF^2 MTTF2
RAID 2
- 以比特为单位进行磁盘的读写操作,机制类似于 RAID 0
- 极少使用这种 RAID 2 模式
- MTTF 仅为 RAID 0 的 1/2
RAID 3
- 类似 RAID 2, 区别是采用 Byte 作为数据读写的基本单位
- 至少需要三块磁盘,两块放数据一块放校验码
- 采用校验盘,Disk3 作为校验盘,只要校验盘不坏,数据就可以恢复
- 但存数据的时候需要实时校验,因此 DISK3 一直高负荷运转导致校验盘容易损坏
- 因此 P ( A ) = P ( B = P ( C ) = p P(A)=P(B=P(C)=p P(A)=P(B=P(C)=p 错误概率相等的情况下,只有同时损坏两块盘才会导致错误,因此 p 2 p^2 p2 是同时毁两块盘的概率,而有三种情况可以发生,即 A,B ; A,C; B,C 因此 P ( f a i l u r e ) = C 3 2 ∗ p 2 = 3 p 2 P(failure)=C_3^2*p^2=3p^2 P(failure)=C32∗p2=3p2,
- M T T F = 1 3 ∗ 1 p 2 MTTF=\frac{1}{3}*\frac{1}{p^2} MTTF=31∗p21
RAID 4
- 类似于 RAID 2, RAID 3
- 采用的是 block 级别的数据读写
- 提供了高吞吐量但是很低的 write 速度
- 相比 RAID 3 ,如过损坏的不是校验盘,那么 RAID4 的恢复概率略低于 RAID 3
- 如果校验盘损坏,RAID3 和 RAID 4 都无法恢复
RAID 5
- RAID 5 和 RAID 3 相似,但不同是, RAID 5 把校验数据平均放在各个盘里,每个硬盘都有校验数据
- 如果一个盘损坏,其他盘中的信息 + 校验信息就能够恢复原始状态,避免 RAID 3 那种情况:校验盘挂掉,整个系统崩掉
- RAID 5 的读取速度接近 RAID 0 但写入速度不及 RAID 0
- RAID 5 的安全性能比 RAID 0 高很多,因此广泛应用
RAID 6
- RAID 6 采取两个盘作为校验盘
- RAID 6 的安全性能非常高
- 从图中可以看出 P 0 , P 1 P_0, P_1 P0,P1 负责数据 A 0 , A 1 , A 2 A_0, A_1, A_2 A0,A1,A2 的校验工作,而且他们采用两种不同的校验算法,任意损坏两块硬盘都能实现完全恢复
- 安全性比 RAID 5 还要高,但校验数据量也翻倍
- RAID 6 的校验算法运算量也远大于 RAID 5,因此写入和读取都慢于 RAID 5
- 可靠性相当于 M T T F 3 / 10 MTTF^3 / 10 MTTF3/10
- 因为同时坏三快盘才能使数据无法恢复,因此 P ( f a i l u r e ) = C 5 3 p 3 = 10 ∗ p 3 P(failure)=C_5^3p^3=10*p^3 P(failure)=C53p3=10∗p3,因此 R e l i a b i l i t y = 1 P ( f a i l u r e ) = 1 10 ∗ p 3 = 1 10 ∗ M T T F 3 Reliability=\frac{1}{P(failure)}=\frac{1}{10*p^3}=\frac{1}{10}*MTTF^3 Reliability=P(failure)1=10∗p31=101∗MTTF3