回复:

三、镜像技术

      镜像就是在两个或者多个独立的硬盘驱动器或者驱动器阵列上存放数据的多个拷贝。系统会同时把数据写在作为镜像的两个硬盘上,这就是RAID技术中冗余技术,用来防止数据意外丢失。当其中一个硬盘或者RAID出现问题,系统可以访问镜像的硬盘或者RAID来继续工作,这样就让数据修复的时间缩短到了最短,此时你要做的就是从完好的备份上恢复数据。

      下面的示意图显示了镜像如何工作的。当然这只是一个简单的示意图。A、B、C是独立的文档。在这个示意图里Disk 1和Disk 2指的是硬盘或者磁盘阵列。RAID 控制器将相同的数据同时写入Disk 1和Disk 2。所以每一个硬盘或者磁盘阵列存储了相同的信息。你可以利用延展技术(Striping,后面将详细解释,现在你只需要知道这个技术能提升性能)加入另一个level组成更加复杂的RAID阵列。如果你有一个延展阵列,那么你可以在镜像这个阵列的同时镜像另外一个延展阵列,它可以让RAID变的极为复杂。

    缺点也是显而易见的,不能并行写入——因此存储数据的时候并不能提升速度。不过,在读取数据的时候镜像可以提升速度。一个好的RAID控制器可以读取镜像的两个设备中的任意一个的数据,当其中一个使用时,另一个空闲的可以响应其它的请求。这就是并行处理——也就是RAID之所以能提升硬盘性能的原因所在。

    镜像适用于强调数据安全的解决方案。因为要把相同的数据存为两份所以就需要更大的存储空间,当然也需要更多的经费来购置存储设备。不过对于相当大的领域内这个花费是值得的。因为数据丢失而去手工回复所需要的时间足够让一些公司倒闭了。不过在另外些场合,数据的稳定性要求不是那么高,就不值得在存储设备上花费两倍的钱了。镜像中两个组成RAID的两个存储设备是对等的,究竟下一步操作需要哪一个设备就需要由parity来决定了。

    四、奇偶校验(Parity)技术

    Parity是应用于RAID中的另一种冗余技术。这个名词通常用在侦测校验通讯错误方面,例如Modem、内存。 RAID中的Parity类似于内存中的技术。举个例子来说,比如你的一个数据单位有X位数字,那么你可以使用这X位数字产生一个奇偶校验位,并且把这个奇偶校验位作为这个数据单位的第X+1个位,如果这X+1位中的任何一个丢失,剩下的X位仍能修复这个数据。你可能听说过奇偶校验位(parity bit)这个名词,对于数据来讲,这是个额外的数据(但是从安全性上来讲不是多余的)。在RAID中,这个奇偶校验数据将会大的多。还不明白?

    一般的这个额外的奇偶校验数据由异或逻辑运算(XOR)产生。如果你对异或逻辑运算不清楚。下表讲让你明白:
    p q p XOR q
    T T T
    T F F
    F T F
    F F T
    很简单“真”“真”异或的结果是真,“假”“假”异或的结果也是真,“真”“假”异或结果是“假”——也就是相同的元素异或结果是“真”,不同元素异或结果是“假”。你可以把这里的“真”“假”分别等同于二进制的0、1。异或运算的一个特性就是你把结果和一个初始值进行异或运算,就能得到另一个初始值。如上表,你可以把(p XOR q)同p或者q进行异或,相应的你会得到q或p。由此你也能看得出来异或运算不需要临时存储空间就能交换两个内存空间。

    例如:
    10101010 XOR 11111111 = 01010101
    11111111 XOR 01010101 = 10101010
    10101010 XOR 01010101 = 11111111

    由任何两个值都能通过异或运算得到第三个值,这就是异或运算的特性。这个运算可以使用任意多个字节,所以你可以对整个硬盘的数据进行异或运算。现在你是不是可以想到你不必把数据存为两份,而只要一个硬盘就能保护你的数据了——这个想法基本正确,不过仍然还需要一个额外硬盘。这就是奇偶校验技术相对于镜像技术的优势。但是在容错能力不如镜像技术。奇偶校验数据不必存储在单一的物理硬盘上,它可以分布在整个磁盘阵列上,这就是我们常常说的分布式奇偶校验。另外在镜像技术中能实现的Striping技术在奇偶校验中也能实现。主要的限制就是奇偶校验技术需要进行大量的运算,对于计算机有着相当高的要求。每一次读取、写入数据都要进行一次奇偶校验运算,这就必须具备硬件RAID控制器。运用软件RAID几乎是不现世的,因为如此大量的运算会让CPU没有空更重要的事情了。还有一个缺点就是恢复数据比镜像技术复杂。虽然硬件RAID控制器可以自动重建数据,不过比镜像技术要慢的多。