1、cache
Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。在很多情况下,这两个名词并没有严格区分,常常把读写混合类型称为buffer cache,本文后续的论述中,统一称为cache。
Oracle并不关心底层存储的类型,可能是一套存储系统,可能是本地磁盘,可能是RAID 10,也可能是RAID 5,可能是文件系统,也可能是裸设备,或是ASM。总之,Oracle把底层的存储系统称为存储子系统。
在存储系统中,cache几乎无处不在(在后面的论述中,我们统称为cache),文件系统有cache,存储有cache,RAID控制器上有cache,磁盘上也有cache。为了提高性能,Oracle的一个写操作,很有可能写在存储的cache上就返回了,如果这时存储系统发生问题,Oracle如何来保证数据一致性的问题。
Oracle数据库最重要的特性是:Write ahead logging,在data block在写入前,必须保证首先写入redo log,在事务commit时,同时必须保证redo log被写入。Oracle为了保证数据的一致性,对于redo log采用了direct IO,Direct IO会跳过了OS上文件系统的cache这一层。但是,OS管不了存储这一层,虽然跳过了文件系统的cache,但是依然可能写在存储的cache上。
一般的存储都有cache,为了提高性能,写操作在cache上完成就返回给OS了,我们称这种写操作为write back,为了保证掉电时cache中的内容不会丢失,存储都有电池保护,这些电池可以供存储在掉电后工作一定时间,保证cache中的数据被刷入磁盘,不会丢失。不同于UPS,电池能够支撑的时间很短,一般都在30分钟以内,只要保证cache中的数据被写入就可以了。存储可以关闭写cache,这时所有的写操作必须写入到磁盘才返回,我们称这种写操作为write throuogh,当存储发现某些部件不正常时,存储会自动关闭写cache,这时写性能会下降。
RAID卡上也有cache,一般是256M,同样是通过电池来保护的,不同于存储的是,这个电池并不保证数据可以被写入到磁盘上,而是为cache供电以保护数据不丢失,一般可以支撑几天的时间。还有些RAID卡上有flash cache,掉电后可以将cache中的内容写入到flash cache中,保证数据不丢失。如果你的数据库没有存储,而是放在普通PC机的本地硬盘之上的,一定要确认主机中的RAID卡是否有电池,很多硬件提供商默认是不配置电池的。当然,RAID卡上的cache同样可以选择关闭。
磁盘上的cache,一般是16M-64M,很多存储厂商都明确表示,存储中磁盘的cache是禁用的,这也是可以理解的,为了保证数据可靠性,而存储本身又提供了非常大的cache,相比较而言,磁盘上的cache就不再那么重要。SCSI指令中有一个FUA(Force Unit Access)的参数,设置这个参数时,写操作必须在磁盘上完成才可以返回,相当于禁用了磁盘的写cache。虽然没有查证到资料,但是我个人认为一旦磁盘被接入到RAID控制器中,写cache就会被禁用,这也是为了数据可靠性的考虑,我相信存储厂商应该会考虑这个问题。
至此,我们可以看到Oracle的一个物理IO是经历了一系列的cache之后,最终被写入到磁盘上。cache虽然可以提高性能,但是也要考虑掉电保护的问题。关于数据的一致性,是由Oracle数据库,操作系统和存储子系统共同来保证的。
2、存储的评估指标
IOPS(每秒io个数):系统在单位时间内能处理的最大IO频度,一般指单位时间内完成的随即IO个数。决定IOPS的主要因素:磁盘个数,cache命中率,阵列算法。
每个磁盘的最大iops个数是有限制的,一般情况下,存储都会有cache,那么磁盘阵列能够支持的iops会大于单单用磁盘计算出来的iops。
下面用两个计算来说明:···假定cache的命中率在正常业务下达到30%,那么120块15K rpm(iops=150)的硬盘能支撑多少iops?
计算如下:iops=120*150/(1-30%)=1800/0.7=25700 也就是说,正常情况下,整个存储最大可以持证25700个iops,如果在网上涨,存储系统将可能变得不能负荷。
···假定现在阵列接收到的iops为15000个,存储命中率为20%,计算每块磁盘的iops个数?
计算如下:15000*(1-20%)=100 所以,每块磁盘负荷的iops个数为100.
影响iops的还有一些阵列的算法,cache算法,寻道算法,预读算法等,详情可以看阵列的参考手册。
带宽(throughput):每个物理磁盘最大能支撑的流量大小,2Gb 4Gb 光纤卡。一个阵列上需配置多块光纤卡,才能满足传输要求。
响应时间:经验显示,一个io的响应时间应在20ms以内,应用基本可以正常工作。作为一个核心的高可用OLTP系统,最佳的单io响应时间建议在10ms以内。
3、存储架构
先介绍几个名词:
前端口(卡):主要是存储连接主机的部分,如存储上的可连接主机或者光纤交换机的FC光纤口,现在流行的为2Gb/4Gb速率。
在多控制器结构中,也叫前端卡,每个卡上有自己的cpu与多个前端口。
后端口(卡):主要是存储连接磁盘的部分,在光纤技术的存储中,后端通过光纤口与内部光纤线与磁盘连接,一般连接方式有环路方式与交换方式。
控制器:中低端存储的核心部件,因为这种结构都是对称体系结构,以控制器为中心,控制器中包括自己的OS,CPU,与内存,负责存储的运行于调度。
4、RAID(Redundant Array of Indenpendent Disks)
RAID(独立冗余磁盘阵列是)指由多个独立硬盘结合形成的一个较大的逻辑阵列。数据存储在磁盘的此阵列并带有附加的冗余信息。冗余信息可以是数据本身(镜像),也可以是从多个数据块(RAID4或RAID5)计算出的奇偶校验信息。使用RAID后,操作系统(Windows、NetWare或UNIX)不再单独处理单个硬盘,而是把整个磁盘阵列作为一个逻辑磁盘来处理。
RAID 的主要目标是提高数据的可用性和安全性。一旦出现硬盘故障,RAID可以防止停机,但是它不可以恢复用户删除或者由失窃或火灾等重大事件破坏的数据。出于此原因,安装 RAID后,为防止这些原因破坏系统,必须经常备份数据。
实施RAID解决方案有两种方法:
其一,硬件RAID控制器是智能设备,可以自行处理所有的RAID信息。安装这种系统后,主机对RAID阵列的控制完全解除,而是由 RAID 控制器对RAID阵列进行全面控制。
另一种方法是使用简易的主适配器和RAID驱动程序实施RAID。在这种系统中,驱动程序被集成到操作系统中,如Windows NT。此时,RAID系统的性能完全依赖于主 CPU 的处理负荷,在阵列重建阶段负荷带有潜在的问题,随之会出现硬盘故障。
硬件RAID控制器需要关注的地方包括安装和维护的简便性、管理软件的功能及制造商开发RAID组件的经验。RAID控制器必须支持最重要的RAID级别(0、1、4、5和10),并且能够跨通道同时处理不同RAID级别的多个阵列。
RAID级别--驱动器是如何组织:RAID的各个层次在阵列驱动器之间以不同方式分布数据,并依具体情况进行优化。根据目标,计划集中在当今是最常用的RAID级别。
1.RAID 0
此RAID级别使两个或更多硬盘驱动器以某种方式结合,如图3-1所示,数据(深色存储区的A、B、C、D……)从上方被分割成便于处理的块,这些块以条带形式分布于不同驱动器的RAID 0阵列。这样,两个或更多硬盘驱动器组合后,读/写(尤其是序列性访问读写)性能可以改善,但是由于其中不储存冗余信息,对于一个,RAID 0阵列,如果一个硬盘驱动器发生故障,所有数据都会丢失。因此,RAID 0通常不能在安全性较高的服务器上使用。
图3-1 RAID 0原理示意图 |
特点和优点:RAID 0中,数据被分成块,每个块都被写到一个驱动器中。由于I/O负载由多个通道和驱动器分担,所以I/O性能很高。当使用多个控制器且每个控制器上只连接一个驱动器时,性能达到最高。没有使用奇偶校验,设计简单、容易实现。
缺点:由于没有冗余,所以并不是真正的RAID。其中任一个磁盘发生故障,所有数据将丢失。
应用:通常用于工作站临时数据并要求高传输速率,如图像或视频等领域。
2.RAID 1
RAID 1,又称镜像,即每个工作盘都有一个镜像盘,如图3-2所示,每次写数据时必须同时写入镜像盘,读数据时只从工作盘读出,一旦工作盘发生故障立即转入镜像盘,从镜像盘中读出数据。当更换故障盘后,数据可以重构、恢复。这种阵列可靠性很高,但其有效容量减小到总容量的一半以下时,两个磁盘驱动器共享一个SCSI通道。 如果每个磁盘驱动器连接到一个独立的 SCSI通道,称之为"磁盘双工"(附加安全性)。
图3-2 RAID 1原理示意图 |
其特点如下。
RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。
磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。
只要系统中任何一对镜像盘中至少有一块磁盘可以使用,在一半数量的硬盘出现问题时系统都可以正常运行。
出现硬盘故障的RAID系统不再可靠,应当及时更换损坏的硬盘,否则如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。
更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。
RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。
应用:通常用于对容错要求极严的应用场合,如财政、金融等领域。
3.RAID 2
RAID 2又称位交叉,它采用汉明码做盘错校验,采用按位交叉存取,运用于大数据的读写,但冗余信息开销太大(校验盘为多个),已被淘汰。
4.RAID 3
RAID 3为单盘容错并行传输,即采用Stripping技术将数据分块,对这些块进行异或校验,校验数据写到最后一个硬盘上。它的特点是有一个盘为校验盘,数据以位或字节的方式存于各盘中(分散记录在组内相同扇区的各个硬盘上)。当一个硬盘发生故障时,除故障盘外,写操作将继续对数据盘和校验盘进行操作。而读操作是通过对剩余数据盘和校验盘的异或计算重构故障盘上应有的数据来进行的。在RAID 3中,数据块被拆分写到数据盘中,在写入时计算校验和并将校验和写到校验盘中,在读取数据时同时读取校验和。
优点:并行I/O传输和单盘容错,具有很高可靠性、非常高的读取速率和非常高的写入速率。驱动器失败对数据吞吐没什么影响,ECC盘与数据盘的比率较低,意味着利用率较高。
缺点:每次读写要牵动整个组,每次只能完成一次I/O,理想处理能力与单驱动器相同。控制器的设计非常复杂,要使用软件组件非常困难,非常耗费资源。
推荐的应用:视频制作和在线视频流、图像编辑、视频编辑、印刷应用、任何需要大吞吐量的场合。
5.RAID 4
RAID 4与RAID 3相似,区别是RAID 3是按位或字节交叉存取,而RAID 4是按块(扇区)存取,如图3-3所示,可以单独地对某个盘进行操作,无须像RAID 3那样,每一次I/O操作都要涉及全组,RAID 4只需涉及组中两块硬盘(一块数据盘,一块校验盘)即可,从而提高了小量数据I/O速度。
缺点:对于随机分散的小数据量I/O,固定的校验盘又成为I/O瓶颈,例如:事务处理。做两个很小的写操作,一个写在硬盘2(drive2)的条带1(stripe1)上,一个写在硬盘3(drive3)的条带2(stripe2)上,它们都要往校验盘上写,所以会发生争用校验盘的问题。
图3-3 RAID 4原理示意图 |
优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用;很好地利用了磁盘容量(N个磁盘的阵列,N-1用于数据存储)。
缺点:必须计算冗余信息,这样就限制了写入性能。
应用:由于安装容量与实际可用容量的比率较高,通常用于较大的数据存储系统。
6.RAID 5
RAID 5是一种旋转奇偶校验独立存取的阵列方式,它与RAID 3、RAID 4不同的是没有固定的校验盘,而是按某种规则分布在阵列所属的硬盘上,所以在每块硬盘上,既有数据信息也有校验信息,如图3-4所示。这一改变解决了争用校验盘的问题,使得在同一组内并发进行多个写操作。所以RAID 5既适用于大数据量的操作,也适用于各种事务处理,它是一种快速、大容量和容错分布合理的磁盘阵列。可用容量为(n-1)/n的总磁盘容量(n为磁盘数)。
图3-4 RAID 5原理示意图 |
RAID 5把奇偶位信息分散分布在硬盘子系统的所有硬盘上而不是使用专用的校验盘0,这就改善了上述RAID 3中的奇偶盘瓶颈效应。图3-4说明了RAID 5的一种配置,图3-4中奇偶信息散布在子系统的每个硬盘上。利用每个硬盘的一部分来组成校验盘,写入硬盘的奇偶位信息将较均匀地分布在所有硬盘上。所以用户可能把一个数据段写在硬盘A,而将奇偶信息写在硬盘B,第二个用户可能把数据写在硬盘C,而奇偶信息写在硬盘D,从而使得RAID 5的性能得到提高。
这种方法将提高硬盘子系统的事务处理速度。所谓事务处理,是指处理不同用户的多个硬盘I/O操作,由于可能有很多用户迅速向硬盘写入数据,有时几乎是同时进行的,这种情况下,用分布式奇偶盘的方式比起用专用奇偶盘,瓶颈效应发生的可能性要小。
对硬盘操作来说,RAID 5的写性能比不上直接硬盘分段(指没有校验信息的RAID 0),因为产生或存储奇偶码需要一些额外操作。例如,在修改一个硬盘上的数据时,其他盘上对应的数据段(即使是无关的数据)也要读入主机,以便产生必要的奇偶信息。奇偶段产生后(这要花一些时间),要将更新的数据段和奇偶段写入硬盘,这通常称为读-修改-写策略。因此,虽然RAID 5比RAID 0优越,但就写性能来说,RAID 5不如RAID 0。
优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用。很好地利用了磁盘容量(N个磁盘的阵列,N-1用于数据存储)。
缺点:必须计算冗余信息,这样就限制了写入性能。
应用:文件和程序服务器,数据库服务器,Web、E-mail和新闻服务器,企业内部互联网
7.RAID 10
RAID 10综合了RAID 0(性能)和RAID 1(数据安全)。与RAID 4和RAID 5不同,它不用计算奇偶校验信息。RAID 10磁盘阵列提供了良好的性能和数据安全性。类似于RAID 0,在较高序列负载条件下可以保证最佳性能。与RAID 1相同,50%的安装容量被用作冗余,如图3-5所示。
优点:可用性高,即使一个磁盘发生故障,逻辑硬盘上的数据依然可用;良好的写入性能。
缺点:需要偶数个磁盘,最少4个,只有一半的磁盘容量可用。
应用:通常用于需要较高序列写入性能的场合。
图3-5 RAID 10原理示意图 |
对RAID 0、RAID 1、RAID 5和RAID 10做了一个分析比较,见表3-1。
表3-1 RAID 0、RAID 1、RAID 5和RAID 10分析比较
类型 |
读写性能 |
安全性 |
磁盘利用率 |
成本 |
应用方面 |
RAID 0 |
最好(因并行性而提高) |
最差(完全 无安全保障) |
最高(100%) |
最低 |
个人用户 |
RAID 1 |
读和单个磁盘 无区别,写则要写两边 |
最高(提供数 据的百分之百备份) |
差(50%) |
最高 |
适用于存放重要 数据,如服务器和 数据库存储等领域 |
RAID 5 |
读:RAID 5=RAID 0 (相近似的数据读取速度) 写:RAID 5<对单个 磁盘进行写入操作 (多了一个奇偶校验信息写入) |
RAID 5< RAID 1 |
RAID 5> RAID 1 |
RAID 5< RAID 1 |
是一种存储性能、 数据安全和存储成本 兼顾的存储解决方案 |
RAID 10 |
读:RAID 10=RAID 0 写:RAID 10=RAID 1 |
RAID 10= |
RAID 10= RAID 1(50%) |
RAID 10= RAID 1 |
集合了RAID 0、RAID 1的优点,但是空间上 由于使用镜像,而不 是类似RAID 5的“奇 偶校验信息”,磁盘 利用率一样是50% |
硬盘性能指标与高效I/O
转速:当前的服务器硬盘一般都是15000 r/min。
平均延时:平均延时就是磁道上的某段数据转到磁头下面需要的时间,这直接由转速决定。比如15000 r/min的硬盘,也就是每秒250 r,每转一圈需要4ms,因此平均延时就是转半圈的时间,等于2ms。
平均寻道时间:服务器硬盘一般平均寻道时间是4ms。
持续传输速率:服务器硬盘一般在80MB/s,也就是80KB/s(为了方便计算,单位都用ms)。
因此,读取一次数据需要的时间等于定位时间(平均延时2ms+寻道4ms)+数据传送时间(要读的数据/80k×ms)。
不同I/O的数据传输效率见表3-2。
表3-2 I/O大小与数据传输效率
I/O大小 |
定位时间/ms |
传送时间/ms |
数据传输效率/传送时间/总时间 |
8KB |
6 |
0.1 |
1.6% |
128KB |
6 |
1.6 |
21% |
512KB |
6 |
6.4 |
52% |
1MB |
6 |
12.8 |
68% |
2MB |
6 |
25.6 |
81% |
准则:数据传送时间 > 5*定位时间;换而言之,数据传输效率大于80%,否则大部分时间都用在"寻道定位"上显然是不合算的。
(回想一下十年前的硬盘技术:容量大约是1.2GB;转速大约在5400 r/min;持续传输速率大约在10bps;平均寻道时间大约在15ms)。
硬盘的技术进步带给持续传输速率好处要远大于平均寻道时间的好处,因此越高级的硬盘,I/O大小要设定的越大才好。
同步和异步I/O
通常,使用比较多的I/O模型是同步I/O(Synchronous I/O)。在这种模式下,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这种模式最大好处就是调用应用程序在等待 I/O 请求完成时不需要使用CPU资源。但是,对于一些强调高响应速度的程序(如DB)来说,希望这种等待时间越短越好,这时就可以考虑采用异步I/O(Asynchronous I/O)模式。异步I/O模式下,进程发出I/O请求后无须等待I/O完成,就可以去处理其他事情;I/O请求被放入一个队列中,一旦I/O完成,系统会发出信号通知进程。
异步I/O可以使需要大量写的Oracle进程(如DBWn进程)将I/O请求队列化,以充分利用硬件的I/O带宽,从而使它们能最大程度实现并行处理。异步I/O还可以使那些需要进行大量计算的操作(如排序)在它们发出I/O请求前预先从磁盘取出数据,以使I/O和计算并行处理。
确认操作系统已经设置支持异步I/O后,还需要设置Oracle初始化参数"DISK_ ASYNCH_I/O"为"true"以支持异步I/O。
负载均衡及条带化
当多个进程同时访问一个磁盘时,会出现磁盘冲突。大多数磁盘系统都对访问次数(每秒的I/O操作)和数据传输率(每秒传输的数据量)有限制。当达到这些限制时,后面访问磁盘的进程就需要等待,这时就是所谓的磁盘冲突。
避免磁盘冲突是优化I/O性能的一个目标,这就需要将一个热点磁盘上的I/O访问负载分担到其他可用磁盘上,也就是I/O负载均衡。在一些成熟的磁盘负载均衡技术出现之前,DBA需要了解/预测各系统的I/O负载量,通过手工配置每个数据到不同存放位置以分担I/O负载来达到负载均衡的目的。
条带化技术就是将数据分成很多小部分并把它们分别存储到不同磁盘上的不同文件中去。这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突。很多操作系统、磁盘设备供应商、各种第三方软件都能做到条带化。通过条带化,DBA可以很轻松地做到I/O负载均衡,而无须去手工配置。
RAID的 I/O 特性
RAID在市场上的应用,已经不是新鲜的事儿了,很多人都大略了解RAID的基本观念以及各个不同RAID LEVEL的区分。但是在实际应用时,很多使用者仍然无法很确切地选择一个合适的RAID LEVEL,尤其是对于RAID 0+1(10),RAID 3,RAID 5之间的选择取舍,更是举棋不定。
针对RAID 0+1/10以及RAID 5的工作原理和特性,做一些分析和比较,以列出这些不同RAID阶层所适合的应用,希望对各位能有原则性的帮助。
在使用数据条切﹝Data Stripping﹞ 的RAID 系统之中,对成员磁盘驱动器的存取方式,可分为以下两种。
并行存取﹝Paralleled Access﹞。
独立存取﹝Independent Access﹞。
RAID 2和RAID 3 是采取并行存取模式, RAID 0、RAID 4、RAID 5及RAID 6则是采用独立存取模式。
1.并行存取模式
并行存取模式是把所有磁盘驱动器的主轴马达做精密的控制,使每个磁盘的位置都彼此同步,然后对每一个磁盘驱动器作一个很短的I/O数据传送,因此,从主机来的每一个I/O 指令,都平均分布到每一个磁盘驱动器。
为了达到并行存取的功能,RAID中的每一个磁盘驱动器,都必须具备几乎完全相同的规格,转速必须一样、磁头搜寻速度﹝Access Time﹞必须相同、缓冲区(Buffer)或缓存(Cache)的容量和存取速度要一致、CPU处理指令的速度要相同、I/O信道(Channel)的速度也要一样。总而言之,要利用并行存取模式,RAID中所有的成员磁盘驱动器,应该使用同一厂牌、相同型号的磁盘驱动器。
2.并行存取的基本工作原理
假设RAID*有4部相同规格的磁盘驱动器,分别为磁盘驱动器A、B、C和D,再把时间轴略分为T0、T1、T2、T3和T4。
T0:RAID控制器将第一笔数据传送到A的缓冲区(Buffer),磁盘驱动器B、C和D的Buffer都是空的,在等待中;
T1:RAID控制器将第二笔数据传送到B的Buffer,A开始把Buffer中的数据写入扇区,磁盘驱动器C和D的Buffer都是空的,在等待中;
T2:RAID控制器将第三笔数据传送到C的Buffer,B开始把Buffer中的数据写入扇区,A已经完成写入动作,磁盘驱动器D和A的Buffer都是空的,在等待中;
T3:RAID控制器将第四笔数据传送到D的Buffer,C开始把Buffer中的数据写入扇区,B已经完成写入动作,磁盘驱动器A和B的Buffer都是空的,在等待中;
T4:RAID控制器将第五笔数据传送到A的Buffer,D开始把Buffer中的数据写入扇区,C已经完成写入动作,磁盘驱动器B和C的Buffer都是空的,在等待中。
如此循环,一直到把从主机来的这个I/O 指令处理完毕,RAID控制器才会接受处理下一个I/O 指令。重点是在任何一个磁盘驱动器准备好把数据写入扇区时,该目的扇区必须刚好转到磁头下。同时RAID控制器每依次传给一个磁盘驱动器的数据长度,也必须刚好,配合磁盘驱动器的转速,否则一旦发生失误,RAID性能就大打折扣。
3.并行存取RAID的最佳应用
并行存取RAID之架构,以其精细的马达控制和分布数据传输,将数组中每一个磁盘驱动器的性能发挥到最大,同时充分利用Storage Bus的频宽,因此特别适合应用在以下几种大型、数据连续的档案存取中。
影像、视讯文件服务器。
数据仓储系统。
多媒体数据库。
电子图书馆。
印前或底片输出文件服务器。
其他大型且连续性文件服务器。
由于并行存取RAID架构之特性,RAID 控制器一次只能处理一个I/O要求,无法执行重叠的多任务,因此非常不适合应用在I/O次数频繁、数据随机存取、每笔数据传输量小的环境。同时,因为并行存取无法执行重叠的多任务,因此没有办法 "隐藏"磁盘驱动器搜寻(Seek)的时间,而且在每一个I/O的第一笔数据传输时,都要等待第一个磁盘驱动器的旋转延迟(Rotational Latency),平均为旋转半圈的时间,如果使用一万转的磁盘驱动器,平均就需要等待50 us。所以机械延迟时间,是并行存取架构的最大问题。
4.独立存取模式
相对于并行存取模式,独立存取模式并不对成员磁盘驱动器做同步转动控制,其对每个磁盘驱动器的存取,都是独立且没有顺序和时间间隔的限制,同时每笔传输的数据量都比较大。因此,独立存取模式可以尽量地利用重叠多任务、Tagged Command Queuing等高级功能,来"隐藏"上述磁盘驱动器的机械时间延迟﹝Seek 和Rotational Latency﹞。
由于独立存取模式可以做重叠多任务,而且可以同时处理来自多个主机不同的I/O请求(Requests),在多主机环境﹝如集群(Clustering)﹞,更可发挥最大的性能。
5.独立存取RAID的最佳应用
由于独立存取模式可以同时接受多个I/O Requests,因此特别适合应用在以下几种数据存取频繁、每笔数据量较小的系统。
在线交易系统或电子商务应用。
多使用者数据库。
ERM及MRP 系统。
小文件之文件服务器。
一般常用的RAID阶层,分别是RAID 0、RAID 1、RAID 3、RAID 4以及RAID 5,再加上二合一型RAID 0+1﹝或称RAID 10﹞。把这些RAID级别的优、缺点做个比较,见表3-3。
表3-3 各种RAID优缺点比较
RAID级别 |
相对优点 |
相对缺点 |
RAID 0 |
存取速度最快 |
没有容错 |
RAID 1 |
完全容错 |
成本高 |
RAID 3 |
写入性能最好 |
没有多任务功能 |
RAID 4 |
具备多任务及容错功能 |
奇偶(Parity)磁盘驱 动器造成性能瓶颈 |
RAID 5 |
具备多任务及容错功能 |
写入时有开销(overhead) |
RAID 0+1/RAID 10 |
速度快、完全容错 |
成本高 |
接下来,分别针对RAID 5以及RAID 0+1/RAID 10作深入的讨论。
RAID 10和RAID 01的比较:RAID 10是先做镜像,然后再做条带。RAID 01则是先做条带,然后再做镜像。
以6个盘为例,RAID 10就是先将盘分成3组镜像,然后再对这3个RAID 1做条带。RAID0 1则是先利用3块盘做RAID 0,然后将另外3块盘作为RAID 0的镜像。
下面以4块盘为例来介绍安全性方面的差别。
1.RAID 10的情况
这种情况中,假设当DISK 0损坏,在剩下的3块盘中,只有当DISK 1一个盘发生故障时,才会导致整个RAID失效,可简单计算故障率为1/3。
2.RAID 01的情况
这种情况下,仍然假设DISK 0损坏,这时左边的条带将无法读取。在剩下的3块盘中,只要DISK 2、DISK 3两个盘中任何一个损坏,都会导致整个RAID失效,可简单计算故障率为2/3。
因此RAID 10比RAID 01在安全性方面要强。
从数据存储的逻辑位置来看,在正常的情况下,RAID 01和RAID 10是完全一样的,而且每一个读写操作所产生的I/O数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,比如前面假设的DISK0损坏时,这两种情况下,在读的性能上面也将不同,RAID 10的读性能将优于RAID 01。
磁盘阵列技术术语
硬盘镜像(Disk Mirroring):硬盘镜像最简单的形式是一个主机控制器带两个互为镜像的硬盘。数据同时写入两个硬盘,两个硬盘上的数据完全相同,因此一个硬盘故障时,另一个硬盘可提供数据。
硬盘数据跨盘(Disk Spanning):利用这种技术,几个硬盘看上去像是一个大硬盘,这个虚拟盘可以把数据跨盘存储在不同的物理盘上,用户不需关心哪个盘上存有他需要的数据。
硬盘数据分段(Disk Striping):数据分散存储在几个盘上。数据的第一段放在盘0,第2段放在盘1,依次类推,直至达到硬盘链中的最后一个盘,然后下一个逻辑段将放在硬盘0,再下一个逻辑段放在盘1,如此循环直至完成写操作。
双控(Duplexing):这里指的是用两个控制器来驱动一个硬盘子系统。一个控制器发生故障,另一个控制器马上控制硬盘操作。此外,如果编写恰当的控制器软件,可实现不同的硬盘驱动器同时工作。
容错(Fault Tolerant):具有容错功能的机器有抗故障的能力。例如RAID 1镜像系统是容错的,一个镜像盘出故障,硬盘子系统仍能正常工作。
主机控制器(Host Adapter):使主机和外设进行数据交换的控制部件(如SCSI控制器)。
热修复(Hot Fix):指用一个硬盘热备份来替换发生故障的硬盘。要注意故障盘并不是真正地被物理替换,而是用作热备份的盘被加载上故障盘原来的数据,然后系统恢复工作。
热补(Hot Patch):具有硬盘热备份,可随时替换故障盘的系统。
热备份(Hot Spare):与CPU系统电连接的硬盘,它能替换下系统中的故障盘。与冷备份的区别是,冷备份盘平时与机器不相连接,硬盘故障时才换下故障盘。
平均数据丢失时间(MTBDL-Mean Time Between Data Loss):发生数据丢失事件之间的平均时间。
平均无故障工作时间(MTBF-Mean Time Between Failure或MTIF):设备平均无故障运行时间。
廉价冗余磁盘阵列(RAID-Redundant Array of Inexpensive Drives):一种将多个廉价硬盘组合成快速、有容错功能的硬盘子系统的技术。
系统重建(Reconstruction or Rebuild):一个硬盘发生故障后,从其他正确的硬盘数据和奇偶信息恢复故障盘数据的过程。
恢复时间(Reconstruction Time):为故障盘重建数据所需要的时间。
单个大容量硬盘(SLED-Singe Expensive Drive):单个大容量磁盘驱动器。
传输速率(Transfer Rate):指在不同条件下存取数据的速度。
虚拟盘(Virtual Disk):与虚拟存储器类似,虚拟盘是一个概念盘,用户不必关心它的数据写在哪个物理盘上。虚拟盘一般跨越几个物理盘,但用户看到的只是一个盘。
热备用(hot spare):当一个正在使用的磁盘发生故障后,一个空闲、加电并待机的磁盘将马上代替此故障盘,此方法就是热备用。热备用磁盘上不存储任何的用户数据,最多可以有8个磁盘作为热备用磁盘。一个热备用磁盘可以专属于一个单一的冗余阵列或者可以是整个阵列热备用磁盘池中的一部分。而在某个特定的阵列中,只能有一个热备用磁盘。当磁盘发生故障时,控制器的固件能自动地用热备用磁盘代替故障磁盘,并通过算法把原来储存在故障磁盘上的数据重建到热备用磁盘上。数据只能从带有冗余的逻辑驱动器上进行重建(除了RAID 0以外),并且热备用磁盘必须有足够多的容量。系统管理员可以更换发生故障的磁盘,并把更换后的磁盘指定为新的热备用磁盘。http://book.51cto.com/art/201202/320349.htm