我发现周围不少人在学习和理解RAID磁盘阵列的原理时,找了很多专业的资料来看,但是因为动手的机会比较少,因此看完以后还是似懂非懂,真正遇到实际的方案设计的时候,还是拿不定主意。
因此,我结合自己在过去几年中积累的实际项目经验,在这里通过最通俗的方式,来谈一谈我对几种常用的RAID磁盘阵列级别的理解,如有错误与不恰当之处,欢迎拍砖。
RAID0 是把两块物理盘组合成一块逻辑盘用,因此容量相当于等于二者之和,IO的读写也提高了(因为可以同时把数据分成两部分各写入两块物理盘中),但是安全性反而降低了,因为一旦其中一块盘坏了,整个逻辑盘就坏了;
总结:在不担心数据安全的情况下,RAID0是最佳的选择。
RAID1 是把两块物理盘做成完全相同的镜像,因此逻辑盘的容量仅相当于一块硬盘的大小,但是安全性却很高,任何其中一块盘坏掉,数据都没有影响,冗余程度1/2,找一块新盘换上去数据又可以自动重构,缺点就是牺牲了容量,以及降低了数据写入的IO(因为必须把每一份数据同时都写入到两块硬盘中);
总结:在优先考虑数据安全且不需要保证磁盘性能与容量的情况下,RAID1是最佳选择。
RAID5 是把三块物理盘做成一个逻辑盘用,其中有近一块盘的容量用来做奇偶校验,因此容量仅相当于两块硬盘,但支持其中一块硬盘损坏,冗余程度1/3,整体性能相当于介于RAID0与RAID1之间,属于性价比较高的一种RAID;
总结:在经济情况不太充裕的情况下既想保障磁盘性能与容量又想保障数据的安全,RAID5是最佳的选择。
RAID10 则由RAID0与RAID1组合构成,因此需要四块物理盘来构成一个逻辑盘,它集合了RAID0和RAID1的优点,既提升了IO的读写速度,又保障了数据的安全,可以有两块物理盘损坏,冗余程度1/2,缺点嘛显而易见,就是成本很高,且牺牲了两块硬盘的容量。
总结:在不差钱的情况下,RAID10是最佳的选择。
最后,需要提到的一点是,在超过2-4块硬盘做RAID的时候,其实也是由以上这种基础单元构成的,比如我拿16块硬盘做RAID10,就是由4组4块硬盘所构成的RAID10来实现的。
我买100GB的容量,我能用的是多少?我应该做哪一级的RAID? 首先我用一句话来描述各个RAID级别的原理。
RAID0:将数据切割成块,将块同时写到几个硬盘中。RAID0提高了读写性能,没有容错能力。
RAID1:将同一份数据同时写到2个硬盘中。写性能降低,读性能提高。有容错。
RAID3:将数据写到几块硬盘中,一块盘做数据校验盘。有容错。
RAID5:将数据写到几块硬盘中,一份校验数据分布中各个硬盘中。有容错。
RAID6:将数据写到几块硬盘中,2份校验数据分布中各个硬盘中。有容错。
特征 | RAID 0 | RAID 1 | RAID 5 | RAID 6 |
最小磁盘数 | 2 | 2 | 3 | 4 |
数据保护 | 无保护 | 一块硬盘故障 | 一块硬盘故障 | 两块硬盘故障 |
读取性能 | High | High | High | High |
写入性能 | High | Medium | Low | Low |
读取性能退化 | N/A | Medium | Low | Low |
写入性能退化 | N/A | High | Low | Low |
利用率 | 100% | 50% | 67% - 94% n/(n-1) |
50% - 88% n/(n-2) |
典型应用 | 高性能 工作站, 数据计录, 实时翻译, 短暂的数据 | 运营系统, 交换数据库 | 数据存储, 网络服务,存档 | 数据存储, 备份磁盘, 高可用解决方案, 大容量服务器 |
总结:RAID0两块硬盘容量相加,提升性能,但坏一块就全坏,安全没保障;
RAID1两块硬盘同样内容,数据写入一写就两分,容量只有一块硬盘,性能低,但坏了一块没事,而且有保障;
RAID5三块硬盘其中一块做检验盘,容量利用率2/3,性能中等,允许坏一块,性价比最好;
RAID1+0四块硬盘结合0和1优点,性能高,安全有保障,可以坏两块。但利用率最低50%;
RAID6是RAID5升级版,六块硬盘,两块做检验,容量利用率4/6,允许坏两块硬盘,但两块坏了还不换硬盘就没了保障,但支持热备硬盘,出故障的硬盘上的数据会转移到热备硬盘上,并且自动进行重建,虽然成本高,数据写入慢,但有效的硬盘利用率和保障性是大容量存储的首选;
最后,上面是最低硬盘数量,也称基础单元,不能再少。比如我拿16块硬盘做RAID10,就是由4组4块硬盘所构成的RAID10来实现的。