浅谈raid0,raid1,raid10,raid01等等硬盘阵列搭配

RAID 0

RAID 0可用于两个或更多硬盘或SSD。目标是提高读的性能。

数据以特定大小(通常为64KB)的块写入,并在可用驱动器中平均分配。下图显示了带有三个硬盘的RAID 0阵列的示意图。RAID控制器将第一个数据块写入硬盘1,第二个数据块写入硬盘2,第三个数据块写入硬盘3,第四个数据块再次写入硬盘1,以此类推,RAID 0中的三个1TB硬盘提供3TB的存储空间。
paradin

由于数据分布均匀,所以在访问的时候会从硬盘1~硬盘3提取数据,然后拼接在一起就是一个完整的数据。理论上从3个硬盘的RAID 0阵列读取数据比从一个硬盘读取要快3倍,换言之,使用RAID 0读数据的能力跟磁盘数量成正比。

RAID 0也有缺点:如果其中一个磁盘出现故障,从其他磁盘上的数据拼起来就不再是一个完整的数据了。另外,磁盘越多,则发生磁盘故障的可能性也越高。所以如果磁盘阵列里包含着对您来说很重要的数据,则最好创建频繁的备份。

RAID 1

RAID 1用于创建数据的自动副本。RAID 1会将同一份数据写入两个单独的磁盘,如果A盘出现故障,仍然可以在B磁盘上读取所有数据,当然这是比较壕的,毕竟做一件事用了两块盘。这里要注意!镜像和备份可不是一样!!!如果你不小心从一个磁盘A上删除了一个文件,或者某个文件被病毒侵蚀了,那它再另一个磁盘B上也是一样的待遇。只有真正的备份才能使所有文件保持其保存状态。因此,如果想不让宝贵数据陷入灾难,创建频繁的备份是必须的。

RAID 1中的读性能通常与单独的硬盘差不多—-从A和B里一起读数据,谁出数据快就采用谁的,写的话就是要同时写到两个盘里去。因此,使用RAID 1来获得额外更多的读写性能是不太可能的。以下是RAID 1的工作原理图,如果HDD1坏了,那么HDD2直接上任,若HDD1里的东西被删除了,那么HDD2也会被删除,即使它上任了也是坏的。
paradin

RAID 10和RAID 01

所谓RAID 10,其实就是磁盘阵列先RAID 1,后RAID 0,同理,RAID 01也是先RAID 0,后RAID 1。无论是1+0还是0+1,都至少需要4个硬盘。

这里先看一下RAID 10和RAID 01的效果图:
paradin

就像图里说的“在六个硬盘列里,RAID 10比RAID 01更安全”。的确,RAID 10也凭借很棒的容错能力和恢复能力当选了大多数的RAID配置,为什么不要RAID 01呢?那就是如果在RAID 0那一步磁盘就坏了,那RAID 1那步就没有意义了,因为生成的镜像全是坏镜像。

RAID 3

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

RAID 5 and 6

上面说了RAID 10是一个很棒的方案,但是它的实现至少需要4个硬盘,这一点太伤钱了,于是就出现了RAID 5。与RAID 0一样,数据被分成块并执行写入处理,同时把RAID 3的“校验盘”也分成块分散到所有的盘里。同时,产生并写入称为“奇偶校验”的冗余代码。因此,即使其中的一个硬盘出现故障,也可以根据剩余的数据和奇偶校验来计算出丢失的数据,然后生成完整的状态数据。由于无论需要配置多少个硬盘,保存校验只使用一台设备的容量,容量效率随着待配置硬盘数量的增加而提高。RAID 5模式下硬盘读取数据的速度很快,因为它是从多个驱动器同时处理的。预计速度将与要配置的驱动器的数量成比例地增加。但是,数据的写入/更新涉及奇偶校验的创建/更新,所以写入性能不高

RAID 5已经提供了一定程度的可靠性,然而也牺牲了一定的读取速度。RAID 5的局限性还表现在RAID 5仅能在一块硬盘发生故障的情况下修复数据,如果2块硬盘同时发生故障,RAID 5则无能为力。于是RAID 6应需诞生了,RAID 6同RAID 5最大的区别就是在RAID 5的基础上除了具有P校验位以外,还加入了第2个校验位Q位。当一块磁盘出现数据错误或者丢失的时候,恢复方法同RAID 5,无须使用Q校验位。当两块磁盘上的数据出现错误或者丢失的时候,恢复方法为:利用上边给出的P,Q的生成公式,联立方程组,无论受损的数据是否包括P或者Q,总是能够解出损失的两位的数据。

RAID 50 and 60

在硬盘数量较少的情况下,RAID 5是极好的选择,如7-8块硬盘组成的RAID。但是,当硬盘的数量更多的时候,如10块、20块甚至100块,那么RAID 5就无法胜任了。RAID 50是在RAID 5的基础上,将多个RAID 5组以RAID 0的形式组成在一起。可以这么认为,一个RAID 5组在这里就是一个“大硬盘”,再把这些“大硬盘”以RAID 0的形式组成在一起。而RAID 60的组成就是在RAID 6组的上面组成一个RAID 0。理论上说在写入性能方面,RAID 50相比RAID 5要好太多,而RAID 50相比性能冠军RAID 10要差一点,考虑到RAID 5在一些负载面前的平庸性能,RAID 50是个不错的中间选择。和RAID 5和RAID 10一样,RAID 50也提供极好的读性能,同时RAID 50即使使用最低配置,也需要六个硬盘,所以安装成本很高。

如果担心一个RAID组里面同时有2块硬盘发生故障,导致数据丢失,那么可以选择使用RAID 60。RAID 60提供更高的安全性,相应的其可用容量会比RAID 50少点,RAID 60即使使用最少的配置,也需要8个硬盘,所以安装成本相当高。

结语

以上几个磁盘阵列,从读的能力来说:RAID 5 ≈ RAID 6 ≈ RAID 60 > RAID 0 ≈ RAID 10 > RAID 3 ≈ RAID 1
从写的能力来说:RAID 10 > RAID 50 > RAID 1 > RAID 3 > RAID 5 ≈ RAID 6 ≈ RAID 60
如果将来有一天你对这篇文章记得不是很清晰了,那么但愿你可以记住下面这张图,这几幅图虽然对于RAID 上不是完全的准确,但是已经很大的表达清楚了各种RAID的特点了。
paradin

参考资料

https://us.hardware.info/reviews/4123/raid-0-raid-1-raid-10-and-raid-5-how-do-they-actually-work
http://support.huawei.com/enterprise/zh/knowledge/KB1000149118/
https://zh.wikipedia.org/wiki/RAID
http://www.hpc.co.jp/raid_kaisetsu.html

-------------This article is over!Thanks for reading!-------------
感谢您请我喝咖啡!(o´ω`o)
0%