电脑技术学习

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

dn001


1. 为什么需要磁盘阵列?
如何增加磁盘的存取(access)速度,如何防止数据因磁盘的故障而失落及如何有效的利用磁盘空间,一直是电脑专业人员和用户的困扰;而大容量磁盘的价格非常昂贵,对用户形成很大的负担。磁盘阵列技术的产生一举解决了这些问题。
过去十年来,CPU的处理速度几乎是几何级数的跃升,内存(memory)的存取速度亦大幅增加,而数据储存装置——主要是磁盘——的存取速度相较之下,较为缓慢,整个I/O吞吐量不能系统匹配,形成电脑系统的瓶颈,拉低了电脑系统的整体性能(throughput),若不能有效的提升磁盘的存取速度,CPU、内存及磁盘间的不平衡将使CPU及内存的改进形成浪费。
目前改进磁盘存取速度的方式主要有两种:一是磁盘快取控制(disk cache controller),它将从磁盘读取的数据存在快取内存(cache memory)中以减少磁盘存取的速度,如要读取的数据在在快取内存中,或要写数据到磁盘时,才做磁盘的存取动作。这种方式在单工环境如Dos之下,对大量数据的存取有很好的性能(量小且频繁的存取则不然),但在多工(multi-tasking)环境之下(因为要不停的作数据交换——swapping——的动作)或数据库的存取(因为每一记录都很小)就不能显示其性能。这种方式没有任何安全保障。
其二是使用磁盘阵列的技术。磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。磁盘阵列所利用的不同的技术,称为RAID Level,不同的level针对不同的系统及应用,以解决数据安全的问题。
一般高性能的磁盘阵列都是以硬件的形式来达成,进一步地把磁盘快取控制及磁盘阵列结合在一个控制器(RAID Controller)或控制卡上,针对不同的用户解决众对磁盘输出输入系统的四大要求:
(1) 增加存取速度;
(2) 容错(fault tolerance),即安全性;
(3) 有效地利用磁盘空间;
(4) 尽量地平衡CPU、内存及磁盘的性能差异,提高电脑的整体工作性能。

2.磁盘阵列原理
1987年,加州柏克大学的三位人员发表了名为“磁盘阵列研究”的论文,正式提到了RAID也就是磁盘阵列,论文提出廉价的5.25"及3.5"的硬盘也能如大机器上的8"盘般提供大容量、高性能和数据的一致性,并详述了RAID 1至5的技术。
磁盘阵列针对不同的应用使用不同技术,称为RAID Level, RAID是Redundant Array of Inexpensive Disks的缩写,而每一Level代表一种技术,目前业界公认的标准是RAID 0~RAID 5。这个level并不代表技术的高低,level 5并不高于level 3,level 1也不低过level 4,至于要选择那一种RAID level的产品,纯视用户的操作环境及应用而定,与level的高低没有必然的关系。RAID 0没有安全的保障,但其快速,所以适合高速I/O的系统;RAID 1适用于需安全性又要兼顾速度的系统,RAID 2及RAID 3适用于大型电脑及影像、CAD/CAM等处理;RAID 5多用于OLTP,因有金融机构及大型数据处理中心的迫切需要,故使用较多而较有名气,但也因此形成很多人对磁盘阵列的误解,以为磁盘阵列非要RAID 5不可;RAID 4较少使用,各RAID 5有其共同之处,但RAID 4适合大量数据的存取。其他如RAID 6,RAID7,乃至RAID 10,50,100等,都是厂商各做各的,并无一致的标准,在此不作说明。介绍各个RAID level之前,先看看形成磁盘阵列的两个基本技术:
磁盘延伸(Disk Spanning):
译为磁盘延伸,能确切地表示disk spanning这种技术的含义。如下图所示,Oaraid?;磁盘阵列控制器,联接了四个磁盘:
磁盘1 磁盘2 磁盘3 磁盘4
这四个磁盘形成一个阵列,而磁盘阵列的控制器是将此四个磁盘视为单一的逻辑磁盘,如DOS环境下的C:盘。这是disk spanning的意义,把小容量的磁盘延伸为大容量的单一磁盘。因为电脑本身只把硬盘当作一储存空间,并不安排管理数据在硬盘的方式,磁盘阵列控制器会决定如何使用储存空间以得到最好的性能和数据的一致性。所以用户不必规划数据在磁盘的分布,而且提高磁盘空间的使用率。Oaraid?;的SCSI磁盘阵列更可连接几十个磁盘,形成数十GB到数百GB的阵列,使磁盘容量几乎可作无限的延伸;而各个磁盘一起作存取的动作,比单一磁盘更为快捷。很明显地由此阵列形成而产生RAID的各种技术。我们也可从上图看出inexpensive(便宜)的意义,四个500MB的磁盘比一个2GB的磁盘要便宜,因为以前大磁盘的价格非常昂贵,但在磁盘越来越便宜的今天,inexpensive已非磁盘阵列的重点,虽然对于需要大磁盘容量的系统,仍是考虑的要点。
磁盘或数据分段(Disk stripping or Data Striping):
因为磁盘阵列是将同一阵列的多个磁盘视为单一的虚拟磁盘(virtual disk),所以其数据是以分段(block or segment)的方式顺序存放在磁盘阵列中,如下图:
磁盘0 磁盘1 磁盘2 磁盘3
A0 A1 A2 A3
A4 A5 A6 A7
… … … …
4N-3 4N-2 4N-1 4N
分段的意思是把数据分小段跨越分布在各个磁盘,数据按需要分段,从第一个磁盘开始放,放到最后一个磁盘再回到第一个磁盘,直到数据分布完毕。至于分段的大小视系统而定,如果磁盘阵列所分区块和操作系统的所分的区块是一致的话,会有较好的效率。有的系统或以1KB最有效率,或以4KB,或以6KB,甚至是4MB或8MB的,但除非数据小于扇区(sector, 即512bytes),否则其分段应是512byte的倍数。因为磁盘的读写是以一个扇区为单位,若数据小于512bytes,系统读取该扇区后,还做组合或分组(视读或写而定)的动作,浪费时间。从上图我们可以看出数据以段方式放在不同的磁盘,整个阵列的各个磁盘可同时作读写,故数据分段使数据的存取有最好的效率,理论上本来读一个包含四个分段的数据所需要的时间约为(磁盘的access time +数据的transfer time)* 4次,现在只要一次就可以完成。
Oaraid?;可将同一数据分段放在不同的磁盘,比如磁盘阵列定义的分段为4KB,而5KB的数据可把4KB的数据放在一个磁盘的分段上,另外1KB的数据放在另一磁盘的分段,而另一笔数据可从这个磁盘分段所剩下的3KB空位放起,这样不但能增加磁盘的利用率,而且可同时启动多个磁盘一起动作,增加存取的速度,在很多情况之下,即使是小于一个分段的数据,也能得到负载均衡的好处,所以分段大小优化心脏可作跨盘分段(同一数据分段放在不同的磁盘分段)。可得到较好的存取效能,这也是为什么OAraid?; Viper-II5000系列能有37MB/sec的存取效能的原因。
若以N表示磁盘的数目,R表示读取,W表示写入,S表示可使用空间,则数据分段的性能为:
R:N(可同时读取所有磁盘)
W:N(可同时写入所有磁盘)
S:N(可利用所有的磁盘,并有最佳的使用率)
Disk striping也称为RAID 0,很多人以为RAID 0没有什么,其实这是非常错误的观念,因为RAID 0使磁盘的输入输出有最高的效率。而磁盘阵列有更好的效率的原因除数据分段外,它可以同时执行多个输入输出的要求,因为阵列中的每一个磁盘都能独立动作,分段放在不同的磁盘,不同的磁盘可同时作读写,而且能在快取内存及磁盘作并行存取(parallel access)的动作。Striping打破了单一磁盘所形成的瓶颈。Oapro对以上图4个1GB硬盘的阵列和1个4GB的硬盘作过比较,磁盘阵列的效能约为单一磁盘的3至3.5倍,若4个磁盘分别接Oaraid?; 4个SCSI通道形成阵列,其I/O性能是单一磁盘的4倍。但是否真能表现出这种能力,要视操作系统,用户数目或工作负荷的特性而定,要能同时得到各个磁盘的交通,其工作负荷也必须分布在各个磁盘。
从上面两点我们可以看出,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)。
RAID 0+1完全做到了容错包括不停机(non-stop),当某一磁盘发生故障,可将此磁盘拆下来而不影响其他磁盘的操作。等新的磁盘换上去之后,系统即时做镜像,将数据重新复制上去,RAID 0+1在容错及存取的性能上为所有RAID level之冠。
在磁盘阵列的技术上,从RAID 1到RAID 5,不停机的意思表示在工作时如发生磁盘故障,系统能持续工作而不停顿,仍然可作磁盘的存取,正常地读写数据;而容错则表示即使磁盘故障,数据仍能保持完整,可让系统存取到正确的数据,而SCSI的磁盘阵列更可在工作中抽换磁盘,并可自动重建故障磁盘的数据。磁盘阵列之所以能做到容错及不停机,是因为它有冗余的磁盘空间可以利用,这也就是Redundant的意义。
RAID 2
RAID 2是把数据分散为位元/位元组(bit/byte)或块(block),加入海明码Hamming Code, 在磁盘阵列中作间隔写入(interleaving)到每个磁盘中,而且地址都一样,也就是在各个磁盘中,其数据都在相同的磁道(clinder or track)及扇区中。RAID 2又称为并行阵列(parallel array)其设计是使用共轴同步(spindle synchronize)的技术,存取数据时,整个磁盘阵列一起动作,在各个磁盘的相同位置作平行存取,所以有最好的存取时间,其总线是特别的设计,以大带宽(band wide)并传输所存取数据,所以有最好的传输时间。在大型档案的存取应用,RAID 2有最好的性能,但如果档案太小,会将其性能拉下来,因为磁盘的存取是以扇区为单位,而RAID 2的存取是所有磁盘平行动作,而且是作单位元或位元组的存取,故小于一个扇区的数据量会使其性能大打折扣。RAID 2是设计给需要连续且大量数据的电脑使用的,如大型电脑(mainframe to supercomputer),作影像处理或CAD/CAM的工作站等,并不适用于一般的多用户环境、网络服务器,小型机或PC。
RAID 2的安全采用内存阵列(memory array)的技术,使用多个额外的磁盘作单位错误校正(single-bit correction)及双位错误检测(double-bit detection);至于需要多少个额外的磁盘,则视其所采用的方法及结构而定,例如八个数据磁盘的阵列可能需要三个额外的磁盘,有三十二数据磁盘的高档阵列可能需要七个额外的磁盘。
RAID 3
RAID 3的数据储存及存取方式都和RAID 2一样,查在安全方面以奇偶校验取代海明码做错误校正及检测,所以只需要一个额外的校检磁盘(parity disk)。奇偶校验值的计算是以各个磁盘的相对应位作XOR的逻辑运算,然后将结果写入奇偶校验磁盘,任何数据的修改都要做奇偶校验计算,如下图:


在上图中,磁盘0~4是数据盘,磁盘5是校验盘,校验盘的数据是由数据盘0~4的同一位置的数据作XOR的运算计算出来的。
我们可以看出其数据这种分段的方式是要配合共轴同步的并行操作,譬如每个磁盘的传输率为10MB/sec,则4个数据盘的并行传输速率是40MB,所以RAID 3较诸单硬盘,其性能有很大的提升。
如某一磁盘故障,换上新的磁盘后,整个磁盘阵列(包括奇偶校验磁盘)需重新计算一次,将故障磁盘的数据恢复并写入新磁盘中;如奇偶校验磁盘故障,则重新计算奇偶校验值,以达容错的要求。
较之RAID 1及RAID 2,RAID 3有较高的磁盘空间利用率,其性能比RAID 2稍差,因为要做奇偶校验计算;共轴同步的平行存取在读档案时有很好的性能,但在写入时较慢,需要重新计算及修改奇偶校验磁盘的内容。RAID 3和RAID 2有同样的应用方式,适用大档案及大量数据输入输出的应用,并不适用于PC及网络服务器。
RAID 3因为采用共轴同步的并行操作,要把每个盘的数据同时送出,所以需有很大的总线频宽(band width)以达到并行的目的,在硬件结构上的差异,RAID 3和RAID 5是不会出现在同一控制器上的,有很多厂商号称提供RAID 0,1,3,5,其实3是假的,并无共轴同步并行操作能力,有厂商说明是Pseudo 3(假的3)并不欺骗客户。
RAID 4
RAID 4也使用一个校验磁盘,但和RAID 3不一样,RAID 4的方式是RAID 0加上一个校验磁盘,如下图:

磁盘0 磁盘1 磁盘2 磁盘3 磁盘4
A0 A1 A2 A3 P1
A4 A5 A6 A7 P2
… … … … …
4N-3 4N-2 4N-1 4N PN

RAID 4是以扇区作数据分段,各磁盘相同位置的分段形成一个校验磁盘分段(parity block),放在校验磁盘。这种方式可在不同的磁盘平行执行不同的读取命令,大幅提高磁盘阵列的读取性能;但写入数据时,因受限于校验磁盘,同一时间只能作一次,启动所有磁盘读取同一校验分段的所有数据分段,与要写入的数据做好校验计算再写入。RAID 4在读取数据时,有和RAID 0同样好的性能,但校验盘则形成写入时的瓶颈,因为如果写入少于一个整体分段的话,需要一个RMW cycle (Read-Modify-Write),譬如写入一个数据分段,控制器首先把分段的数据和该分段的校验验值读出来,然后用校验值减去分段的旧数据,再加上新的数据,并计算出新的校验值,最后才把数据及校验值写入。因为数据及校验值都要先读出来再写入,这就增加了磁盘的转动,读取时延(Latency)的时间。
但如果写入是一个整体分段(如A0)会有较好的性能,因为旧的数据不必读出来,控制器直接就利用要写入的数据计算新的校验值并直接写入所有的磁盘。OAraid?;磁盘阵列控制器是采用这种方式,所以OAraid?;磁盘阵列的RAID 4非常适于大型文件的应用。
RAID 4如果校验磁盘故障,就变成RAID 0,读取的性能没有影响,但写入的性能提升,因为不用计算校验值。但如果其中一个数据盘故障,不管是对故障盘的读取或写入都必须把同一所有的分段读出来以恢复故障盘的数据,这使得RAID 4性能降低。
RAID 5
RAID 5和RAID 4相似,但避免了RAID 4的瓶颈,方法是不用校验磁盘而将校验数据以循环的方式放在每一个磁盘中,如下图:

磁盘0 磁盘1 磁盘2 磁盘3 磁盘4
P1 A0 A1 A2 A3
A4 P2 A5 A6 A7
… … … … …
4N-3 4N-2 4N-1 PN 4N

磁盘阵列的第一个磁盘分段是校验值,第二个磁盘至后一个磁盘再折回第一个磁盘的分段是数据,然后第二磁盘的分段是校验值,从第三个磁盘再折回第二个磁盘的分段是数据,以此类推,直到放完为止。图中的第一个P1是由A0,A1,…,A3计算出来,第二个校验值分段,P2是A4,A5,…,A7计算出来,也就是校验值是由各磁盘同一位置的分段的数据所计算出来。这种方式能大幅增加小档案的存取性能,不但可同时读取,甚至有可能同时执行多个写入的动作,如可写入数据至磁盘1而其校验值分段在磁盘2,同时写入数据到磁盘4而其校验值分段在磁盘1,这对联机交易处理(OPTP, On-Line Transaction Processing)如银行系统、金融、股市等,或大型数据库的处理提供了最佳的解决方案(solution),因为这些应用的每一笔数据量小,磁盘输入输出频繁而且必须容错。

(接上)事实上,RAID 5的性能并无如此理想,因为多数数据的修改,都要把同一校验值分段的所有数据读出来修改后,做完校验计算再写回去,也就是RMW cycle,所以RAID 5和RAID 4在写入上有相同的难题,但因RAID 5校验值分散在各个盘的不同位置,相当程度地分散了负载,故有较好的性能,尤其是对小型数据。正因为牵一发而动全身,所以:
R:N(可同时读取所有磁盘)
W:1(可同时写入磁盘数)
S:N-1(利用率)
RAID 5的控制比较复杂,尤其是利用硬件对磁盘阵列的控制,因为这种方式的应用比其他的RAID level要掌握更多的事情,有更多的输入输出需求,既要速度快,又要处理数据,计算校验值,做错误校正等,所以价格较高;其应用最好是OLTP,至于用于大型文件,不见得有最佳的性能。
3. RAID的对比:
下面几个表是RAID的一些性质:
操作 工作模式 最少硬盘需求量 可用容量
RAID 0 磁盘延伸和数据分布 2 T
RAID 1 数据分布和镜像 2 T/2
RAID 2 共轴同步,并行传输,ECC 3 视结构而定
RAID 3 共轴同步,并行传输,Parity 3 Tx(n-1)/n
RAID 4 数据分布,固定Parity 3 Tx(n-1)/n
RAID 5 数据分布,分布Parity 3 Tx(n-1)/n
RAID的性能与可用性:
RAID level 用户数据利用率 频宽性能 交易处理性能 数据可用性
RAID 0 1 0.25 1 0.0005
RAID 1 0.5 0.25 0.85 1
RAID 2 0.67 1 0.25 0.9999
RAID 3 0.75 1 0.25 0.9999
RAID 4 0.75 0.25 0.61 0.9999
RAID 5 0.75 0.25 0.61 0.9999
以上数据基于4个磁盘,传输块大小为1K,75%的读概率,数据可用性的计算基于同样的损坏概率。
4. RAID的概述:
RAID 0
没有任何额外的磁盘或空间作安全准备,所以一般人不重视它,这是误解,其实它有最好的效率及空间利用率,对于追求效率的应用,非常理想,可同时用其他的RAID level或其他的备份方式以补其不足,保护重要的数据。
RAID 1
有最佳的安全性,100%不停机,即使有一个磁盘损坏也能照常作业而不影响其效能(对能并行存取的系统稍有影响),因为数据是作重复储存。RAID 1的并行读取几乎有RAID 0的性能,因为可同时读取相互镜像的磁盘;写入也只比RAID 0略逊,因为同时写入两个磁盘并没有增加多少工作。虽然RAID 1要增加一倍的磁盘做镜像,但作为采用磁盘阵列的进入点它是最便宜的一个方案,是新设磁盘阵列的用户之最佳选择。
RAID 5
在不停机及容错的表现都很好,但如有磁盘故障,对性能的影响较大,大容量的快取内存有助于维持性能,但在OLTP的应用上,因为每一笔数据或记录都很小,对磁盘的存取频繁,故有一定程度的影响。某一磁盘故障时,读取该磁盘的数据需把共用同一校验值分段的所有数据及校验值读出来,再把故障磁盘的数据计算出来;写入时,除了要重复读取的程序外,还要再做校验值的计算,然后再写入更新的数据及校验值;等换上新的磁盘,系统要计算整个磁盘阵列的数据以回复故障磁盘的数据,时间要很长,如系统的工作负载很重的话,有很多输入输出的需求在排队等候时,会把系统的性能拉下来。但如使用硬件磁盘阵列的话,其性能就可以得到大幅度的改进,因为硬件磁盘阵列如OAraid?;系列本身有内置的CPU与主机系统并行运作,所有存取磁盘的输入输出工作都在磁盘阵列本身完成,不花费主机的时间,配合磁盘阵列的快取内存的使用,可以提高系统的整体性能,而优越的SCSI控制更能增加数据的传输速率,即使在磁盘故障的情况下,主机系统的性能也不会有明显的降低。RAID 5要做的事情太多,所以价格较贵,不适于小系统,但如果是大系统使用大的磁盘阵列的话,RAID 5却是最便宜的方案。
总而言之,RAID 0及RAID 1最适合PC服务器及图形工作站的用户,提供最佳的性能及最便宜的价格,以低成本符合市场的需求。RAID 2及RAID 3适用于大档案且输入输出需求不频繁的应用,如影像处理及CAD/CAM等;而RAID 5则适用于银行、金融、股市、数据库等大型数据处理中心的OLTP应用;RAID 4与RAID 5有相同的特性及应用方式,但其较适用于大型文件的读取。
5. 磁盘阵列的额外容错功能
事实上,容错功能已成为磁盘阵列最受青睐的特性,为了加强容错的功能心脏使系统在磁盘故障的情况下能迅速地重建数据,以维持系统的性能,一般的磁盘阵列系统都可使用热备份(hot spare or hot standby drive)的功能,所谓热备份是在建立(configure)磁盘阵列系统的时候,将其中一磁盘指定为后备磁盘,此一磁盘在平常并不操作,但若阵列中某一磁盘发生故障时,磁盘阵列即以后备磁盘取代故障磁盘,并自动将故障磁盘的数据重建在后备磁盘之上,因为反应快速,加上快取内存减少了磁盘的存取,所以数据重建很快即可完成,对系统的性能影响不大。对要求不停机的大型数据处理中心或控制中心而言,热备份更是一项重要的功能,因为可避免晚间或无人守护时发生磁盘故障所引起的种种不便。
备份盘又有热备份与温备份之分,热备份盘和温备份盘的不同在于热备份盘和阵列一起运转,一有故障时马上备援,而温备份盘虽然带电但并运转,需要备援时才启动。两者分别在是否运转及启动的时间,但温备份盘因不运转,理论上有较长的寿命。另一个额外的容错功能是坏扇区转移(bad sector reassignment)。坏扇区是磁盘故障的主要原因,通常磁盘在读写时发生坏扇区的情况即表示此磁盘故障,不能再作读写,甚至有很多系统会因为不能完成读写的动作而死机,但若因为某一扇区的损坏而使工作不能完成或要更换磁盘,则使得系统性能大打折扣,而系统的维护成本也未免太高了。坏扇区转移是当磁盘阵列系统发现磁盘有坏扇区时,以另一空白且无故障的扇区取代该扇区,以处长磁盘的使用寿命,减少坏磁盘的发生率以及系统的维护成本。所以坏扇区转移功能使磁盘阵列具有更好的容错性,同时使整个系统有最好的成本效益比。其他如可外接电池备援磁盘阵列的快取内存,以避免突然断电时数据尚未写回磁盘而丢失;或在RAID 1时作写入一致性的检查等,虽是小技术,但亦不可忽视。
6. 硬件磁盘阵列还是软件磁盘阵列
市面上有所谓硬件磁盘阵列与软件磁盘阵列之分,因为软件磁盘阵列是使用一块SCSI卡与磁盘连接,一般用户误以为是硬件磁盘阵列。以上所述主要是针对硬件磁盘阵列,其与软件磁盘阵列有几个最大的区别:
?; 一个完整的磁盘阵列硬件与系统相接。
?; 内置CPU,与主机并行运作,所有的I/O都在磁盘阵列中完成,减轻主机的工作负载,增加系统整体性能。
?; 有卓越的SCSI总线主控(bus mastering)及DMA(Direct Memory Access)能力,加速数据的存取及传输性能。
?; 与快取内存结合在一起,不但增加数据的存取及传输性能,更因减少对磁盘的存取而增加磁盘的寿命。
?; 能充分利用硬件的特性,反应快速。
软件磁盘阵列是一个程序,在主机执行,通过一SCSI卡与磁盘相接形成阵列,它最大的优点是便宜,因为没有硬件成本(包括研发、生产、维护等),而SCSI卡很便宜(亦有的软件磁盘阵列使用指定的很贵的SCSI卡);它最大的缺点是使主机多了很多进程(process),增加了主机的负担,尤其是输入输出需求量大的系统。目前高面上的磁盘阵列系统大部分是硬件磁盘阵列,软件磁盘阵列较少。
7. IDE磁盘阵列还是SCSI磁盘阵列
目前使用在磁盘输入输出的界面主要有两种:
(1) IDE(Integrated Drive Electronics)
是广泛使用在PC上的磁盘驱动器界面,一般而言,其传输速度从磁盘到磁盘缓冲器(medium to drive buffer)是1.5~2.5MB/sec,从缓冲器到界面(drive buffer to drive interface)约4.0~6.0MB/sec,而且新的设计其速率有大幅的改进,如增强型IDE界面(mode 4)在PCI(Peripheral Component Interconnect)总线上的传输速率可达33MB/sec。
(2) SCSI(Small Computer Standard Interface)
SCSI是较高级(high level)的界面,可用于主机、磁盘、磁带、打印机等,因为是高级的界面,规格较为复杂,一般自带控制器,也较为复杂,这就是SCSI磁盘为什么比IDE磁盘贵的原因。但SCSI界面能较有效地利用硬件特性而提高其速度。勘探制品在还能对主机发给SCSI磁盘的命令进行缓冲、排队、重叠,并进行优化处理(命令队列)现在较浒的是标准SCSI-2和SCSI-3,FAST SCSI(SCSI-2)的同步传输速率为10MB/sec,数据传输宽度为8bit,WIDE SCSI的数据传输宽度可达16bit。Ultra SCSI(SCSI-3)的同步传输速率为20MB/sec,Ultra Wide SCSI的同步传输速率为40MB/sec,数据传输宽度可达32bit。SCSI磁盘虽有较高的传输速度,但受限于磁盘的存取速度及磁盘至SCSI界面的传输速度而不能充分发挥其性能(因为磁盘的机械动作难于有大幅度的改进);其令分析程序(command phase)也较复杂。对单机而言,磁盘数量越多,主机找到特定的数据的时间越长,但对磁盘阵列来言,由于是多个磁盘一起并行处理,则表现为磁盘数量越多,速度越快。
以上界面的直接反应是单任务时IDE比SCSI快,多任务时SCSI较快,这可从用IDE盘和SCSI盘做多用户、多任务的操作系统(如Unix,Windows/NT等)的系统盘时的启动时间的差别中明显看出。在单机时则不一定。我们看一个界面是否较快,不应只看其传输速度的高低而应就整个输入/输出的流程看,因为磁盘存取的机械动作比不上电脑的传输速率。IDE界面简单,反应快速,用于PC单机的小型的磁盘阵列其效果可能比SCSI为佳;但较大型的磁盘阵列就非SCSI界面莫属,因为阵列中的各个磁盘一起作存取的动作,能充分发挥SCSI的传输速率快及多工的特点。
此外IDE因为其配线规格的关系,不能作热插拔(hot swap),也就是不能在工作中带电插拔磁盘,而其线缆即使是增强型IDE也只有18寸,不能接在机箱之外,难于形成大的阵列,也就是春适用于PC低层次的用户。SCSI缆线在差分传输模式(differential transmission mode)下最大长度为25米,单端传输模式(single-ended transmission mode)时最大长度为6米,而一条SCSI总线可连接8台或16台系统或各种不同的装置,扩充性很强,可形成很大的磁盘阵列空间;SCSI规格完备,容错能力很好,可带电插拔磁盘,是外接式装置无可取代的界面。
8. 磁盘阵列卡还是外接式磁盘阵列控制器
磁盘阵列控制卡一般用于小系统,供单机使用。与主机共用电源,在关闭主机电源时存在丢失快取内存中的数据的危险。磁盘阵列控制卡只有常用线方式的接口,其驱动程序与主机、主机所用的操作系统都有关系,有软、硬件兼容性问题并潜在地增加了系统的不安定因素。在更换磁盘阵列卡时要冒磁盘损坏,资料失落,随时停机的风险。
外接式磁盘阵列控制器一般用于较大型系统,可分为两种:单主机通道磁盘阵列和多主机通道式磁盘阵列,单主机通道磁盘阵列只能接一台主机,有很大的扩充限制。多主机通道磁盘阵列可接多个系统同时使用,以群集(cluster)的方式共用磁盘阵列,并形成高可用性的容错架构。这使内接式阵列控制器及单接式磁盘阵列无用武之地。建联科技的ESCORT和NEPTUNE等系统,都是独立形式的磁盘阵列子系统,其本身与主机系统的硬件及操作环境无关,只通过SCSI线缆与主机相接,主机把它当作一般的磁盘,所有的输入输出动作都在磁盘阵列上完成,与主机的操作无关,所以可接任何可使用SCSI界面的主机。ESCORT和NEPTUNE两系统最多可有十二个SCSI通道,可同时连接7台主机使之一起共用磁盘阵列子系统;可连接数TB的大型阵列。这种方式的磁盘阵列即可给单机使用,双可给集群多机使用,对用户增加阵列中的磁盘数量限制较小,并可用于备援及并行的容错电脑系统,特别适合较大的系统用户,使这些用户可从封闭的环境中解放出来。
9. 单控制器还是冗余控制器
磁盘阵列一般都是一个控制器连接主机及磁盘,在磁盘阵列的容旬功能下达到数据的完整性。但磁盘阵列控制器同样会发生故障,在此情况之下,会有数据失落。为了解决此问题,有的厂商把两个控制器用电缆线连接起来,相互备援。做得差的,两个控制器不能使用快取内存,其性能很差。做得较好的,虽然能使用快取内存并镜像,但两个独立控制器在机箱内的连接,意味着一旦出故障时必须拆机箱换控制器,也意味着一旦出故障时必须停机。数据的完整和一致性及故障不停机中是磁盘阵列最重要的特性,为了达到此一目标,建联科技的NEPTUNE 8400P3D提供双控制冗余的架构。和别的冗余方式不一样,NEPTUNE 8400P3D的设计是可热插拔的冗余,不必拆开机箱,可直接更换控制器,同时双控制器以active/Active的方式工作,并互相备援,即时转换。为了达到无单点错误,NEPTUNE 8400P3D使用专用的快取内存和内存镜像的方式,以确保控制器在发生任何问题时都能保持数据的完整不丢失。NEPTUNE 8400P3D并提供独家的自动重绑(Auto Rebind,即控制器更换后,自动恢复故障前的工作设置)及自动平衡(auto Balance,即自动把工作负荷分散给相互备援的控制器,以达到负载均衡)的功能,在冗余的环境之下,提供单控制器所达不到的高性能及高安全性。其实大部分的应用并非需要绝对的安全性,单控制器磁盘阵列适用于只追求速度及大容量,而安全性较次的应用,冗余控制器磁盘阵列则适用于追求数据完整及不停机的高安全性需求的应用。
10. SCSI还是光纤通道(Fibre Channel)
SCSI的完善规格及高性能一直受到小型系统的青睐。在Ultra Wide SCSI正受欢迎的时候,并行SCSI已大受瞩目,Ultra-2的传输速率可达80MB/sec而Ultra-3是160MB/sec,使SCSI的性能以倍数上升。
但与此同时,光纤通道已形成市场,其以200MB~1GB/sec(优化后可达1.6GB/sec)的传输速率及在10公里内,可接129个装置的特性,成为存储装置的明日之星。光纤通道将取代SCSI,但在数年内并行SCSI以其高性能及便宜的特性,将和光纤通道并存。建联科技永远是走在前面的先行者,NEPTUNE8400磁盘阵列是模块的设计,其所有的通道都要以插卡的方式安装在主体上,这种易于更换升级保护投资的方式,使用户很容易把现在使用中的SCSI通道升级为Ultra-2, Ultra-3或光纤通道,在原有产品上得到新技术的好处。建联科技是首批光纤通道的磁盘阵列系统的厂商。
11. 连接主机还是连接网络
市面上的磁盘阵列都是和主机直接连接,形成以服务器为主的储存系统,其优点是适用于小型的计算环境,容易控制和管理,缺点是服务器本身形成数据存取的瓶颈,而可连接的服务器有限。
基于集群分散式文件系统及分布式处理和集中管理的概念及发展趋势,建联科技很早就推出世界级先进产品——网络附加存储设备NAS1000。把磁盘阵列直接挂在网络上,让网络上所有的用户都可透过一个安全的界面存取及分享数据,在网络中使用数据更易于集中管理。建联科技并在此架构下发展了分布式管理的集群备援容错系统,让网络上的众多服务器相互备援,此一世界上最先进的高可用性集群系统将在99年推出。
NAS和SAN
按照存储网络工业协会(SNIA)的定义:NAS 是可以直接联到网络上向用户提供文件级服务的存储设备,而SAN是一种利用Fibre Channel等互联协议连接起来的可以在服务器和存储系统之间以及存储系统与存储系统之间直接传送数据的网络。值得注意的是:NAS是一种存储设备,有其自己简化的实时操作系统,它将硬件和软件有效地集成在一起,用以提供文件服务。而SAN是一种体系结构,它是采用不同技术(目前采用最多的是FC技术)构建的与企业原有网络不同的一个专用于存储的网络,存储设备和SAN中的应用服务器之间采用的是块I/O的方式进行数据交换。
NAS结构向客户提供的是文件级的服务,存储设备上的块数据经过NAS上的文件系统之后被组合成文件,再经过网络到达客户机。目前采用的协议有两种:NFS和CIFS。其中NFS应用在UNIX环境下,最早是由SUN microsystem开发,而CIFS应用在NT/Windows环境下,是由Microsoft公司开发。NAS的结构及采用的协议使其具有以下优点:⑴ 异构平台下的文件共享:不同平台下的多个客户端可以很容易的共享NAS中的同一个文件。⑵ 充分利用现有的LAN网络结构,保护现有投资。⑶ 容易安装,使用和管理都很方便,实现即插即用。⑷ 广泛的连接性:由于基于IP/Ethernet以及标准的NFS和CIFS,可以适应复杂的网络环境。⑸ 内部资源的整合:可以将内部的磁盘整合成一个统一的存储池,以卷的方式提供给不同的用户,每一个卷可以格式化成不同的文件系统。⑹ 较低的总拥有成本。等……。
在实际应用中,NAS也表现出一些缺陷:⑴ 在文件访问的速度方面:采用的是NFS或CIFS协议,文件读写请求首先在提出请求的客户端要经过整个TCP/IP协议栈,经过网络到达NAS,同样要经过整个TCP/IP协议栈将封装的文件读写请求命令解封装后到达NAS的文件系统,数据取出来之后要经过类似的与之相反的过程,这带来巨大的网络协议开销,因此文件读写的速度和SAN的块访问相比很低。正是因为这个原因,NAS不适合在对访问速度要求高的应用场合,如数据库应用,在线事务处理等场合。⑵ 在数据备份方面:需要占用LAN的带宽,浪费宝贵的网络资源,有时甚至影响客户应用的顺利进行。⑶ 在资源的整合和NAS的管理方面:NAS只能对单个存储(单个NAS内部)设备之中的磁盘进行资源的整合,目前还无法跨越不同的NAS设备,难以将多个NAS设备整合成一个统一的存储池,因而难以对多个NAS设备进行统一的集中管理,只能进行单独管理……。目前NAS的主要应用异构环境下的数据访问、数据迁移、文件共享等场合。
SAN的结构向应用服务器提供数据块I/O服务,目前采用的互联技术主要是FC(Fibre Channel)。SAN独特的体系结构和构建技术使得SAN具有如下优点:⑴ 高性能、高速存取:目前最新的光纤通道带宽可达到2Gbps,新的10Gbps的标准也正在制定之中,这适应了目前网上信息爆炸式增长的需要;⑵ 高可用性:网络用户可以通过不止一台服务器访问存储设备设备,当一台服务器出现故障时,其他服务器可以接管故障服务器的任务;⑶ 集中存储和管理:通过整合各种不同的存储设备形成一个统一的存储池,向用户提供服务,存储容量可以很容易地扩充;⑷ 可扩展性:服务器和存储设备相分离,两者的扩展可以独立进行;⑸ 支持大量的设备,理论上具有1500万个地址;⑹ 实现LAN-free backup,数据备份不占用LAN带宽;⑺支持更远的距离,另外通过光纤通道网卡、集线器、交换机等互联设备,用户可根据需要可以灵活地放置服务器和存储设备;等……。
尽管如此,SAN仍有自身的一些缺陷:如异构环境下的文件共享方面,SAN中存储资源的共享一般指的是不同平台下的存储空间的共享,而非数据文件的共享。其构建、维护、管理都非常困难,且采用FC的情况下,不同厂商的设备的互操作性很难解决,连接距离也限制在10km左右等。目前主要用于整合存储和服务器资源、数据库应用、在线事务处理等低延迟、以及LAN-free backup或server-free backup等场合。

标签: