RAID独立磁盘冗余技术是一种把2个或者多个HDD或SSD合并为一个协调的存储单元或列阵,从而预防数据丢失的技术,其最早由加州大学伯克利分校的计算机科学家David Patterson、Garth Gibson和Randy Katz在1987年提出。他们的研究论文“关于RAID的论证”提出了将多个磁盘驱动器组合起来,以提高性能和可靠性的想法。
RAID0
将磁盘全部串联,实现空间最大化利用,但是没有冗余空间
将数据分成连续的块,然后将每个块按顺序依次写入到不同的磁盘上,这样可以实现并行读写,从而提高了数据的访问速度
也就是说假如我有两个盘A和B,我可以一个文件拆成两部分,一部分放A,另一部分放B,要读取时两边同时读写然后拼凑
RAID1
将内容镜像,多个个盘存一样的数据,实现数据冗余
也就是说,当我存储数据时,数据会写入所有盘,当有一台宕机时,有镜像的设备提供备份和恢复,有点像双机热备
RAID2
比较特殊的RAID布局,采用汉明码校验,不过已被淘汰,其数据会被划分成位级别,也就是说我存储数据是每个盘都存一部分,且有检验盘来检测数据完整性,通过文献我感觉其安全性挺高,但由于汉明码的校验方式,其多个错误有时候检验不出来,以及成本过高的问题,逐渐被RAID5等替换
汉明码校验
校验位数
采用奇数偶检验码进行检验和纠错,需要插入码的长度与数据位的数量之间的关系为 2^P>=P+D+1(D为数据长度,P为汉明码个数)
eg:数据大小为4,即有2^p>=p+4+1,可以得出p至少为3
编码过程
明确校验位数后,接着就是怎么编码的问题,不同于校验和,汉明码插入与数据之间,且通常放在2的n次幂位上,比如1,2,4,8……其他位置则·存放数据编码
然后根据数据中1的奇偶依次填入1/0,当1的个数为偶数,填入0,1的个数为奇数则填入1
而在汉明码中,校验位负责的数据位范围也是一个重点,其基于每个数据位对应的二进制编号,例如在编号为1-7的位中,位置 1是汉明码(二进制 001 001)、位置 3 (二进制 011 011)、位置 5 (二进制 101 101)、位置 7 (二进制 111 111)的二进制表示的最后一位都是 1 ,则在此位置的汉明码负责位置 1 ,3,5,7的数据位
eg:
1011(4位3个码)
??1 ?011(1,2,4填入,1负责1,3,5,7;2负责2,3,6,7;4负责4,5,6,7)
1 1 1 0 011(判断奇偶)
纠错过程
由于设计问题,每个数据位的数据必然会被汉明码校验两次,这也就实现汉明码纠错能力,只要校验码与初始算出不同数据就一定出错,但是需要注意的是,汉明码只能检测和更正单个错误,对于两个或更多错误的情况,汉明码可能无法正确更正
RAID3
采用条带化,并用单个奇偶校验盘对数据进行检验和冗余,通常采用异或形式进行,这也表明RAID3失去乐纠错能力
存储数据时,数据会被放到各个数据块内,并整理出对应的校验码,由校验盘进行对数据的维护工作,这样一种做法减少成本,也提高磁盘的利用率
RAID4
在RAID3上进行修改,其条带化更加显著,并发处理能力更强更稳定,但与RAID 3 不同的是,RAID 4 中的奇偶校验位是针对所有数据块的位进行计算的,也就是说当数据块的内容发生改变时,仅仅需要更新与之对应的奇偶校验位,而不会影响其他数据块的奇偶校验位,这一改动使得读写更加高效
RAID5
RAID5将奇偶校验盘分散到不同盘内,这再一次提高磁盘冗余性,避免校验盘坏死的问题,分布式存储在增加系统容错的同时,也节约了磁盘的性能,当有磁盘发生故障时,系统可以通过重新计算奇偶校验信息来恢复丢失的数据
RAID6
再次增加容错,允许两个盘同时坏死,适用于一些需要长期运行且对稳定性要求高的应用以及需要高性能的服务
RAID10
RAID10其实就是RAID1+RAID0,融合两者的优点,实现大容量,可冗余处理
RAID50
同上,RAID50其实就是RAID5+RAID0,在提供备份的同时又能够实现奇偶校验
RAID60
同上,RAID50其实就是RAID6+RAID0
总结
最小磁盘数 | 容错 | 磁盘空间开销 | 读速度 | 写速度 | 数据保护 | |
RAID0 | 2 | 无 | 0 | 高 | 高 | 无 |
RAID1 | 2 | 单磁盘故障 | 50% | 高 | 低 | 镜像 |
RAID2 | 3 | 单磁盘故障 | 1/n | 中 | 低 | 汉明码 |
RAID3 | 3 | 单磁盘故障 | 1/n | 中 | 低 | 奇偶校验 |
RAID4 | 3 | 单磁盘故障 | 1/n | 中 | 低 | 奇偶校验 |
RAID5 | 3 | 单磁盘故障 | 1/n | 中 | 低 | 奇偶校验 |
RAID6 | 4 | 双磁盘故障 | 2/n | 中 | 低 | 双奇偶校验 |
RAID10 | 4 | 多磁盘故障 | 50% | 高 | 中 | 镜像 |
RAID50 | 6 | 单磁盘故障 | 1/n | 高 | 中 | 奇偶校验 |
RAID60 | 8 | 多磁盘故障 | 2/n | 高 | 中 | 双奇偶校验 |
目前主流使用RAID10,RAID5,RAID6,根据需求选择,适合的才是最好的,可以看到RAID的发展无疑就是一种增加容错,使得设备更加稳定