说说IO(七)- RAID

 

Raid很基础,但是在存储系统中占据非常重要的地位,所有涉及存储的书籍都会提到RAIDRAID通过磁盘冗余的方式提高了可用性和可高性,一方面增加了数据读写速度,另一方面增加了数据的安全性。

 

RAID 0

 

对数据进行条带化。使用两个磁盘交替存放连续数据。因此可以实现并发读写,但带来的问题是如果一个磁盘损坏,另外一个磁盘的数据将失去意义。RAID 0最少需要2块盘。

 

 

 

 

RAID 1

 

对数据进行镜像。数据写入时,相同的数据同时写入两块盘。因此两个盘的数据完全一致,如果一块盘损坏,另外一块盘可以顶替使用,RAID 1带来了很好的可靠性。同时读的时候,数据可以从两个盘上进行读取。但是RAID 1带来的问题就是空间的浪费。两块盘只提供了一块盘的空间。RAID 1最少需要2块盘。

 

 

 

 

RAID 5  RAID 4

使用多余的一块校验盘。数据写入时,RAID 5需要对数据进行计算,以便得出校验位。因此,在写性能上RAID 5会有损失。但是RAID 5兼顾了性能和安全性。当有一块磁盘损坏时,RAID 5可以通过其他盘上的数据对其进行恢复。

 

如图可以看出,右下角为p的就是校验数据。可以看到RAID 5的校验数据依次分布在不同的盘上,这样可以避免出现热点盘(因为所有写操作和更新操作都需要修改校验信息,如果校验都在一个盘做,会导致这个盘成为写瓶颈,从而拖累整体性能,RAID 4的问题)。RAID 5最少需要3块盘。

 

 

RAID 6

 

RAID 6RAID 5类似。但是提供了两块校验盘(下图右下角为pq的)。安全性更高,写性能更差了。RAID 0最少需要4块盘。

 

 

 

 

 

RAID 10Striped mirror

 

RAID 10RAID 0 RAID 1的结合,同时兼顾了二者的特点,提供了高性能,但是同时空间使用也是最大。RAID 10最少需要4块盘。

 

 

 

需要注意,使用RAID 10来称呼其实很容易产生混淆,因为RAID 0+1RAID 10基本上只是两个数字交换了一下位置,但是对RAID来说就是两个不同的组成。因此,更容易理解的方式是“Striped mirrors”,即:条带化后的镜像——RAID 10;或者“mirrored stripes”,即:镜像后的条带化。比较RAID 10RAID 0+1,虽然最终都是用到了4块盘,但是在数据组织上有所不同,从而带来问题。RAID 10在可用性上是要高于RAID 0+1的:

 

  • RAID 0+1 任何一块盘损坏,将失去冗余。如图4块盘中,右侧一组损坏一块盘,左侧一组损坏一块盘,整个盘阵将无法使用。而RAID 10左右各损坏一块盘,盘阵仍然可以工作。
  • RAID 0+1 损坏后的恢复过程会更慢。因为先经过的mirror,所以左右两组中保存的都是完整的数据,数据恢复时,需要完整恢复所以数据。而RAID 10因为先条带化,因此损坏数据以后,恢复的只是本条带的数据。如图4块盘,数据少了一半。


RAID 50

RAID 50  RAID 10 ,先做条带化以后,在做 RAID 5 。兼顾性能,同时又保证空间的利用率。 RAID 50 最少需要 6 块盘。




总结:

  • RAIDLVM中的条带化原理上类似,只是实现层面不同。在存储上实现的RAID一般有专门的芯片来完成,因此速度上远比LVM块。也称硬RAID
  • 如上介绍,RAID的使用是有风险的,如RAID 0,一块盘损坏会导致所有数据丢失。因此,在实际使用中,高性能环境会使用RAID 10,兼顾性能和安全;一般情况下使用RAID 5RAID 50),兼顾空间利用率和性能;

 

 

你可能感兴趣的:(java路上)