电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

磁盘阵列(Disk Array)原理


发布日期:2024/6/21
 

为什么需要磁盘阵列?

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

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

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

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

一般高性能的磁盘阵列都是以硬件的形式来达成进一步的把磁盘快取控制及磁盘阵列结合在一个控制器(RAID controler)或控制卡上针对不同的用户解决人们对磁盘输出入系统的四大要求:

()增加存取速度

()容错(fault tolerance)即安全性

()有效的利用磁盘空间;

()尽量的平衡CPU内存及磁盘的性能差异提高电脑的整体工作性能

磁盘阵列原理

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

磁盘延伸(Disk Spanning):

译为磁盘延伸能确切的表示disk spanning这种技术的含义如下图所示OAraid 磁盘阵列控制器联接了四个磁盘:

磁盘 磁盘 磁盘 磁盘

这四个磁盘形成一个阵列(array)而磁盘阵列的控制器(RAID controller)是将此四个磁盘视为单一的磁盘如DOS环境下的C:盘这是disk spanning的意义因为把小容量的磁盘延伸为大容量的单一磁盘用户不必规划数据在各磁盘的分布而且提高了磁盘空间的使用率OAraid的SCSI磁盘阵列更可连接几十个磁盘形成数十GB到数百GB的阵列使磁盘容量几乎可作无限的延伸;而各个磁盘一起作取存的动作比单一磁盘更为快捷很明显的有此阵列的形成而产生RAID的各种技术我们也可从上图看出inexpensive(便宜)的意义因为四个MBbytes的磁盘比一个GBytes的磁盘要便宜尤其以前大磁盘的价格非常昴贵但在磁盘越来越便宜的今天inexpensive已非磁盘阵列的重点虽然对于需要大磁盘容量的系统仍是考虑的要点

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

磁盘

AA

BB

CC

DD

磁盘

AA

BB

CC

DC

磁盘

AA

BB

CC

DD

磁盘

AA

BB

CC

DD

因为磁盘阵列是将同一阵列的多个磁盘视为单一的虚拟磁盘(virtual disk)所以其数据是以分段(block or segment)的方式顺序存放在磁盘阵列中如下图:

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

若以N表示磁盘的数目R表示读取W表示写入S表示可使用空间则数据分段的性能为:

R:N(可同时读取所有磁盘)

W:N(可同时写入所有磁盘)

S:N(可利用所有的磁盘并有最佳的使用率)

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

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

RAID

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

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

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

磁盘

A

A

A

B

磁盘

A

A

B

B

磁盘

A

A

A

B

磁盘

A

A

B

B

下图为RAID 每一笔数据都储存两份:

从上图可以看出:

R:N(可同时读取所有磁盘)

W:N/(同时写入磁盘数)

S:N/(利用率)

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

很多人以为RAID 要加一个额外的磁盘形成浪费而不看好RAID 事实上磁盘越来越便宜并不见得造成负担况且RAID 有最好的容错(fault tolerence)能力其效率也是除RAID 之外最好的我们可视应用的不同在同一磁盘阵列中使用不同的RAID level如华艺科技公司的OAraid系列都可同一磁盘阵列中定义八个逻辑磁盘(logic disk)分别使用不同的RAID level分为C:D:及E:三个逻辑磁盘(或LUNLUNLUN)

RAID 完全做到了容错包括不停机(nonstop)当某一磁盘发生故障可将此磁盘拆下来而不影向其他磁盘的操作;待新的磁盘换上去之后系统即时做镜像将数据重新复上去RAID 在容错及存取的性能上是所有RAID level之冠

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

RAID

上一篇:为什么Postfix提示“biff

下一篇:甲骨文穷追猛打矛头直指SAP高管