RAID 3系统经过长时间的发展,很多用户都很了解RAID 3系统了,这里我发表一下个人理解,和大家讨论讨论。热插拔,一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。所谓热插拔功能,就是允许用户在不关闭系统,不切断电源的情况下取出和更换损害的硬盘。
>如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。现在,使用热插拔技术只要简单的打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断的正常运行。
>校验
>RAID 3和RAID 5都分别使用了校验的概念提供容错能力。简单的说,我们可以把校验想象为一种二进制的校验和,一个可以告诉你其它所有字位是否正确的特殊位。在数据通信领域,奇偶校验被用来确定数据是否被正确传送。例如,对于每一个字节,我们可以简单计算数字位1的个数,并在字节内加入附加校验位。在数据的接收方,如果数字位1的个数为奇数,而我们使用的又是奇数校验的话,则说明该字节是正确的。同样对偶数校验也是如此。然而,如果数字位1的个数和校验位的奇偶性不一致的话,则说明数据在传送过程中出现了错误。
>RAID系统也采用了相似的校验方法,可以在磁盘系统中创建校验块,校验块中的每一位都用来对其它关联块中的所有对应位进行校验。
>在数据通讯领域,虽然校验位可以告诉我们某个字节是否正确,但是无法告诉我们到底是哪一位出现了问题。这就是说我们可以检测错误,但是不能改正错误。对于RAID,这是远远不够的。固然错误的检测非常重要,但是如果不能对错误进行修复,我们就无法提高整个系统的可靠性。
>举个例子来说,假设我们发现校验块中第10个字节的第5位不正确。如果这个校验块包含的是另外8个数据块的校验信息,那么哪一个数据块才是问题的罪魁祸首呢?也许你可能会想为每一个数据块都建立一个校验块就可以解决问题。但是这种方法很难实现。事实上,RAID主要是借助磁盘控制器的错误报告检测错误位置,并进行修复。如果磁盘控制器在读取数据时没有发出任何“抱怨”,那么系统将会视该数据为正确数据,继续使用。
>RAID 3
>RAID 3采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。例如,在一个由4块硬盘构成的RAID 3系统中,3块硬盘将被用来保存数据,第四块硬盘则专门用于校验。
>我们用相同的颜色表示使用同一个校验块的所有数据块,斜线标出的部分为校验块。校验块和所有对应的数据块一起构成一个带区。
>第四块硬盘中的每一个校验块所包含的都是其它3块硬盘中对应数据块的校验信息。RAID 3的成功之处就在于不仅可以像RAID 1那样提供容错功能,而且整体开销从RAID 1的50%下降为25%(RAID 3+1)。随着所使用磁盘数量的增多,成本开销会越来越小。举例来说,如果我们使用7块硬盘,那么总开销就会将到12.5%(1/7)。