引言及RAID的源由
引言
磁盘阵列,或说是硬盘数组,或是 磁盘数组,在今天,相信已经不再是那么令人感到陌生了.因为在这几年来,网络以及服务器之成长迅速,相随的对资料之安全性,也更加重视和要求.
固然,每日的磁带或其它媒体方式的备份仍然重要,但对于硬盘故障后的恢复间隔,也希望在可接受范围内,得到最大的缩短. 此时最好的方案,则非磁盘阵列莫属.因为磁盘阵列的优点:具有单一大容量的好处,提供了硬盘容错功能,易于管理的优点.
源由
1987年,有一群研究者在美国University of California - Berkeley 发表了一篇文章: A Case for Redundant Arrays of Inexpensive Disks,而IBM 是此一项目研究的主要协助者.这篇文章,介绍了一个新的头字语 - R A I D. 同时并定义了五种RAID代号- RAID level.
这篇文章的主要论题,是针对当时的硬盘科技,在容量及速度上,无法追上CPU及内存的发展的现象,提出多种改善方法.因为长期来看,这种脚步的差距,会造成硬盘无法实时供应对资料的急迫需要.
所以,它利用了各式技巧,将许多较小容量的硬盘,以RAID 技术,规划为一座大的硬盘机.同时,在实际储存资料时,透过这项技术,将资料切割成多区段并分别同时存放于各个硬盘机上.在实际读取资料时,也是同时自此多颗硬盘机读出资料.由此可见,这项技术 RAID, 着实提高了大型硬盘的效率.
值得一提,它的观念,也提供了一套思考及开发的方向:资料容错.藉由同位检核 Parity 的概念及方法,能在该群数组硬盘中任一颗硬盘故障时,仍能读出资料,并可于数据重构时,将原故障硬盘内之应有资料,经计算后置回替代的新硬盘中,使回复成原貌.
这篇文章也指出了许多在各不同代号型式的RAID,其开发上的问题,大多相关于强调速度及成本上的改善.这和今日的数组供货商所多强调的可靠性 Reliability 及资料可供应性 Data Availability, 似乎有些不同.当然这也是因为时代背景的差异.不过,这也使得各磁盘阵列供货商,各自有较大的发挥空间,针对容错性,成本,及效率,有不同的处理方式及结果.
RAID的分类
以下就几项基本的名词作一分项解释.
|
数组种类 |
英文简述 |
硬盘容错吗? |
N颗硬盘
可用容量 |
|
RAID level 0 |
Stripe / Span |
No |
N |
|
RAID level 1 |
Mirror |
Yes |
N÷2 |
|
RAID level 3 |
Parallel with Parity |
Yes |
N?D1 |
|
RAID level 4 |
Parallel with Parity |
Yes |
N?D1 |
|
RAID level 5 |
Striped with Rotating Parity |
Yes |
N?D1 |
|
RAID level 0+1 |
Mirror + Stripe |
Yes |
N÷2 |
RAID level 0
这个代号是被定义为非容错的硬盘群组.而组构的多颗硬盘机,被依一定的切割区段,连贯成一颗大容量的数组硬盘.它没有同位检核的位,所以无法救回因其中任一硬盘故障而毁损的整个资料.
这是最有效率的一种数组类别,因为资料可以多个区段方式,在同一时间,将之分别存放在该群所有数组硬盘里.在读取资料时,亦可在同一时间,由该群所有数组硬盘送出资料至数组控制器.换言之,此种数组类型的效率,是与该群内数组硬盘数成正比.所以在读写强而集中的应用领域 (如:影音播放系统),可藉 RAID level 0 得到较佳的输出效率及品质
RAID level 1
就是磁盘镜像 Disk Mirroring. 它可将两颗硬盘机为一组,在有资料欲写入时,在同一时间将之存放在本组的两颗硬盘中,所以在同镜像对 Mirrored Pair 中的两硬盘,其内部资料是完全一样的.而在读取资料时,则可自两颗硬盘同时读出,即使是来自不同的客户端所提出之不同读取要求.
这一型式的磁盘阵列,不但不会降低写入的速度,更能提高读取的效率.事实上,它是容错型式的磁盘阵列中,效率最高的.不过其硬盘机的容量利用率,则只有实际容量的一半.所以, RAID level 1 常应用于高安全要求的多人使用环境,例如:操作系统磁盘 OS Disk
RAID level 0+1
这是一种Dual Level RAID, 也有人称之为RAID level 10. 这可不是十,它是零加一,亦即是两组依一定的切割区段,连贯成不同的两颗大容量的数组硬盘,互相为镜像.在每次写入数据,磁盘阵列控制器会将资料同时写入该两组大容量数组硬盘组内.
同RAID level 1 一样,虽然其硬盘使用率亦只有50%,但它却是最具高效率的规划方式.真理:真正的安全性加速度是建立在成本上的
RAID level 3
这种规划方式,常用在绘图,影像处理,…等,对资料进行大量读或写的应用领域.它由数组控制器内建的XOR逻辑,根据切割之区段大小,计算出同位检核位或字节.这项功能,提供了资料容错效果.而这个区段的大小,是以bit或byte为单位.
每项资料中的同位检核资料,统一存放在一特定的同位碟(Parity Disk)上.而资料则是分别散存在各资料碟Data Disk内.单从少部份的资料碟,是无法取得完整原资料的
RAID level 4
跟上述的level 3 大部份相同.不过其支持的区段大小相当多样,是以block为单位计算的.它可以是单一block为区段,也有以多个block为区段大小.所以有些资料是可以从某资料碟中取得,这促成一个较RAID
level 3 势的是:允许重叠读取 Overlapped Read Operation.
但是在作写入时,因为需同时更新同位碟的信息,所以不具有重叠写入的能力.换言之,在同时间中多笔资料要求写入时,因为每笔资料之同位信息需写在同一颗同位碟中,所以并不会有任何速度的优势.
所以在一般使用多人数据库, RAID level 4 是较不适合的规划.但是在如:计算机绘图,非线性剪接,动画处理,数字图书馆, ... 等用途上,这样的规划,却是最佳的选择

RAID level 5
通常亦为轮转同位型数组 Rotating Parity Array. 它和RAID level
4 一样的,在每次的写入前,由数组控制器内建的XOR逻辑,根据切割之区段大小(单一或多个block为单位),计算出同位检核信息.每项资料中(以Stripe为单位)的同位检核资料,随着资料分别散存在各数组硬盘内,没有特定同位碟.相较于上述RAID
level 4, 这个型式可允许多个写入,因为这多个写入动作时,同位信息是置在不同的数组硬盘中.
但是在读取资料时,每项资料可能是直接来自各具该项资料的硬盘中,但也可能是会读入同位信息,而必需经由XOR的计算.在连续大型档案要求输出时,它显然稍有不利
Parity容错基本原理
以上介绍了常见的数组代号型式,相信许多读者仍不了解这个同位检核信息 Parity 如何提供容错能力?而已毁损的硬盘中之原资料,又如何在新的替代硬盘中,作原资料的重建Rebuild ?
每个Byte 是由8 个bit 所构成的,如果在这八个bit 后,经由运算XOR上述的八个data bit,再加一个同位检核位Parity bit, 则这组九个bits 所构成的Byte, 就具备了容错能力了,见下例:
|
Byte (字母) |
Bit (位) |
说明 |
|
K |
1 0 0 1 0 0 1 1 |
只是个例子 |
|
? |
1 0 0 1 0 0 1 ? |
少了一个bit,原字母不见了 |
|
K |
1 0 0 1 0 0 1 1 Pk |
经由数组控制器计算出Parity |
|
K |
1 0 0 1 0 0 1 ? Pk |
即使少了一个bit,仍可读出原资料 |
|
K |
1 0 0 1 0 0 1 1 Pk |
经由XOR计算,又推敲并回复了原貌 |
|
K |
1 0 0 1 Pk'
0 0 1 1 Pk |
同理,可以将一笔资料,以不同的切割区块大小,将资料分为二,并各有一个Parity bit |
上面的例子,是以一个Byte 为例,可以将此观念延伸到block, blocks, disk. 就可以了解到,当一颗数组硬盘机故障时,其内原有的Data Blocks及不同Data Stripe中的Parity Blocks, 虽已丧失,但是可以经由数组控制器(通常具有独立CPU)的XOR 功能,将存在其它数组硬盘内的Parity Blocks 及不同的Data Stripe中的Data Blocks加以计算,得出应置回的原资料.
毁损数据重构: Data Rebuild, Data Reconstruction
当然,若主系统在不关机情形下(通常这是使用者采购磁盘阵列的主要目的)在作数据重构的时候,主系统的资料进出效率会受到影响.在整台数组中,数据重构与正常存取的效率是互补的.
不过现在的数组控制器大多已可支持可调整的重建优先权设定.以笔者所经验过的重建9GB硬盘为例子,它可以在五十分钟内完成.但在以正常存取为极度优先时,它可能需时三小时.不过如果是采用较低阶的数组控制器,恐怕所需时间,会远远超过上述的数字,提高危险系数.
因为在正常的RAID level 3, 4, 5 型式下,磁盘阵列容许同一数组组态群内,仅一颗硬盘故障.而系统管理者,必须在尽量短的时间内(第二颗硬盘故障前),
立即得到通知:一颗数组硬盘已经故障了.而这个通知方式及过程,影响前来处理的时间.目前有多种设计:基本的警笛声,事件记录联结并通知主系统之操作系统,电子邮件,传呼器, ... 都是善尽通知义务的方法.
立即将数据重构完成.否则,就得面临向大量资料说再见的精神压力了.
不过,如何缩短从在被通知后到抵达现场,并开始作数据重构的这段时间及压力,则难以绝对掌握.有解吗?
备援硬盘: Spare Disk
如果在数组中,加上备援硬盘.当任一数组硬盘故障时,该备援硬盘可以自动上线,将故障硬盘立即取代,并开始依设定的重建优先权作数据重构,就可有效缩短上述的前往处理的时间,也可减少因急迫性所造成的压力.
不过,这颗备援硬盘,平时是无法拿来作存放空间的.因为一旦作了可使用的标记,备援设定会自动消失.所以,回到前述的真理:安全性加速度建立在成本上的.
总体备援硬盘: Global Spare Disk。就是备援硬盘,但是可以对同一磁盘阵列中的所有数组组态群作备援.总是比较省的方式.
定时备份
既然重要,为何不备份?与其在灾害发生时,束手无策,自怨自艾,何不在规定时间作好重要资料的备份,以防万一? 即使使用了磁盘阵列,提高数据的可供应性,备份仍该作的.毕竟,它是重要的资料.
RAID控制器型式
1. 软件架构:Software Based
在多年前, Novell 的Netware就提供了Mirror的功能,即使在今天,相信仍有许网络系统,是采用此一方式.不过这在资料量较大的环境中,其50% 的硬盘使用率,究竟是稍少了些.另外, Corel 在约五年前,大力推广其Corel RAID!以不到美金一千元的低价,切入市场.
然而究竟使用软件的数组架构,会占用到主系统的CPU 及内存资源,而导致系统效率的下降.所以采用非主系统供货商的软件数组产品者,相对是较少的.
2. 主机独立式架构: Host Independent
数组控制器对主系统,是藉由连接至其存取接口(目前以SCSI 为主)作信道.换言之,它在主系统的存取接口上,是一个独立的直接存取储存体DASD Direct Access Storage Device. 而这个大的储存体内,可以有不只一个的逻辑磁盘LUN Logical Unit Number. 数组控制器,对下管理多颗数组硬盘机们.而主系统是不会看到或直接管理该硬盘的.例如:CMD, EMC, Symbios, Digital StorageWorks, ... 都有相关的产品.
而且这些数组领导厂商,也都各自有不同设计的容错式数组控制器,以避免因数组控制器故障Fail Over时所造成的伤害,甚至可作线上抽换 On Line Hot Swap 数组控制器. 不过这些可是较高文件的产品了.记得那句名言?真正的安全性加速度是建立在成本上的.
采用这项架构,可以接在大多数具有合标准的存取接口的主机上,而且不需额外另挂驱动程序Drivers,在各种操作系统的兼容性上,也有较佳的成果.使用这种架构,在主机系统上的设定较容易.
此外,主机独立式磁盘阵列,还有可连接多主机功能的设计. 不但可以扩增连接高达四台主机,更可分散读写信道,提高主系统整体效率.