RAID1详解

来源:百度文库 编辑:神马文学网 时间:2024/04/29 23:38:02
RAID 1
虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。
RAID 1和RAID 0截然不同,其技术重点全部放在如何能够在不影响性能的情况下最大限度的保证系统的可靠性和可修复性上。RAID 1是所有RAID等级中实现成本最高的一种,尽管如此,人们还是选择RAID 1来保存那些关键性的重要数据。
RAID 1又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。显然,磁盘镜像肯定会提高系统成本。因为我们所能使用的空间只是所有磁盘容量总和的一半。下图显示的是由4块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘(画斜线的为镜像部分)。

RAID 1下,任何一块硬盘的故障都不会影响到系统的正常运行,而且只要能够保证任何一对镜像盘中至少有一块磁盘可以使用,RAID 1甚至可以在一半数量的硬盘出现问题时不间断的工作。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据。
通常,我们把出现硬盘故障的RAID系统称为在降级模式下运行。虽然这时保存的数据仍然可以继续使用,但是RAID系统将不再可靠。如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。因此,我们应当及时的更换损坏的硬盘,避免出现新的问题。
更换新盘之后,原有好盘中的数据必须被复制到新盘中。这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进行过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一部分的带宽,所以可能会使整个系统的性能有所下降。
因为RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。下图示意了使用两个控制器的磁盘镜像。

使用两个磁盘控制器不仅可以改善性能,还可以进一步的提高数据的安全性和可用性。我们已经知道,RAID 1最多允许一半数量的硬盘出现故障,所以按照我们上图中的设置方式(原盘和镜像盘分别连接不同的磁盘控制),即使一个磁盘控制器出现问题,系统仍然可以使用另外一个磁盘控制器继续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度。
RAID 0+1
单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。
热插拔
一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。所谓热插拔功能,就是允许用户在不关闭系统,不切断电源的情况下取出和更换损害的硬盘。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。现在,使用热插拔技术只要简单的打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断的正常运行。
校验
RAID 3和RAID 5都分别使用了校验的概念提供容错能力。简单的说,我们可以把校验想象为一种二进制的校验和,一个可以告诉你其它所有字位是否正确的特殊位。
在数据通信领域,奇偶校验被用来确定数据是否被正确传送。例如,对于每一个字节,我们可以简单计算数字位1的个数,并在字节内加入附加校验位。在数据的接收方,如果数字位1的个数为奇数,而我们使用的又是奇数校验的话,则说明该字节是正确的。同样对偶数校验也是如此。然而,如果数字位1的个数和校验位的奇偶性不一致的话,则说明数据在传送过程中出现了错误。
RAID系统也采用了相似的校验方法,可以在磁盘系统中创建校验块,校验块中的每一位都用来对其它关联块中的所有对应位进行校验。
在数据通讯领域,虽然校验位可以告诉我们某个字节是否正确,但是无法告诉我们到底是哪一位出现了问题。这就是说我们可以检测错误,但是不能改正错误。对于RAID,这是远远不够的。固然错误的检测非常重要,但是如果不能对错误进行修复,我们就无法提高整个系统的可靠性。
举个例子来说,假设我们发现校验块中第10个字节的第5位不正确。如果这个校验块包含的是另外8个数据块的校验信息,那么哪一个数据块才是问题的罪魁祸首呢?也许你可能会想为每一个数据块都建立一个校验块就可以解决问题。但是这种方法很难实现。事实上,RAID主要是借助磁盘控制器的错误报告检测错误位置,并进行修复。如果磁盘控制器在读取数据时没有发出任何“抱怨”,那么系统将会视该数据为正确数据,继续使用。