磁盘阵列

磁盘阵列 (Disk Array)原理 

1.为什么需要 磁盘阵列

如何增加磁盘的存取(access)速度,如何防止数据因磁盘的 故障 而失落及如何有效 
的利用磁盘空间,一直是 电脑 专业人员和用户的困扰;而大容量磁盘的价格非常昂贵,对 
用户形成很大的负担。 磁盘阵列 技术的产生一举解决了这些问题。 

过去十几年来, CPU 的处理速度增加了五十倍有多,内存(memory)的存取速度亦大 
幅增加,而数据储存装置--主要是磁盘(hard disk)--的存取速度只增加了三、四倍,形 
电脑 系统 的瓶颈,拉低了电脑系统的整体性能(through put),若不能有效的提升磁盘 
的存取速度, CPU 、内存及磁盘间的不平衡将使CPU及内存的改进形成浪费。 

目前改进磁盘存取速度的的方式主要有两种。一是磁盘快取控制(disk cache 
controller),它将从磁盘读取的数据存在快取内存(cache memory)中以减少磁盘存取 
的次数,数据的读写都在快取内存中进行,大幅增加存取的速度,如要读取的数据不在快 
取内存中,或要写数据到磁盘时,才做磁盘的存取动作。这种方式在单工环境(single- 
tasking envioronment)如DOS之下,对大量数据的存取有很好的性能(量小且频繁的存 
取则不然),但在多工(multi-tasking)环境之下(因为要不停的作数据交换(swapping) 
的动作)或数据库(database)的存取(因为每一记录都很小)就不能显示其性能。这种方 
式没有任何 安全 保障。 

其二是使用 磁盘阵列 的技术。磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘 
使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相 
关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。 磁盘阵列 所利用 
的不同的技术,称为 RAID  level,不同的level针对不同的 系统 及应用,以解决数据 安全  
的问题。 

一般高性能的 磁盘阵列 都是以硬件的形式来达成,进一步的把磁盘快取控制及磁盘 
阵列结合在一个控制器( RAID  controler或控制卡上,针对不同的用户解决人们对磁 
盘输出入 系统 的四大要求: 
(1)增加存取速度, 
(2)容错(fault tolerance),即 安全 性 
(3)有效的利用磁盘空间; 
(4)尽量的平衡 CPU ,内存及磁盘的性能差异,提高 电脑 的整体工作性能。 

2. 磁盘阵列 原理 

磁盘阵列 中针对不同的应用使用的不同技术,称为 RAID  level,RAID是Redundent 
Array of Inexpensive Disks的缩写,而每一level代表一种技术,目前业界公认的标 
准是 RAID  0~RAID 5。这个level并不代表技术的高低,level 5并不高于level 3,level 
1也不低过level 4,至于要选择那一种 RAID  level的产品,纯视用户的操作环境 
(operating environment)及应用(application)而定,与level的高低没有必然的关系。 
RAID  0及RAID 1适用于PC及PC相关的 系统 如小型的网络服务器(network server)及 
需要高磁盘容量与快速磁盘存取的工作站等,比较便宜; RAID  3及RAID 4适用于大型电 
脑及影像、CAD/CAM等处理; RAID  5多用于OLTP,因有金融机构及大型数据处理中心的 
迫切需要,故使用较多而较有名气,  RAID  2较少使用,其他如RAID 6,RAID 7,乃至RAID 
10等,都是厂商各做各的,并无一致的标准,在此不作说明。介绍各个 RAID  level之前, 
先看看形成 磁盘阵列 的两个基本技术: 

磁盘延伸(Disk Spanning): 

译为磁盘延伸,能确切的表示disk spanning这种技术的含义。如图 磁盘阵列 控制器, 
联接了四个磁盘,这四个磁盘形成一个阵列(array),而 磁盘阵列 的控制器( RAID  
controller)是将此四个磁盘视为单一的磁盘,如DOS环境下的C:盘。这是disk 
spanning的意义,因为把小容量的磁盘延伸为大容量的单一磁盘,用户不必规划数据在 
各磁盘的分布,而且提高了磁盘空间的使用率。并使磁盘容量几乎可作无限的延伸;而各 
个磁盘一起作取存的动作,比单一磁盘更为快捷。很明显的,有此阵列的形成而产生 
RAID 的各种技术。 


磁盘或数据分段(Disk Striping or Data Striping): 

因为 磁盘阵列 是将同一阵列的多个磁盘视为单一的虚拟磁盘(virtual disk),所以其数 
据是以分段(block or segment)的方式顺序存放在 磁盘阵列 中,数据按需要分段,从第一 
个磁盘开始放,放到最後一个磁盘再回到第一个磁盘放起,直到数据分布完毕。至于分段 
的大小视 系统 而定,有的系统或以1KB最有效率,或以4KB,或以6KB,甚至是4MB或8MB 
的,但除非数据小于一个扇区(sector,即521bytes),否则其分段应是512byte的倍数。 
因为磁盘的读写是以一个扇区为单位,若数据小于512bytes, 系统 读取该扇区后,还要 
做组合或分组(视读或写而定)的动作,浪费时间。从上图我们可以看出,数据以分段于在 
不同的磁盘,整个阵列的各个磁盘可同时作读写,故数据分段使数据的存取有最好的效 
率,理论上本来读一个包含四个分段的数据所需要的时间约=(磁盘的access time+数据 
的tranfer time)X4次,现在只要一次就可以完成。 

若以N表示磁盘的数目,R表示读取,W表示写入,S表示可使用空间,则数据分段的性能 
为: 
R:N(可同时读取所有磁盘) 
W:N(可同时写入所有磁盘) 
S:N(可利用所有的磁盘,并有最佳的使用率) 

Disk striping也称为 RAID  0,很多人以为RAID 0没有甚么,其实这是非常错误的观念, 
因为 RAID  0使磁盘的输出入有最高的效率。而 磁盘阵列 有更好效率的原因除数据分段 
外,它可以同时执行多个输出入的要求,因为阵列中的每一个磁盘都能独立动作,分段放 
在不同的磁盘,不同的磁盘可同时作读写,而且能在快取内存及磁盘作并行存取 
(parallel access)的动作,但只有硬件的 磁盘阵列 才有此性能表现。 

从上面两点我们可以看出,disk spanning定义了 RAID 的基本形式,提供了一个便宜、 
灵活、高性能的 系统 结构,而disk striping解决了数据的存取效率和磁盘的利用率问 
题, RAID  1至RAID 5是在此基础上提供磁盘 安全 的方案。 

RAID  1 

RAID  1是使用磁盘镜像(disk mirroring)的技术。磁盘镜像应用在RAID 1之前就在很 
系统 中使用,它的方式是在工作磁盘(working disk)之外再加一额外的 备份 磁盘 
(backup disk),两个磁盘所储存的数据完全一样,数据写入工作磁盘的同时亦写入 备份  
磁盘。磁盘镜像不见得就是 RAID  1,如Novell Netware亦有提供磁盘镜像的功能,但并 
不表示Netware有了 RAID  1的功能。一般磁盘镜像和RAID 1有二点最大的不同: 

RAID  1无工作磁盘和 备份 磁盘之分,多个磁盘可同时动作而有重叠(overlaping)读取的 
功能,甚至不同的镜像磁盘可同时作写入的动作,这是一种最佳化的方式,称为负载平衡 
(load-balance)。例如有多个用户在同一时间要读取数据, 系统 能同时驱动互相镜像的 
磁盘,同时读取数据,以减轻 系统 的负载,增加I/O的性能。 

RAID  1的磁盘是以磁盘延伸的方式形成阵列,而数据是以数据分段的方式作储存,因而 
在读取时,它几乎和 RAID  0有同样的性能。从RAID的结构就可以很清楚的看出RAID 1 
和一般磁盘镜像的不同。 

下图为 RAID  1,每一笔数据都储存两份: 
从图可以看出: 
R:N(可同时读取所有磁盘) 
W:N/2(同时写入磁盘数) 
S:N/2(利用率) 

读取数据时可用到所有的磁盘,充分发挥数据分段的优点;写入数据时,因为有 备份 ,所 
以要写入两个磁盘,其效率是N/2,磁盘空间的使用率也只有全部磁盘的一半。 

很多人以为 RAID  1要加一个额外的磁盘,形成浪费而不看好RAID 1,事实上磁盘越来越 
便宜,并不见得造成负担,况且 RAID  1有最好的容错(fault tolerence)能力,其效率也 
是除 RAID  0之外最好的。 

磁盘阵列 的技术上,从 RAID  1到RAID 5,不停机的意思表示在工作时如发生磁盘 故障
系统 能持续工作而不停顿,仍然可作磁盘的存取,正常的读写数据;而容错则表示即使磁 
故障 ,数据仍能保持完整,可让 系统 存取到正确的数据,而 SCSI 磁盘阵列 更可在工 
作中抽换磁盘,并可自动重建 故障 磁盘的数据。 磁盘阵列 之所以能做到容错及不停机, 
是因为它有冗余的磁盘空间可资利用,这也就是Redundant的意义。 

RAID  2 

RAID  2是把数据分散为位(bit)或块(block),加入海明码Hamming Code,在 磁盘阵列 中 
作间隔写入(interleaving)到每个磁盘中,而且地址(address)都一样,也就是在各个磁 
盘中,其数据都在相同的磁道(cylinder or track)及扇区中。 RAID  2的设计是使用共 
轴同步(spindle synchronize)的技术,存取数据时,整个 磁盘阵列 一起动作,在各作磁 
盘的相同位置作平行存取,所以有最好的存取时间(accesstime),其总线(bus)是特别的 
设计,以大带宽(band wide)并行传输所存取的数据,所以有最好的传输时间(transfer 
time)。在大型档案的存取应用, RAID  2有最好的性能,但如果档案太小,会将其性能拉 
下来,因为磁盘的存取是以扇区为单位,而 RAID  2的存取是所有磁盘平行动作,而且是作 
单位元的存取,故小于一个扇区的数据量会使其性能大打折扣。 RAID  2是设计给需要连 
续且大量数据的 电脑 使用的,如大型电脑(mainframe to supercomputer)、作影像处理 
或CAD/CAM的工作站(workstation)等,并不适用于一般的多用户环境、网络服务器 
(network server),小型机或PC。 

RAID  2的 安全 采用内存阵列(memory array)的技术,使用多个额外的磁盘作单位错误校 
正(single-bit correction)及双位错误检测(double-bit detection);至于需要多少个 
额外的磁盘,则视其所采用的方法及结构而定,例如八个数据磁盘的阵列可能需要三个 
额外的磁盘,有三十二个数据磁盘的高档阵列可能需要七个额外的磁盘。 


RAID  3 

RAID  3的数据储存及存取方式都和RAID 2一样,但在 安全 方面以奇偶校验(parity 
check)取代海明码做错误校正及检测,所以只需要一个额外的校检磁盘(parity disk)。 
奇偶校验值的计算是以各个磁盘的相对应位作XOR的逻辑运算,然后将结果写入奇偶校 
验磁盘,任何数据的修改都要做奇偶校验计算,如图: 

如某一磁盘 故障 ,换上新的磁盘后,整个 磁盘阵列 (包括奇偶校验磁盘)需重新计算一次, 
故障 磁盘的 数据恢复 并写入新磁盘中;如奇偶校验磁盘故障,则重新计算奇偶校验值, 
以达容错的要求. 

较之 RAID  1及RAID 2,RAID 3有85%的磁盘空间利用率,其性能比RAID 2稍差,因为要 
做奇偶校验计算;共轴同步的平行存取在读档案时有很好的性能,但在写入时较慢,需要 
重新计算及修改奇偶校验磁盘的内容。 RAID  3和RAID 2有同样的应用方式,适用大档 
案及大量数据输出入的应用,并不适用于PC及网络服务器。 

RAID  4 

RAID  4也使用一个校验磁盘,但和RAID 3不一样,如图: 

RAID  4是以扇区作数据分段,各磁盘相同位置的分段形成一个校验磁盘分段(parity 
block),放在校验磁盘。这种方式可在不同的磁盘平行执行不同的读取命今,大幅提高磁 
盘阵列的读取性能;但写入数据时,因受限于校验磁盘,同一时间只能作一次,启动所有 
磁盘读取数据形成同一校验分段的所有数据分段,与要写入的数据做好校验计算再写 
入。即使如此,小型档案的写入仍然比 RAID  3要快,因其校验计算较简单而非作位(bit 
level)的计算;但校验磁盘形成 RAID  4的瓶颈,降低了性能,因有RAID 5而使得RAID 4 
较少使用。 

RAID  5 
RAID 5避免了RAID 4的瓶颈,方法是不用校验磁盘而将校验数据以循环的方式放在每一 
个磁盘中,如下图: 

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

事实上 RAID  5的性能并无如此理想,因为任何数据的修改,都要把同一parityblock的 
所有数据读出来修改后,做完校验计算再写回去,也就是RMW cycle(Read-Modify-Write 
cycle,这个cycle没有包括校验计算);正因为牵一而动全身,所以: 
R:N(可同时读取所有磁盘) 
W:1(可同时写入磁盘数) 
S:N-1(利用率) 

RAID  5的控制比较复杂,尤其是利用硬件对 磁盘阵列 的控制,因为这种方式的应用比其 
他的 RAID  level要掌握更多的事情,有更多的输出入需求,既要速度快,又要处理数据, 
计算校验值,做错误校正等,所以价格较高;其应用最好是OLTP,至于用于图像处理等, 
不见得有最佳的性能。 

2. 磁盘阵列 的额外容错功能:Spare or Standby driver 

事实上容错功能已成为 磁盘阵列 最受青睐的特性,为了加强容错的功能以及使 系统 在磁 
故障 的情况下能迅速的重建数据,以维持 系统 的性能,一般的 磁盘阵列 系统都可使用 
备份 (hot spare or hot standby driver)的功能,所谓热备份是在建立(configure) 
磁盘阵列 系统 的时候,将其中一磁盘指定为后备磁盘,此一磁盘在平常并不操作,但若阵 
列中某一磁盘发生 故障 时, 磁盘阵列 即以后备磁盘取代故障磁盘,并自动将故障磁盘的 
数据重建(rebuild)在后备磁盘之上,因为反应快速,加上快取内存减少了磁盘的存取, 
所以数据重建很快即可完成,对 系统 的性能影响很小。对于要求不停机的大型数据处理 
中心或控制中心而言,热 备份 更是一项重要的功能,因为可避免晚间或无人值守时发生 
磁盘 故障 所引起的种种不便。 

另一个额外的容错功能是 坏扇区 转移(bad sector reassignment)。坏扇区是磁盘 故障  
的主要原因,通常磁盘在读写时发生 坏扇区 的情况即表示此磁盘 故障 ,不能再作读写,甚 
至有很多 系统 会因为不能完成读写的动作而死机,但若因为某一扇区的损坏而使工作不 
能完成或要更换磁盘,则使得 系统 性能大打折扣,而系统的 维护 成本也未免太高了。坏扇 
区转移是当 磁盘阵列 系统 发现磁盘有 坏扇区 时,以另一空白且无 故障 的扇区取代该扇区, 
以延长磁盘的使用寿命,减少坏磁盘的发生率以及 系统 维护 成本。所以 坏扇区 转移功 
能使 磁盘阵列 具有更好的容错性,同时使整个 系统 有最好的成本效益比。其他如可外接 
电池备援 磁盘阵列 的快取内存,以避免突然断电时数据尚未写回磁盘而损失;或在 RAID  
1时作写入一致性的检查等,虽是小技术,但亦不可忽视。 


3.硬件 磁盘阵列 还是软件磁盘阵列 

市面上有所谓硬件 磁盘阵列 与软件磁盘阵列之分,因为软件磁盘阵列是使用一块 SCSI  
卡与磁盘 连接 ,一般用户误以为是硬件 磁盘阵列 。以上所述主要是针对硬件磁盘阵列, 
其与软件 磁盘阵列 有几个最大的区别: 

l 一个完整的 磁盘阵列 硬件与 系统 相接。 
l 内置 CPU ,与主机并行运作,所有的I/O都在 磁盘阵列 中完成,减轻主机的工作负载, 
增加 系统 整体性能。 
l 有卓越的总线主控(bus mastering)及 DM A(Direct Memory Access)能力,加速数据 
的存取及传输性能。 
l 与快取内存结合在一起,不但增加数据的存取及传输性能,更因减少对磁盘的存取 
而增加磁盘的寿命。 
l 能充份利用硬件的特性,反应快速。 

软件 磁盘阵列 是一个程序,在主机执行,透过一块 SCSI 卡与磁盘相接形成阵列,它最大 
的优点是便宜,因为没有硬件成本(包括研发、生产、 维护 等),而 SCSI 卡很便宜(亦有的 
软件 磁盘阵列 使用指定的很贵的 SCSI 卡);它最大的缺点是使主机多了很多进程 
(process),增加了主机的负担,尤其是输出入需求量大的 系统 。目前市面上的 磁盘阵列  
系统 大部份是硬件 磁盘阵列 ,软件磁盘阵列较少。 


4. 磁盘阵列 卡还是磁盘阵列控制器 

磁盘阵列 控制卡一般用于小 系统 ,供单机使用。与主机共用 电源 ,在关闭主机电源时存 
在丢失Cache中的数据的的危险。 磁盘阵列 控制卡只有 常用 总线方式的接口,其驱动程 
序与主机、主机所用的操作 系统 都有关系,有软、硬件兼容性问题并潜在地增加了系统 
的不安定因素。在更换 磁盘阵列 卡时要冒磁盘损坏,资料失落,随时停机的风险。 

独立式 磁盘阵列 控制一般用于较大型 系统 ,可分为两种: 
单通道 磁盘阵列 和多通道式磁盘阵列,单通道磁盘阵列只能接一台主机,有很大的 
扩充限制。多通道 磁盘阵列 可接多个 系统 同时使用,以群集(cluster)的方式共用磁盘阵 
列,这使内接式阵列控制及单接式 磁盘阵列 无用武之地。目前多数独立形式的磁盘阵列 
系统 ,其本身与主机系统的硬件及操作环境?
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值