RAID (redundant array of independent disks; 或者redundant array of inexpensive disks),顾名思义,通过多个独立硬盘提供存储的高可靠性。RAID可以用软件实现,也可以用硬件实现,但是应该对应用软件透明。RAID实现里面,有三个基本概念:
1)Striping (条带)简单说就是把数据分散到多块硬盘上,其实就是一个cluster。它可以扩展逻辑硬盘的容量,并且由于是并行读写的,所以速度很快。
2)Mirroring (镜像)简单说就是把数据镜像到另外一块硬盘上,从而提供高可靠性。由于数据是冗余的,所以空间有浪费,而且速度较慢。
3)Parity (奇偶校验)附加额外的校验和,从而在硬盘损坏的情况下恢复数据,由于数据是冗余的,所以空间有浪费(但是比mirror好一点),而且速度也慢一点。
所有的RAID等级,基本上上面三个方面的组合,比如
RAID 0 Striping
RAID 1 Mirroring
RAID 2,3,4, Striping and Parity, 2,3,4已经被淘汰了,不再使用
RAID 5 Striping and Parity 用的最多的RAID
RAID 6 String and Parity 是RAID 5的扩展
RAID 10 (1+0)或者RAID 01 (0+1) Mirroring and Striping提供高可靠性,同时扩展磁盘空间
还有很多其他的RAID 类型,基本上就是上面三个方面的组合,记住0,1,5就可以了。
最新的关于存储高可靠性的分类方式有变化,更简单一点:
1)Failure-resistant disk systems (FRDS)
2)Failure-tolerant disk systems (FTDS)
3) Disaster-tolerant disk systems (DTDS)
上面的分类,可靠等级依次递增,实现复杂度也依次递增。
RAID的概念可以用于存储的高可靠性,同样也适用于网络设备的高可靠性,比如网络设备里面的session备份。网络高可靠性的解决方案里面,也包括cluster和mirror两种方式。唯一不同的是parity不好实现。其实parity就是一个压缩存储的机制,对于网络设备这种要求低延时的设备,好像不太适用。