RAID 0
RAID 0 可用于两个或更多硬盘或 SSD。目标是提高读的性能。
数据以特定大小(通常为 64KB)的块写入,并在可用驱动器中平均分配。下图显示了带有三个硬盘的 RAID 0 阵列的示意图。RAID 控制器将第一个数据块写入硬盘 1,第二个数据块写入硬盘 2,第三个数据块写入硬盘 3,第四个数据块再次写入硬盘 1,以此类推,RAID 0 中的三个 1TB 硬盘提供 3TB 的存储空间。
由于数据分布均匀,所以在访问的时候会从硬盘 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 也会被删除,即使它上任了也是坏的。
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 的效果图:
就像图里说的 “在六个硬盘列里,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 的特点了。
参考资料
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
来源:Chris Chan's BLOG
原文:http://t.cn/E9naL1h转自公众号“运维之美”