RAID Striping技术经过长时间的发展,很多用户都很了解RAID Striping技术了,这里我发表一下个人理解,和大家讨论讨论。Parity是应用于RAID中的另一种冗余技术。这个名词通常用在侦测校验通讯错误方面,例如Modem、内存。 RAID中的Parity类似于内存中的技术。举个例子来说,比如你的一个数据单位有X位数字,那么你可以使用这X位数字产生一个奇偶校验位,并且把这个奇偶校验位作为这个数据单位的第X+1个位,如果这X+1位中的任何一个丢失,剩下的X位仍能修复这个数据。
>你可能听说过奇偶校验位(parity bit)这个名词,对于数据来讲,这是个额外的数据(但是从安全性上来讲不是多余的)。在RAID中,这个奇偶校验数据将会大的多。还不明白?很简单“真”“真”异或的结果是真,“假”“假”异或的结果也是真,“真”“假”异或结果是“假”——也就是相同的元素异或结果是“真”,不同元素异或结果是“假”。你可以把这里的“真”“假”分别等同于二进制的0、1。异或运算的一个特性就是你把结果和一个初始值进行异或运算,就能得到另一个初始值。由此你也能看得出来异或运算不需要临时存储空间就能交换两个内存空间。例如:
>◆10101010 XOR 11111111 = 01010101
>◆11111111 XOR 01010101 = 10101010
>◆10101010 XOR 01010101 = 11111111
>由任何两个值都能通过异或运算得到第三个值,这就是异或运算的特性。这个运算可以使用任意多个字节,所以你可以对整个硬盘的数据进行异或运算。现在你是不是可以想到你不必把数据存为两份,而只要一个硬盘就能保护你的数据了——这个想法基本正确,不过仍然还需要一个额外硬盘。这就是奇偶校验技术相对于镜像技术的优势。但是在容错能力不如镜像技术。奇偶校验数据不必存储在单一的物理硬盘上,它可以分布在整个磁盘阵列上,这就是我们常常说的分布式奇偶校验。另外在镜像技术中能实现的RAID Striping技术在奇偶校验中也能实现。主要的限制就是奇偶校验技术需要进行大量的运算,对于计算机有着相当高的要求。每一次读取、写入数据都要进行一次奇偶校验运算,这就必须具备硬件RAID控制器。运用软件RAID几乎是不现世的,因为如此大量的运算会让CPU没有空更重要的事情了。还有一个缺点就是恢复数据比镜像技术复杂。虽然硬件RAID控制器可以自动重建数据,不过比镜像技术要慢的多。
>RAID Striping技术
>RAID Striping技术通过把数据分布到阵列的所有驱动器上——这个过程可以进行并行处理。假如你在一个单独的硬盘上有个非常大的文件,如果要读取它只能从头到尾的逐一读取。而RAID Striping技术可以把它分成小块分别存储在多个硬盘之上,读取的时候就可以从多个硬盘里同时调用。同样道理当你写入数据——特别是大文件的时候也是这样的。传输性能将能明显的提高。在一定的范围内,可以说你的硬盘越多,性能的提高就越明显。驱动器数目决定了 Striping带宽——可以同时用于数据传输的同步延展。不过它们究竟是怎么工作的呢?
>每一部分进入RAID控制器的数据都被分成了更小的部分。在RAID Striping技术中分割数据分为两个层次:一个是字节层(Byte Level Striping),一个是区块层(Block Level Striping)。字节Striping要用于把数据以字节为单位分割,并顺序存储在硬盘上。举个例子:如果一组数据被分割为16字节,并且要分布在4 个硬盘上,那么第一个字节存储在第一个硬盘上、第二个字节存储在第二个硬盘上……而第五个字节又存到一个硬盘上,如此循环,不过缺点是每次要使用512字节的空间。Striping延展以给定大小的尺寸来分割数据,其余的同字节层Striping是一样的。这个块的大小称为stripe size。Striping容量的大小依据不同的RAID实现方式来决定。
>Striping容量的大小是一个很关键的课题。因为没有固定的大小是最合适的,不同的应用中应该采用不同的尺寸。Striping容量对于最终性能的提高或者降低影响很明显。Striping容量越小,文件被分割的就越多。传输性能将因并行处理能力的提高而提高,但是也会增加文件存储的随机性。而使用大的Striping容量所取得效果同使用小的延展容量相反。数据分布和传输的性能将会减低,不过文件存放的随机性也会下降。所以要确定指定多么大的延展容量只有根据你经常使用的程序来进行试验,找出最合适的尺寸。先从中等大小开始试验,然后分别增加和减少延展容量,并对结果做出记录,比较之后就有结果了。