第十一课 冗余磁盘阵列

RAID有哪几种?有什么区别? - 知乎
各种 RAID 详解

  • RAID3是如何找到错误并纠错的?
  • RAID50 的容量利用率为什么比RAID5 高
  • 关于RAID 2的思考题

在已知坏了哪2块盘的情况下,RAID 2是否能够重构数据?

image.png
image.png

  • RAID10:结合RAID0 和RAID1
  • 大IO 小IO:大小描述数据量的多少

RAID 0

按条带的顺序而不是磁盘的顺序存储数据。从条带0、条带1……进行存储,而不是存完磁盘1后再存磁盘2
image.png
image.png
image.png
与单个大容器磁盘相比:

  • 高数据传输率:多个硬盘可以同时提供读写操作(每个硬盘都有缓存,提高传输速率)针对大的数据块
  • 高速响应I/O请求:两个I/O请求所需要的数据块可能在不同的磁盘上 针对的是小的IO块

缺点:数据可靠性比单盘低。因为只要有一个磁盘出错了,整个RIAD0就无法正常工作

RAID 1

读取速度是单盘的两倍 — 因为可以同时使用两个条带
写入速度受限于两个条带中更慢的磁盘。

  • 优点
  1. 高速响应IO请求:即便是同一个磁盘上的数据块,也可以由两组硬盘(原装+备份)分别响应
  2. 读请求可以由包含请求数据的两个对应磁盘中的某一个提供服务,可以选择寻道时间较小的那个(选择磁头位置离目标位置更近的)
  3. 写请求需要更新两个对应的条带:可以并行完成,但受限于写入较慢的磁盘
  4. 单个磁盘损坏时不会影响数据访问,恢复受损磁盘简单
  5. 小IO请求可以由两组硬盘响应,所以读取速度是单盘两倍。大IO请求可能设计到同一磁盘的多个条带,所以比单盘块,但是没有涉及到两倍的速度
  • 缺点:价格昂贵,有一半的磁盘用于存放冗余数据
  • 用途
  1. 只限于用在存储系统软件、数据和其他关键文件的驱动器中
  • 与RAIDO相比
  1. 如果有大批的读请求,则RAID 1能实现高速的IO速率,性能可以达到RAID 0(如果两个条带都在一个单盘上时,只能和普通单盘一样去响应)的两倍
  2. 如果IO请求有相当大的部分是写请求,则它不比RAID 0的性能好多少
  • 采用了数据条带
  • 采用简单地备份所有数据的方法来实现冗余

image.png
image.png

RAID10 和 RAID01比较

  1. RAID10比RAID01安全性要好
  2. RAID1的特性是同一组的磁盘互为镜像,其中一个损坏时,同组的另一个会代替损坏的继续提供服务
  3. RAID0没有冗余功能,任何一个磁盘的损坏就会导致的数据不可用。
  4. RAID01可以当做普通的RAID1

image.png
因此,对于RAID 01

  • 如果Disk0坏了,Disk1是不能正常工作的 – 是不能配合Disk2工作的
  • 如果Disk3坏了,Disk2也是不能正常工作的

对于RAID 10

  • 如果Disk0坏了,同组的Disk1仍然可以正常工作 – 可以配合Disk2工作
  • 如果Disk3坏了,同组的Disk2也是可以正常工作的

小结

  1. RAID0解决的是条带化的问题。多个磁盘,不是独立的应用,而是条带化,一起使用
  2. RAID1解决的是冗余的问题,通过直接的简单备份,提高数据的可用性、容错能力
  3. RAID10和RAID01的搭配问题

RAID2

并行存取的特点:

  1. 各个驱动器的轴同步旋转
  2. 采用非常小的数据条带

并行存取的目标:所有磁盘都参与每个io请求(不论大小)。
条带很小:写入时才能让所有磁盘都能调用。因为一个条带必须用满了才能使用下一个条带,所以条带需要很容易被填满。从而使得所有磁盘都参与进去。
image.png

  • 利用海明码校验,根据公式[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDhcFnjW-1677462801440)(null#card=math&code=2^k >= n+ k+ 1&id=EnXXf)]
  • 在写入时,RAID 2在写入数据位同时还要计算出它们的汉明码并写入校验阵列,读取时也要对数据即时地进行校验,最后再发向系统。
  • 海明码只能对一个位的出错进行定位和纠错,所以RAID 2也只能允许一个硬盘出问题,如果两个或以上的硬盘出问题,RAID 2的数据就将受到破坏
  • RAID0的条带是KB级,RAID2的条带是字节级。同样很小的IO请求,RAID0只需要一个盘,RAID2需要4个数据盘

image.png

  • 单个磁盘本身具有校验位

磁盘数量:n+m,m个磁盘用来存储校验位

RAID3

image.png
RAID 3 是把数据分成多个“位元组”,按照 一定的容错算法,连续存放在N+1个磁盘上,N个磁盘存数据,第N+1个磁盘上存储校验容错信息,当这N+1个磁盘中的一个磁盘出现故障时,依据其它N个硬盘中的数据,可以恢复完整的原始数据,这样,仅使用这N个硬盘也可以带伤继续工作(如采集和回放素材),当更换一个新硬盘后,系统可以重新恢复。
奇偶校验码只能发现有错,不能发现谁出错了。在RAID中,是为了防止磁盘坏了,而不是数据出错。磁盘坏了,能够清楚的明确是哪一个磁盘出错了,而数据出错则无法发现。在RAID中的冗余,是为了防止磁盘损坏
image.png
image.png

  • 奇偶校验码码距是2,只具有检错的能力,不具有纠错的能力,不能纠错是因为不知道哪一位数据出错了
  • 磁盘损坏是已知的,所以通过奇偶校验可以知道是哪一个出错了

RAID 3 使用字节级别的条带化技术,并采用专用的奇偶校验磁盘。RAID 3 阵列能在一个磁盘出现故障的情况下确保数据不丢失。如果一个物理磁盘出现故障,该磁盘上的数据可以重建到更换磁盘上。如果数据尚未重建到更换驱动器上,而此时又有一个磁盘出现故障,那么阵列中的所有数据都将丢失。

RAID4

image.png
image.png

  • 不需要向RAID3一样所有盘都同步传动
  • 瓶颈:写入四个盘时,都会争夺同一个校验盘(校验盘指的是一整个磁盘,因为磁盘本身是同步转动的),因此会产生瓶颈。无法实现写操作的独立
  • 两次读写:当写入一位数据时,因为需要同步修改校验码,所以需要修改校验码。同时,由于不知道其他盘的数据,因此需要知道该盘之前的数据以及之前的校验码,所以需要写两次和读两次。读两次:读旧的数据和旧的校验码,写两次:写新的数据和新的校验码

对于小IO请求,也需要使用奇偶校验码,看上去使用了4位,4个任务都会争夺同一个校验码。对于RAID3,因为读写同步,所以b1 b2 b3都是已知的,但是对于RAID4,写入B0时,其他的都是未知的,需要读出B1 B2 B3。所以,写入之前,先把P(B) B0都先读出来。每一次写操作,实际上都要写两次,读两次
image.png

RAID5

  1. RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,**区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。**对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。
  2. RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。

image.png

  • 没有单独的校验盘,没有单独的数据盘
  • 避免RAID4中集中访问同一个校验盘的现象
  • 修改时还是会涉及到两读两写
  • 在写操作时,一个平面的块都会受到影响,无法写入,但是相比RAID 4,不会对一整个磁盘造成影响。例如块0和块9,在不同平面,在RAID5中不会有冲突,但是在RAID 4中就会造成冲突

RAID 50

RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬盘,因此要以多组RAID 5构成RAID 50,至少需要6颗硬盘。以RAID 50最小的6颗硬盘配置为例,先把6颗硬盘分为2组,每组3颗构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。
RAID 50在底层的任一组或多组RAID 5中出现1颗硬盘损坏时,仍能维持运作,不过如果任一组RAID 5中出现2颗或2颗以上硬盘损毁,整组RAID 50就会失效。
RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高,容量利用率比RAID5要低。比如同样使用9颗硬盘,由各3颗RAID 5再组成RAID 0的RAID 50,每组RAID 5浪费一颗硬盘,利用率为(1-3/9),RAID 5则为(1-1/9)。

image.png
用3个磁盘空间去做奇偶校验,而如果只是RAID5,则只需要用一个磁盘的空间

RAID 6

  • 前面所述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。
  • RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。
  • RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择

image.png

比较

image.png
image.png
image.png
RAID3适合大数据的单次的IO读写,按顺序读写-寻道时间更少
image.png
RAID2 RAID4已经弃用了


RAID 0:如果你有n块磁盘,原来只能同时写一块磁盘,写满了再下一块,做了RAID 0之后,n块可以同时写,速度提升很快,但由于没有备份,可靠性很差。n最少为2。

RAID 1:正因为RAID 0太不可靠,所以衍生出了RAID 1。如果你有n块磁盘,把其中n/2块磁盘作为镜像磁盘,在往其中一块磁盘写入数据时,也同时往另一块写数据。坏了其中一块时,镜像磁盘自动顶上,可靠性最佳,但空间利用率太低。n最少为2。写操作可以并行完成

RAID 3:为了说明白RAID 5,先说RAID 3.RAID 3是若你有n块盘,其中1块盘作为校验盘,剩余n-1块盘相当于作RAID 0同时读写,当其中一块盘坏掉时,可以通过校验码还原出坏掉盘的原始数据。这个校验方式比较特别,奇偶检验,1 XOR 0 XOR 1=0,0 XOR 1 XOR 0=1,最后的数据时校验数据,当中间缺了一个数据时,可以通过其他盘的数据和校验数据推算出来。但是这有个问题,由于n-1块盘做了RAID 0,每一次读写都要牵动所有盘来为它服务,而且万一校验盘坏掉就完蛋了。最多允许坏一块盘。n最少为3.

RAID 5:在RAID 3的基础上有所区别,同样是相当于是1块盘的大小作为校验盘,n-1块盘的大小作为数据盘,但校验码分布在各个磁盘中,不是单独的一块磁盘,也就是分布式校验盘,这样做好处多多。最多坏一块盘。n最少为3.
image.png

  • RAID 3 是采取并行存取技术,所以只需要一次写操作和一次读操作就能更新校验码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值