磁盘阵列的原理及相关知识( 三 )


从上面两点我们可以看出,disk spanning定义了RAID的基本形式,提供了一个便宜、灵活、高性能系统结构,而disk stripping解决了数据的存取效率和磁盘的利用率问题,RAID 1至RAID 5是在此基础上提供磁盘安全的方案 。
RAID 1
RAID 1是使用磁盘镜像(disk mirroring)的技术 。磁盘镜像应用在RAID 1之前就在很多系统中使用,它的方式是在工作磁盘(working disk)之外再加一额外的备份磁盘(backup disk),两个磁盘所储存的数据完全一样,数据写入工作磁盘的同时亦写入备份磁盘 。
一般镜像对磁盘的读取有几种方式:
1. 只读取工作磁盘,镜像磁盘只是作后备
2. 两个硬盘同时读取,采用选取回应的磁盘的数据
3. 把不同的读取要求分布在不同的磁盘上
4. 直接读主磁盘,如主磁盘正忙,则读取镜像磁盘,如两个磁盘都忙碌,则采用3的方式以分散负载
5. 把磁盘的容量分为两半,一个磁盘只读0至N/2(磁盘外侧)的区域,另一磁盘只读N/2至N(磁盘内侧)的区域 。
以上方式除1之外,其余都比单一磁盘的效能来的高,能提高多少和系统有关,但以5而言,如数据主不到磁盘的一半,则和单一磁盘无异 。
写入也有几种方式:
1. 同时写入两个磁盘,并等待两个盘的数据完好 。这种方式比单个磁盘稍慢 。
2. 直接写入主磁盘,而在镜像磁盘不忙时才写入,这样比方式1有较好的性能,但在某些读取的方式上会导致数据不一致,在引非同步情况之下,若主磁盘故障会使数据失落 。
磁盘镜像不见得就是RAID 1,一般磁盘镜像和RAID 1有两点最大的不同:下图为RAID 1,每一笔数据都储存两份:磁盘0 磁盘1 磁盘2 磁盘3
A0 A1 A2 A3
A4 A5 A6 A7
… … … …
4N-3 4N-2 4N-1 4N
从上图可以看出:
R:N(可同时读取所有磁盘)
W:N/2(同时写入磁盘数)
S:N/2(利用率)
读取数据时可用到所有的磁盘,充分发挥数据分段的优点;写入数据时,因为有备份,所以要写入两个磁盘,其效率是N/2,磁盘空间的使用率也只有全部磁盘的一半 。
RAID 1无工作磁盘和备份磁盘之分,多个磁盘可同时动作而有重叠(overlaping)读取的功能,甚至不同的镜像磁盘可同时作写入的动作,这是一种最佳化的方式,称为负载平衡(load-balance) 。例如有多个用户在同一时间要读取数据,系统能同时驱动互相镜像的磁盘,同时读取数据,以减轻系统的负载,增加I/O的性能 。
RAID 1的磁盘是以磁盘延伸的方式形成阵列,而数据是以数据分段的方式作储存,因而在读取时,它几乎和RAID 0有同样的性能 。从RAID的结构就可以很清楚地看出RAID 1和一般磁盘镜像的不同 。
这种方式又称为RAID 0 1,事实上就是RAID 0和RAID 1的结合,即在数据分段的情形下作镜像 。这样使得RAID 1有很好的存取性能,Oaraid?;磁盘阵列同时提供了这两种方式 。
RAID 1当其中一个磁盘故障时,就只能有一个磁盘的性能,故障磁盘更换后需重建或重镜像数据,这要花较长的时间,如果I/O很忙的话,并会对性能产生一些影响,但硬件磁盘阵列可用后台(background)作业的方式做数据重建 。重建完成之前,RAID 1没有任何完全保障 。和单一磁盘比较,RAID 1的读出比较快,但写入比较慢,因为要同时写入两个磁盘,但RAID 0 1可增加其性能,因为多个磁盘可同时操作 。
很多人以为RAID 1/0 1要加一倍额外的磁盘,形成浪费而不看好RAID 1,事实上磁盘越来越便宜,并不见得造成负担,况且RAID 0 1有最好的容错(fault tolerence)能力,其效率也是除RAID 0之外最好的 。我们可视应用的不同,在同磁盘阵列中使用不同的RAID level,如建联科技公司的Oaraid?;系列都可在同一磁盘阵列中定义八个逻辑磁盘(logic disk),分别使用不同的RAID level,例如分为C:,D:及E:三个逻辑磁盘(或LUN0,LUN1,LUN2) 。

推荐阅读