前文我们介绍了Linux下面的RAID技术基本原理,并通过RAID1介绍了其大致的实现流程。今天我们介绍一下RAID5,因为RAID5还是比较复杂的,因此觉得有必要介绍一下。
RAID5的算法
关于RAID5的算法,我们在网上看到最多的一张图恐怕就是下面这张图了。这张图基本上说明了RAID5的算法,但还不够。在这张图中讲清了RAID5的关键是有一个校验数据块,校验数据块按照规则分布在不同的磁盘。
校验和的计算非常简单,主要使用了位运算中的异或运算。异或运算是逐位进行运算,规则是是相同为0,不同为1,下面是具体的示意图。
通过上述运算规则就可以解决单块磁盘损坏的情况。为了便于理解,我们举一个简单的例子。比如我们5块磁盘组成的RAID5,其中4块数据盘,一块校验盘。假设里面存储的数据非常简单,分别是0和1,具体如图3所示。假设一块磁盘坏了(红色),那么我们可以通过剩下的磁盘中的数据经过异或运算得到故障磁盘的数据(具体如何运算大家自己思考一下)。
RAID5的校验数据块正是基于这种简单的规则进行计算的,但是差别在于RAID5一次性计算的数据块比较大。
另外一点,根据校验数据块与实际数据块在磁盘的布局的差异,RAID5有多种算法,最常见的包括:左对称(Left-symmetric)、左不对称(Left-asymmet