- 浏览: 1248206 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
1927105:
高端运营上是必须用https的,保证用户数据不泄露。要是HTT ...
HTTPS的七个误解 -
jinimaiii:
nb啊
Swing做的星际争霸游戏! -
edhn:
phoneNum = phoneNum.trim().subs ...
大数据量整数排序 -
edhn:
看了,不错
大数据量整数排序 -
zhile005:
不错,学习了。
HTTPS的七个误解
磁盘子系统
对于应用服务器,磁盘子系统可以被看成是一个硬盘服务器。应用服务器使用诸如SCSI这样的标准I/O技术连接到磁盘子系统的端口,从而可以使用磁盘子系统提供的存储能力。磁盘子系统的内部结构对应用服务器完全隐蔽,应用服务器仅看到磁盘子系统向它提供的硬盘。
磁盘子系统的端口通过内部I/O通道延伸到它的硬盘。在大多数磁盘子系统中,在连接端口和硬盘之间有一个控制器。通过执行一种称作RAID的过程,控制器可以显著地增加数据的可用性和数据访问的性能。而且,有些控制器实现了即时复制、远程镜像以及其他的服务。此外,控制器还使用缓冲区来加速应用服务器的读写访问。
小的磁盘子系统仅为应用服务器或存储网络提供一两条连接,配置6~8个硬盘。大的磁盘子系统为应用服务器或存储网络提供数十个连接端口,并配置冗余控制器和多个内部I/O通道。通过存储网络的连接意味着大量的应用服务器可以访问磁盘子系统。大的磁盘子系统可以存储数十太字节的数据,重达几吨。典型的大磁盘子系统的体积可以有衣柜那么大。
无论是否使用存储网络,磁盘子系统都可以把空闲磁盘空间灵活地分配给连接到它的每一个服务器。另外,被分配给多个应用服务器的空闲的磁盘空间可以是已经安装但尚未使用的磁盘,也可以是准备在空闲插槽上安装的新磁盘。
一. 磁盘和内部I/O 通道
磁盘子系统的控制器最终必须把所有的数据都存储在物理硬盘上。流行的用于这一目的的标准硬盘的容量为l8GB-250GB。由于可以使用的硬盘的最大数目是有限的,硬盘的这个容量范围也标示着整个磁盘子系统的最大容量。
当选择内部物理硬盘的大小时,需要权衡考虑最佳性能需求和整个系统的最大容量。对于性能,通常使用比较小的硬盘是有益的,但这会减少系统的最大容量。给定一个容量值,如果使用较多的硬盘,数据可同时分布在多个硬盘上,从而把整个负荷分布到更多个机械臂和更多个读/写磁头,并且通常是在更多的I/O通道上。
对于大多数应用,使用中等大小的硬盘就足够了,仅对于那些特别有高性能需求的应用应该考虑比较小的硬盘。然而,还应该考虑这样的事实,即比较现代的大硬盘一般都具有比较短的寻道时间和比较大的缓冲区。因此,对于每个具体的用例,需要仔细考虑什么样的硬盘可提供最高的性能。
为了增加磁盘子系统的容错功能,可以把I/O通道设计成具有内建的冗余。下面列出的是几种常见的I/O通道的配置。
1.单通道
在单通道配置中,物理硬盘仅通过1个I/O通道连接,如果这个访问通道失效了,那么就再也不能够访问数据。
2.备用通道
在备用通道配置中,物理硬盘通过2个I/O通道连接。在正常情况下,控制器通过第一个I/O通道跟硬盘通信,不使用第二个I/O通道。在第一个I/O通道失效的情况下,磁盘子系统从第一个通道切换到第二个通道。
3.无负载平衡的双通道配置
在这种配置方式中,控制器在正常情况下使用2个I/O通道。硬盘被划分成两个组;在正常操作中,第一组通过第一个I/O通道访问,第二组通过第二个I/O通道访问。如果有一个I/O通道失效了,那么两个组都通过另一个I/O通道访问。
4.有负载平衡的双通道配置
在这种配置方式中,所有的硬盘在正常操作中都通过两个I/O通道访问。控制器把负载动态地在这两个I/O通道之间划分,使得可提供的硬件能够被最佳地使用。如果有一个I/O通道失效了,那么通信仅通过另一个I/O通道进行。
二. JBOD 磁盘整列
从控制器的角度来比较磁盘子系统,我们可以区分以下三个类型:
(1)无控制器
(2)RAID 控制器
(3)具有诸如即时复制和远程镜像这类附加功能的智能控制器。
如果磁盘子系统没有内部控制器,那么它只是把多个磁盘装在一起的机箱,即简单磁盘捆绑(JBOD:just a Bound Disks),官方术语称作“Spanning”。在这种情况下,磁盘被永久地装配进机箱,对I/O 通道和电源的连接都是在机箱的单个点向外引出。
JBOD磁盘阵列是在逻辑上把几个物理磁盘一个接一个串联到一起,从而提供一个大的逻辑磁盘。JBOD上的数据简单地从第一个磁盘开始存储,当第一个磁盘的存储空间用完后,再依次从后面的磁盘开始存储数据。JBOD存取性能完全等同于对单一磁盘的存取操作。JBOD也不提供数据安全保障。它只是简单地提供一种利用磁盘空间的方法,JBOD的存储容量等于组成JBOD的所有磁盘的容量的总和。
JBOD 磁盘阵列不支持RAID 或其他形式的虚拟化。 如果需要,这些功能可以在JBOD磁盘阵列的外部实现,如利用服务器上的软件或者存储网络中独立的虚拟化实体来实现。
三. 使用RAID 的存储虚拟化
具有RAID控制器的磁盘子系统提供比JBOD磁盘阵列更大的功能范围。RAID起初是在磁盘还非常昂贵并且欠可靠的年代产生的,那时候RAID代表“RedundantArtayofInexpensiveDisks(廉价磁盘冗余阵列)”。现在RAID表示“RedundantArtayofIndependentDisks(独立磁盘冗余阵列)”,支持RAID的磁盘子系统也被称着RAID磁盘阵列。
RAID有两个主要目标,即通过条带化提高性能和通过冗余增加容错能力。条带化把数据分布到多个磁盘上,从而把负载分配到更多的硬件上。冗余意味着存储附加信息使得在有一个硬盘失效的情况下,使用存储数据的应用程序还可以继续运行。对于单个硬盘,除了可以改善其容错功能,但不能够提高其操作性能。单个物理硬盘比较慢,并且生命期有限,然而,把多个物理硬盘适当地结合在一起,有可能显著地增强容错能力以及系统的整体性能。
由RAID控制器把多个物理硬盘组合在一起的集成设备服务器也称作虚拟磁盘。连接到RAID统的计算机仅能看到这个虚拟磁盘,RAID控制器把数据分布到多个物理硬盘上的事实对服务器是完全遮蔽的。在集成设备的外部,这个事实仅对管理员可见。
3.1 RAID等级特征
RAID控制器可以把服务器往虚拟磁盘写的数据以不同的方式在多个物理硬盘之间分配,这些不同的过程被称作RAID等级。
绝大多数的RAID等级共有的特征是它们都存储冗余信息。如果有一个物理硬盘失效了,它的数据仍然可以从保持完好的那些硬盘重构。如果一个磁盘子系统有适当的硬件,那么在运行期间甚至可以把失效的硬盘用一个新硬盘替换。然后,RAID控制器重构被更换硬盘的数据。对于服务器,除了可能的性能减退外,这个过程依然是遮蔽的,服务器可以不间断地对虚拟磁盘继续执行读/写操作。
3.2 虚拟RAID磁盘的优点
现代RAID控制器可以自动地启动这个过程,但需要定义所谓的热备份磁盘。在正常的操作中不使用热备份磁盘。如果有一个硬盘失效了,RAID控制器立即开始把仍然保持完好的硬盘上的数据往热备份硬盘上复制。在更换失效的硬盘之后,这些数据被存放在热备份磁盘池中。现代RAID控制器可以为多个虚拟RAID磁盘管理共同使用的热备份磁盘池。所有提供冗余功能的RAID等级都可以使用热备份磁盘。
失效硬盘数据的重建与服务器对虚拟磁盘执行的读写操作同时发生,因此服务器方会观察到性能的减退。现代硬盘都带有自我诊断程序,它会向系统管理员用这样一类的提示报告读写错误的增加:“请注意,我的生命期就要结束。请用一个新的磁盘替换我。”通常硬盘本身在存储数据时都带有诸如海明编码这样的冗余编码。海明编码允许即使在硬盘上有些位改变了,也能够正确地重建数据。因此,在系统从其他仍然完好的硬盘重建数据的那段时间内,即将被更换的磁盘还可以继续向服务器提供数据。
把多个物理硬盘组合在一起形成虚拟磁盘的另一个好处是虚拟磁盘具有比较大的容量。结果在I/O通道中可以使用较少的设备地址,同时也简化了对服务器的管理工作,因为可以使用较少的驱动器字母或卷标号。
四. RAID 等级及配置示例
4.1 RAID 0: 按块条带
RAID0,也称条带,把服务器往虚拟磁盘上写的数据按照块的顺序分布到多个物理硬盘上,即在把一块数据写入一个物理磁盘后,紧接着把下一块数据写到另一个物理硬盘上。一个具有4个物理硬盘的RAID阵列,服务器把数据块A、B、C、D、E等一块接着一块地写往虚拟磁盘。RAID控制器把该块序列分发到具体的物理硬盘。它把第一块即A写到第一个物理硬盘,第二块即B写到第二个物理硬盘,块C写到第三个硬盘,块D写到第四个硬盘。然后它再一次把数据往第一个硬盘写,块E到第一个硬盘,块F到第二个硬盘,等等。
每个磁盘都通过I/O通道跟RAID控制器交换数据,这个过程要比从旋转的硬盘上读数据或向旋转的硬盘写数据快得多。RAID控制器把第一块数据A发送到第一个硬盘。把这一块数据写到硬盘上需要花相当长的时间。当第一个硬盘对第一块数据A执行写操作的时候,RAID控制器就已经把第二块数据B发送给第二个硬盘,把第三块数据C发送给第三个硬盘。此时,第一个和第二个硬盘还在分别执行对块A和块B的写操作。按照这样的操作方式继续执行下去,当RAID控制器把块E发送给第一个硬盘时,第一个硬盘至少已把部分块A的数据写到了它的物理盘上。
虽然RAID把服务器的写操作分配到多个物理硬盘上,但服务器仅仅看到虚拟磁盘。并行的写操作意味着虚拟磁盘的性能要高于物理磁盘。
吞吐率可以提高到普通磁盘的4倍。假定单个硬盘的最大吞吐率是50MBps,那么4个物理硬盘可以取得大约200MBps的吞吐率。诸如SCSI或光纤通道这样的I/0技术可以达到的吞吐率是l60MBps或200MBps。如果RAID阵列仅由3个物理硬盘构成,那么总的硬盘吞吐率会成为限制因素。在另一方面,如果RAID阵列由5个物理硬盘构成,那么I/0通路会成为限制因素。因此,当配置5个或更多个硬盘时,仅当把硬盘连接到不同的I/O通路时,才有可能进一步提高性能,即不仅要把负载分配到多个物理硬盘上,而且要分配到多个I/O通路。
RAID0可以提高虚拟磁盘的性能,但并不增加容错能力。如果有一个物理硬盘失效了,那么存放在虚拟磁盘上的所有数据都不可用。准确地讲,对于RAID0,RAID中的R其实并不意味着“Redundant(冗余)”,而是代之以“0Redundancy(零冗余)”。
4.2 RAID 1: 按块镜像
RAID 1的基本形式是把两个物理硬盘组合在一起,通过镜像在这两块物理硬盘上的数据形成一个虚拟磁盘。 如果服务器把一个数据块写往虚拟磁盘,RAID 控制器就把这两个数据块同时写到两个物理硬盘上。 其复制也称镜像。
RAID 控制器把服务器的每个写操作都在两个物理硬盘上重复执行,如果有一个物理磁盘失效,那么数据还可以从另一个硬盘上读出来。
使用纯RAID 1,仅对读操作性能提高。 当服务器从虚拟磁盘读数据时,RAID 控制器可以把负载分配到两个物理硬盘上。 例如:服务器读取A,B,C,D 四块数据,RAID 控制器可以从第一个硬盘读A,B块,同时从第二个硬盘读C,D块,从而执行并行操作。 对于写操作,则可能哟亍的性能减退,因为RAID 控制器必须把同样的数据块发送到两个物理硬盘,增加了控制器的发送时间,也增加了I/O 通道的负荷。
4.3 RAID 0+1 和 RAID 10: 结合条带域镜像
RAID0和RAID1的问题是它们仅提高了性能或仅增加了容错。然而,如果能既提高性能又支持容错,那将会是比较理想的效果。这正是RAID0+1和RAID10起作用的地方,这两个RAID等级结合采用了RAID0和RAIDI的思想。
RAID0+1和RAID1O都表示两个步骤的虚拟化结构。如一个有8块物理硬盘的RAID0+1的配置, RAID控制器开始在第一个步骤中使用RAID0(条带)分别把每4个物理硬盘结合,形成仅在RAID控制器内可见的两个虚拟磁盘。在第二个步骤中,又使用RAIDI(镜像)进一步地把这两个虚拟磁盘结合成单个虚拟磁盘,服务器只能够看到这个虚拟磁盘。
和RAID0+1(先条带后镜像)不同,RAID1O先执行RAID1(镜像)后执行RAID0(条带)。在RAIDIO中,RAID控制器开始在第一个步骤中使用RAID1成对地结合物理硬盘,形成仅在RAID控制器内可见的4个虚拟硬盘。在第二个步骤中,RAID控制器使用RAID0把这4个虚拟磁盘进一步结合成一个虚拟磁盘。在这里,仅仅最后一个虚拟磁盘对服务器是可见的。
不论是在RAID0+1中,还是在RAID10中,服务器仅看到单个虚拟磁盘,它比单个物理硬盘既大又快,又更加容错。他们两者的区别如下:
使用RAID0,单个物理硬盘的失效也会导致整个虚拟磁盘的失效。在上面的RAID0+1的示例中,一个物理硬盘的失效等效于4个物理硬盘的失效。如果其他4个硬盘中也有一个失效了,那么数据将会丢失。
在另一方面,RAID10在有一个物理硬盘失效的情况下,除了对应的镜像硬盘之外,再有一个物理硬盘失效也是可以承受的。因此,RAID1O有比RAID0+1显著高的容错能力。此外,RAID10在有1个硬盘失效之后恢复系统的代价也比RAID0+1低得多。在RAID1O中,仅1个物理硬盘必须重建;而在RAID0+1中,一个由4个硬盘构成的虚拟磁盘必须重建。不过,重建失效硬盘的代价可以降低,因为当读错的数目开始增大时,作为预防措施就可以更换一个硬盘。在这种情况下,把数据从旧盘复制到新盘就可以了。
由于采用RAID0+1,1个物理硬盘的失效会引起对应的内部RAID0虚拟磁盘失效(通过条块操作结合在一起的4个硬盘),在效果上使得一半的物理硬盘失效。因此,从失效硬盘恢复数据的代价是很大的。由于采用RAID1O,1个物理硬盘失效的后果不像RAID0+1那么严重,所有的虚拟硬盘都是完整的,从失效硬盘恢复数据也比较简单。所以RAID 10用的更多点。
4.4 RAID 4 和RAID 5: 用效验位代替镜像
RAID1O在高度容错的基础上提供了好的性能。但带来的问题是使用RAID1O执行镜像意味着所有的数据都要往物理硬盘写两次。因此,RAID1O需要双倍的存储容量。
RAID4和RAID5的思想是用单个奇偶校验硬盘代替RAIDIO所有的镜像盘。基于5个物理硬盘的RAID4的配置,服务器把数据块A、B、C、D等依次写往虚拟磁盘。RAID控制器把数据块条带分布到开头的4个物理硬盘上。取代镜像数据到另外个硬盘(RAID10),在RAID4中,控制器为每4个数据块计算1个奇偶校验块,并把它写到第五个物理硬盘上。例如,RAID控制器为块A、B、C、D计算奇偶校验块PABCD。如果四个数据盘中有1个失效了,那么RAID控制器可以使用其余3个盘和奇偶校验盘重建失效盘的数据。与RAID0+1和RAIDIO相比,RAID4节省了3个物理硬盘。采用RAID4,服务器也只会看到虚拟磁盘,就像是单个磁盘。
RAID4采用RAID0(条带)把数据块分布到4个物理硬盘上。接着,它不是镜像所有的数据,而是仅为每4个数据块计算和存储1个奇偶校验块。
从数学的观点上看,奇偶校验块是借助逻辑XOR(异或)操作计算的。PABCD=A+B+C+D。这里的符号+表示XOR(异或)运算符。
RAID4和RAID5节省了存储空间,但是要付出一定代价,即改变一个数据块就会改变相关的校验块的值。这意味着对虚拟磁盘的每个写操作都要执行下列步骤:
(1)物理地写奇偶校验块;
(2)重新计算奇偶校验块;
(3)物理地写新计算的奇偶校验块。
由于异或运算的数学性质,重新计算检验和的代价是比较低的。如果块A1被块A2覆盖,△是旧的和新的数据块之间的差,那么△=A1+A2。新的校验块P2可以简单地从旧的校验块P1和△计算,即P2=P1+△。因此,如果PABCD是数据块A、B、C、D的校验块,那么在数据块A被改变之后,新的校验块可以在不必知道其他数据块即B、C、D的条件下进行计算。然而,在覆盖物理硬盘之前,必须把旧的块A1读入控制器,以便能够计算差值△=A1+A2。
在处理RAID4和RAID5的写命令时,RAID控制器使用上述异或运算的数学性质重新计算校验块。
RAID控制器把旧的数据块D1和相关校验块P1从硬盘读进缓冲区,然后它使用异或运算计算旧的校验块和新的校验块之间的差值,即△=D1+D2,并由此计算新的校验块P2=P1+△。因此,重新计算校验块时不必读所有的4个数据块。为了完成对虚拟磁盘的写操作,RAID控制器接着把新的数据块D2和重新计算的校验块P2写到对应的物理磁盘上。
4个步骤:1.服务器改写一个数据块;2.RAID控制器读入旧的数据块和旧的校验块;3.计算新的校验块;4.把新的数据块和新的校验块写到物理硬盘上。
RAID4把所有的校验块都放到单个物理硬盘上。对数据块的写操作被分布到4个物理硬盘上,然而校验盘本身必须处理同样数目的写操作。因此,如果有大量的写操作,那么校验盘就成了RAID4的性能瓶颈。
为了避免性能瓶颈,RAID5不是把所有的校验块都集中保存在一个专门的校验盘中,而是分散到所有的硬盘中。RAID5使用了一种算法,可以计算出对应任何一个条带的校验块的存放位置(物理盘号),从而实现在所有磁盘上交替地存放校验信息。
对于块A、B、C、D,RAID控制器和RAID4一样地把校验块PABCD写到第五个硬盘上;然而对于下4块E、F、G、H,RAID控制器把校验块PEFGH写到第四个物理硬盘上;对于再下4块I、J、K、L,控制器把校验块PIJKL写到第三个物理硬盘上······
RAID4和RAID5都把数据块分布到许多物理硬盘上。使用校验块意味着在一个失效硬盘上的数据可以借助其他的硬盘恢复。与RAIDIO不同的是,在RAID4和RAID5中,两个物理硬盘的同时失效总会导致数据丢失。
和RAID 1和RAID 1O相比,在RAID4和RAID5中一个失效物理硬盘的恢复代价要更大一些。在RAID1和RAID10中,只需要把失效盘的镜像复制到替换硬盘即可。而在RAID4和RAID5中,RAID控制器必须从所有的硬盘读取数据,用这些数据来重新计算丢失的数据块和校验块,然后再把这些块写到更换盘上。
如果RAID4和RAID5的第五个物理硬盘(其上仅有校验块)需要更换,并且必须恢复校验块PABCD,那么RAID控制器必须先从4个物理硬盘读块A、B、C、D,重新计算校验块PABCD,然后写到交换物理硬盘上。如果一个数据盘需要更换,某个数据块必须恢复,那么处理方法也类似。
4.5 RAID 2 和 RAID 3
RAID 2 和 RAID 3 这两种类型用的很少。
RAID 2 主要是在磁盘阵列早期的时代。 那时位错可能导致把写的1 读成0,或者把写0读成1. 在RAID 2中使用海明编码纠正位错,除了实际的数据,还存储冗余信息,这个附加信息允许纠错。
RAID 3 和RAID 4,RAID 5一样,存储效验数据,可以存放在一个单独的硬盘上,也可以分布在所有硬盘上。 不同的是,RAID 3把一个块的数据和相关的效验信息分布在所有的硬盘上。 因此,对于每一次块的访问,所有的磁盘都参与读或写。 在本质上,RAID 3也是一种条带机制,只不过每一次操作,每一个硬盘不是读或写整个块,而是读或写一个块的若干字节。 RAID 3不存在RAID 4和5中写性能差的问题,而且RAID 3中,物理磁盘的旋转是同步的,使得一个块的数据真正可以同步写。 典型的块尺寸是1024 字节。
以前整理的一篇有关RAID文章,不过没有这篇通俗易懂。 供参考:
RAID 磁盘阵列 详解
http://blog.csdn.net/tianlesoftware/archive/2010/03/29/5429634.aspx
4.6 RAID 等级的比较
下表列出了各种流行的RAID等级,给出了在容错、写性能、读性能和空间要求方面的比较。需要注意的是,这种比较只是基于理论的。在实践中,磁盘子系统的制造商在下面列出的若干方面还有自己的选择:
(1)内部物理磁盘的选择;
(2)在磁盘子系统内部通信使用的I/0技术;
(3)对多个I/0通道的使用;
(4)RAID控制器的实现;
(5)缓冲区的大小;
(6)缓冲算法本身。
流行的RAID等级在理论上的比较
RAID等级 |
容错 |
读性能 |
写性能 |
空间需求 |
RAID0 |
无 |
好 |
很好 |
最小 |
RAID1 |
高 |
差 |
差 |
高 |
RAID10 |
很高 |
很好 |
好 |
高 |
RAID4 |
高 |
好 |
非常差 |
低 |
RAID5 |
高 |
好 |
很差 |
低 |
RAID0适用于与磁盘失效保护相比,写性能是最重要的情况下的应用。这些应用的例子有影片和视频产品的多媒体数据存储,以及那些如果不能记录所有的测量值,整个测量序列就会变得没有价值的物理实验的记录。在后一种情况下,比较好的做法是先把所有的测量数据记录在一个RAID0阵列上,在实验之后再把它复制到,比如说,一个RAID5阵列上。在数据库中,RAID0被用来暂存作为复杂请求的中间结果的片段的快速存储。
关于RAID1,由于仅使用两个物理硬盘,其性能和容量会受限。因此,RAID1适用于小的数据库。对于这类应用,虚拟RAID5或RAID10的配置显得太大了。RAID 1的另一个领域是和RAID0结合使用。
RAID10用于需要高的写性能和高的容错能力的场合。在过去的一个很长的时间内,人们都把数据库记录文件存储在RAID 1O上。数据库把所有的改变都记录在记录文件中,使得应用有一个高的写性能。在系统崩溃后,仅当所有的记录文件被完全提供时,才能保证数据库的重启,因此该应用对容错能力也有很高的要求。
RAID4和RAID5以比较差的写性能为代价节省磁盘空间。在很长时间内,作为一个常规,在读操作对写操作的比例为7:3时使用RAID5。需要指出的是,当前在市场上提供的许多存储系统都具有优秀的写性能,它们在内部其实是使用RAID4或RAID5存储数据。
五. 使用缓存加速对磁盘的访问
所有的计算机系统都使用缓存来加速操作过程。特别地,在磁盘子系统中,缓存被用来加速对物理硬盘的读写访问。在这里,我们将讨论两种类型的缓存:
1.在硬盘上的缓存
每个硬盘都有一个很小的缓存。这是必要的,因为I/0通道到磁盘控制器的传输速度要比磁盘控制器从物理硬盘读或向物理硬盘写的速率更高。如果服务器或RAID控制器把一块数据往物理硬盘上写,那么磁盘控制器就把它存储在其缓存中。这样,磁盘控制器就可以在由它自已安排的时间内,把该数据块写入物理硬盘;同时,I/0通道可以被用来传输其他硬盘的数据。许多RAID等级都使用这种方法来提高虚拟磁盘的性能。
读访问的加速也采用类似的方式。如果一个服务器或一个中间的RAID控制器要读一个数据块,那么它就把被请求的块的地址发送到硬盘控制器。当硬盘控制器以比较慢的速率把这个完整的块从物理硬盘向它的缓存复制时,可以把I/0通道用于其他的数据传输。磁盘控制器以I/0通道的比较高的数据速率把数据块从它的缓存传送到服务器。
2. 在RAID控制器中的缓存
在RAID控制器中的缓存又可以划分成写缓存和读缓存两类。
(1)在RAID控制器中的写缓存
除了硬盘驱动器有缓存外,许多磁盘子系统也有它们的缓存。在一些磁盘子系统中,这个缓存在大小上可达数千兆字节。结果与硬盘的缓存相比,磁盘子系统能够缓存多得多的数据。写缓存应该有一个备用电池,并且在理想的情况下是镜像的。为了使得在写缓存中的数据即使在发生停电的情况下也不会丢失,电池备份是必要的。写缓存可以显著地减少RAID4和RAID5的写性能缺陷,特别是对于顺序的写访问,并且可以平滑负载峰值。
许多应用都不是以连续的速率写数据,而是采用批处理的方式。如果一个服务器把多个数据块发送到磁盘子系统,那么起初控制器会把所有的数据块都放进写缓存,并且立即,向服务器报告所有的数据都已安全地写到驱动器上。然后,磁盘子系统再把数据从写缓存复制到比较慢的物理硬盘上,给下一个写高峰腾出缓存空间。
(2)在RAID控制器中的读缓存
与加快写操作的情况相比,使用缓存加速读操作要困难得多。为了加快服务器的读访问,磁盘子系统控制器必须在服务器请求数据之前把相当数目的数据块从较慢的物理硬盘复制到较快的缓存。
这样做的问题在于,磁盘子系统控制器事先很难知道服务器下一次会请求什么样的数据。在磁盘子系统中的控制器既不知道存储在数据块中的信息的结构,也不知道具体的应用所遵循的访问模式。因此,控制器只能够分析过去的数据访问,并由此来推断服务器下次将访问哪些数据块。在顺序读的过程中,这种预测比较简单,但在随机访问的情况下,预测几乎是不可能的。作为常规,好的RAID控制器能够做到在混合的读模式中,从读缓存提供大约40%的请求数据块。
因为不知道应用使用数据的模式,磁盘子系统不能够进一步提高由缓存提供的读访问的比率(也称命中率)。因此人们通常还在应用内部进一步配置缓存。例如,应用程序打开一个文件以后,文件系统就把该文件所有的块都装入内存。然而花这样的代价是否值得还需要考虑,因为有时候应用程序可能不再请求访问更多的数据块。
六. 智能磁盘子系统
6.1 即时复制
即时复制可以做到在几秒的时间内在一个磁盘子系统内部复制数太字节的数据。使得另一个服务器在几秒钟之后就能够实际地访问复制过去的数据。
实际的复制过程需要花费较长的时间。虚拟复制意味着磁盘子系统向附接的服务器假装它们能在数秒的短时间内完成数据复制工作。所有的即时复制的实现都需要使用控制器的处理时间和缓存,并把负载放到内部I/0通道和硬盘上。
作为示例,假定在复制命令发布之前没有任何数据,只是在被请求执行即时复制之后才开始复制。为此,控制器需要管理两个数据区域,一个用于原始区域,另一个用于由即时复制产生的复制数据。 先考虑服务器1对原始数据的访问。读操作完全没有问题,总是访问原始数据区域,但处理写操作应特别注意。如果是在开始即时复制后第一次改变一个数据块,那么控制器必须首先把旧的数据块复制到复制数据区域,以便服务器2能够继续访问旧的数据。只有在那之后,控制器才可以把服务器要改变的块写到原始数据区域。
服务器2对于由即时复制产生的复制数据的访问要稍微简单一些。在这种情况下,写操作是没有问题的,控制器总是把服务器2请求写的所有的块都写到复制数据区域。在另一方面,对于读操作,控制器必须确定服务器2要读的数据块是否已经复制了。这将决定它是从原始数据区域,还是从复制数据区域读这个数据块,然后把它转发给服务器。
6.2 远程镜像
即时复制很适合在磁盘子系统内部进行数据的复制。虽然使用即时复制产生的数据复制可以克服应用错误(例如偶然地删除一个文件系统)和逻辑错误(例如在数据库程序中的错误),但它们不能应对磁盘子系统的失效。像停电这样简单的问题都可能阻止对生产数据和复制数据的访问达数小时。在磁盘子系统处的火灾将毁坏原始数据和复制数据。因此,为了保护数据,不可以把生产数据和复制数据存放在地理上临近的位置。
远程镜像提供防御灾害的保护,现代磁盘子系统可以把数据或部分数据镜像到相隔很远的第二磁盘子系统,整个的远程镜像操作由两个参与镜像的磁盘子系统处理,远程镜像对于应用服务器不可见,并且不消耗应用服务器的资源。然而,远程镜像需要使用在两个磁盘子系统中的资源,以及把两个磁盘子系统连接在一起的I/0通道中的资源,这就意味着由此产生的性能减退可能影响到应用。
以下介绍一个使用远程镜像取得高的可用性的例子。安装在主数据中心的配置有应用服务器、磁盘子系统以及相关的数据。这个磁盘子系统通过远程镜像把应用数据镜像到第二磁盘子系统。第二磁盘子系统安装在相隔50km的备份数据中心。远程镜像保证在备份数据中心的应用数据不断更新,并且更新第二磁盘子系统的间隔时间是可配置的。如果在主数据中心的磁盘子系统失效了,可以使用第二磁盘子系统的数据启用在备份数据中心的备份应用服务器,应用操作可以继续进行。我们将在后面的章节中介绍连接两个磁盘子系统的I/O技术。
远程镜像还可以分成同步和异步两种。在同步远程镜像中,第一个磁盘子系统在把数据发送到第二磁盘子系统之后再确认应答服务器的写命令。相比之下,异步远程镜像则立即确认应答服务器的写命令,随后再把数据块的复制发送给第二个磁盘子系统。
同步远程镜像的数据流下。服务器把块A写到第一个磁盘子系统。数据块在到达第一个磁盘子系统的写缓存之后立即被发往第二磁盘子系统;第二个磁盘子系统开始也把数据块存放在写缓存中。第一个磁盘子系统等待第二磁盘子系统报告写操作的完成。不过,第一磁盘子系统并不关心数据块是否仍然存放在第二磁盘子系统的写缓存中,还是已经被写到了第二磁盘子系统的物理硬盘上;它在收到第二磁盘子系统对数据块写操作的确认应答后,就会向服务器确认这个数据块写操作的完成。
同步远程镜像的优点是由第二磁盘子系统存储的数据总是最新的。这就意味着,一旦第一个磁盘子系统失效了,应用程序可以通过使用在第二磁盘子系统上的数据继续用最近的数据工作。
同步远程镜像的缺点是,从第一个磁盘子系统向第二磁盘子系统复制数据,以及第二磁盘子系统向第一个磁盘子系统发送确认应答,都增加了第一个磁盘子系统对服务器的响应时间。正是这个响应时间会影响诸如数据库和文件系统这类应用的吞吐率。响应时间的一个重要因素是在两个磁盘子系统之间的信号传输时间。说到底,它们之间的通信是用某种形式的物理信号编码的,信号以某个速率传播。如果从服务器经过第一个磁盘子系统到达第二磁盘子系统的线缆长度不超过6~10km,那么就值得使用同步远程镜像。
如果要在更长的距离上进行镜像,那么就需要采用异步远程镜像。在异步远程镜数据流像这种方法中,第一个磁盘子系统在它把数据暂时存放在写缓存后就立即确认应答对该数据的接收。随后,第一个磁盘子系统再把数据复制发送给第二磁盘子系统。对于发送写请求的服务器来说,第二磁盘子系统对第一个磁盘子系统的写确认是不重要的。
使用异步远程镜像所取得的快速响应时间的代价是明显的。和同步远程镜像相比,在异步远程镜像中不能保证在第二磁盘子系统中的数据是最新的。当第一个磁盘子系统已经向服务器发送了写应答而数据块尚未写进第二磁盘子系统时就会出现这样的问题。
如果既想在长距离上镜像数据,又不想仅使用异步镜像,那么就必须使用3个磁盘子系统。开头两个磁盘子系统可以只距离几千米,因此在它们之间可以使用同步远程镜像。此外,再采用异步远程镜像把第二个磁盘子系统的数据镜像到第三磁盘子系统。显然,这个解决方案所花的代价是较大的。因此,仅对非常重要的应用才会采用这种方法。
6.3 逻辑设备号掩盖
逻辑设备号掩盖是由RAID提供的一个重要功能,它限制服务器对磁盘子系统所包含的硬盘的访问。
一个磁盘子系统通过允许对具体的物理硬盘或使用RAID内建的虚拟磁盘的访问,使得其内部物理硬盘可经过连接端口提供给服务器。根据SCSI协议,在磁盘子系统外部可见的磁盘(物理的或虚拟的)也称作 LUN(LogicalUnitNumber,逻辑设备号)。
没有LUN掩盖,每个服务器将都能看到磁盘子系统提供的所有硬盘。一个连接3个服务器且没有LUN掩盖的磁盘子系统,每个服务器都看到磁盘子系统对外部出口的所有硬盘。结果每个服务器都看到比自己需要的还多的硬盘。特别地,对于每个服务器,运行在不同服务器上的应用所使用的那些硬盘也是可见的。这就意味着,每个服务器对硬盘的配置操作必须非常小心,服务器1对分配给服务器3的LUN为3的硬盘执行错误的格式化会破坏在服务器3上运行的应用的数据。
LUN掩盖通过指定在外部可见的硬盘,使上述混乱情况变成有序,它限制对磁盘子系统出口的硬盘的可见性。LUN掩盖是如何把上述中的混乱变成有序的。现在,每个服务器仅能看到它实际需要使用的硬盘。因此,LUN掩盖在出口的硬盘和访问硬盘的服务器之间担当一个过滤器的角色。
在LUN掩盖中,一个服务器不再可能破坏属于另一个服务器上运行的应用的数据。配置错误还是可能的,但结果不再是毁灭性的,而且配置错误现在可以被比较快地跟踪和处理,因为信息在磁盘子系统内部被捆绑,而不是分布在所有的服务器上。
LUN掩盖可划分成基于端口和基于服务器两类。
(1)在基于端口的LUN掩盖中,过滤器仅使用端口工作。这就意味着,通过同一端口连接到磁盘子系统的所有服务器会看到同样的磁盘。基于端口的LUN掩盖主要用于低端磁盘子系统。
(2)基于服务器的LUN掩盖可提供更大的灵活性。在这种方法中,每个服务器仅看到分配给它自己的硬盘,而不管它连接到哪个端口,也不管是否有其他服务器连接到同一端口。
七. 磁盘子系统的可提供型
磁盘子系统是由具有一定容错能力的标准部件组装形成的。我们已经说明了如何把这些标准部件结合在一起使得整个磁盘子系统具有比单个部件显著高的容错级别。现在的磁盘子系统可以经受任何部件的失效,而不会丢失数据或变得不可访问。也可以把这样的磁盘子系统称作“无单点失效”。
下面列出的是可以采取的提高数据可提供性的具体措施:
(1)使用RAID过程把数据分布到多个硬盘,并辅以附加的纠错数据。在有一个物理硬盘失效的情况发生之后,有缺陷的硬盘的数据可以从其余的数据和附加的数据重建。
(2)具体的硬盘使用海明编码存储数据。海明编码允许即使在硬盘上的一些位被改变了的情况下,数据也能正确地恢复。在磁盘控制器中的自我诊断功能连续地监视位错率和诸如温度传感器和主轴振动传感器等物理变量。在错误率增加的情况下,硬盘可以在丢失数据之前就被更换。
(3)把每个内部物理硬盘通过两个内部I/0通道连接到控制器。如果有一个I/0通道失效了,还可以使用另一个I/0通道。
(4)在磁盘子系统中的控制器可以用多个控制器实例来实现,如果有一个控制器实例失效了,可以用其余实例中的一个来接替有缺陷的实例的工作。
(5)诸如电源、电池和风扇等辅助部件通常都配置两套,以便其中一套部件的失效也不会影响工作。在连接电源的时候应该保证不同的电源线通过不同的保险丝。
(6)让服务器和磁盘子系统之间的连接通过多个I/0通道,如果其中一个I/0通道失效了,还可以使用其余的I/0通道。
(7)使用即时复制防止逻辑错误。例如,可以每小时为数据库建立1次即时复制。如果一个表被偶然地删除了,那么可以把数据库恢复到上一次的即时复制,那时候数据库还是完整的。
(8)使用远程镜像防止物理损坏。例如,如果由于某种原因,原始数据不可访问了,那么可以使用由远程镜像产生的数据复制继续操作。
上述措施表明,磁盘子系统可以保证可提供性达到很高的水平。整个IT系统的可提供性的其他重要因素是应用程序或应用服务器本身的可提供性,以及连接应用服务器和磁盘子系统的通路的可提供性。
整理自《存储网络技术与应用》
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满)
DBA3 群:62697850 DBA 超级群:63306533;
聊天 群:40132017
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
相关推荐
《STK-Disk913x:配置与管理913X OPENstorage磁盘子系统》 本手册详细介绍了如何配置和管理StorageTek的913X OPENstorage磁盘子系统,该系统是专为满足企业级存储需求而设计的高性能、高可靠性的解决方案。913X磁盘...
操作系统实验五的目的是为了让学生熟悉Windows 2000的文件系统,了解NTFS文件系统的积极意义,掌握优化Windows 2000磁盘子系统的根本法,进一步理解现代操作系统文件管理知识。 文件系统 文件系统是操作系统中用于...
5. **I/O子系统**:理解操作系统的I/O模型,如中断驱动I/O、DMA(直接内存访问)和I/O多路复用,对于设计虚拟磁盘至关重要。你需要考虑如何在用户空间和内核空间之间安全高效地进行I/O操作。 6. **错误处理和恢复**...
例如,文件服务主要依赖于磁盘子系统和网络子系统,保证数据的快速传输;数据库服务则更注重CPU性能和磁盘I/O,以处理大量随机读写操作;邮件服务关注网络、内存和磁盘性能,以高效处理邮件收发;Web服务则根据内容...
为了实现这一目标,菲利普斯公司采用了IBM公司的高可用性群集多处理(HACMP)软件,以及IBM 7133串行存储体系结构(SSA)磁盘子系统。通过这两种技术的结合使用,菲利普斯公司极大地提升了系统运行的可靠性和连续性...
通过本课程的学习,你将能够描述主机环境、理解连接性组件和协议的作用、了解智能磁盘子系统的特性,并掌握数据在主机与存储设备之间流动的基本过程。本课件共包含五个模块,分别是主机环境、连接性、物理磁盘、RAID...
IBM是世界上最大的信息工业跨国公司之一,拥有综合先进技术与结构的全系列产品,包括新...估算一个数据库系统尺寸,设计一个RDBMS系数成Lf磁盘子系统等;第三部分介绍了系统优化,包括;数据库实现,监视DBMS系统性,
操作系统课程设计磁盘调度算法是计算机操作系统中的一种重要算法,用于确定磁盘读写操作的顺序,以提高磁盘的读写效率。本文将对磁盘调度算法的设计进行详细的介绍,并对其实现过程进行剖析。 1. 操作系统课程设计...
在这个系统中,结合C#编程语言,我们可以创建功能丰富的磁盘管理系统。C#是.NET Framework的主要编程语言,它具有面向对象、类型安全、性能优秀等特点,非常适合用于开发这种管理工具。 磁盘管理系统的核心功能包括...
实验5主要探讨的是索引文件和文件系统,特别是Windows操作系统中的磁盘子系统优化。文件系统是操作系统管理和组织磁盘存储的关键部分,决定着如何...在优化Windows磁盘子系统时,理解并合理运用这些概念是至关重要的。
是内存泄漏,磁盘子系统瓶颈,还是某个特定应用程序在可扩展性方面有限制?有一些途径可以发现和了解引起性能问题的根源,并且有可能消除它。本文给出了从哪里入手的一些建议。文中介绍了如何着手性能方面的考虑以及...
其控制器子系统和磁盘子系统的设计允许在标准19寸计算机设备机架上安装,方便了硬件的部署和维护。 综上所述,惠普的零售业存储方案通过先进的SAN架构和高性能的VA 7100磁盘阵列,不仅满足了商业零售连锁企业在数据...
### WINDOWS存储子系统性能分析 #### 引言 在当今高度依赖信息技术的社会中,计算机系统的性能至关重要,而其中存储子系统的性能则是整个系统性能的重要组成部分。本文将详细探讨运行Microsoft Windows 2000、...
此外,随着用户对存储容量需求的增加,磁盘子系统的性能问题越来越突出,因此进行有效的磁盘I/O调优至关重要。 #### 三、AIX I/O堆栈概述 AIX操作系统中的I/O堆栈由多个层次组成,主要包括: - 文件系统缓存(如...
3. **磁盘子系统**:磁盘子系统负责存储所有的软件和用户数据,是虚拟化服务器的数据仓库。为了确保数据的安全性和性能,建议使用高速稳定的SAS硬盘。此外,根据虚拟机的数量和类型,还需要合理规划磁盘空间,以满足...
本文将通过案例介绍在生产环境中实施Linux性能调优的具体方法,详细内容涉及网络性能优化、磁盘子系统调优以及TCP参数调优等多个方面。 首先,Linux系统中的网络性能优化是调优工作的重点之一。通过调整内核参数,...