存储基础知识:磁盘阵列技术(一)

    由磁盘阵列角度来看
  
    磁盘阵列的规格最重要就在速度,也就是CPU的种类。我们知道SCSI的演变是由SCSI 2 (Narrow, 8 bits, 10MB/s), SCSI 3 (Wide, 16bits, 20MB/s), Ultra Wide (16bits, 40MB/s), Ultra 2 (Ultra Ultra Wide, 80MB/s), Ultra 3 (Ultra Ultra Ultra Wide, 160MB/s),在由SCSI到Serial I/O,也就是所谓的 Fibre Channel (FC-AL, Fibre Channel – Arbitration Loop, 100 ?C 200MB/s), SSA (Serial Storage Architecture, 80 ?C 160 MB/s), 在过去使用 Ultra Wide SCSI, 40MB/s 的磁盘阵列时,对CPU的要求不须太快,因为SCSI本身也不是很快,但是当SCSI演变到Ultra 2, 80MB/s时,对CPU的要求就非常关键。一般的CPU, (如 586)就必须改为高速的RISC CPU, (如 Intel RISC CPU, i960RD 32bits, i960RN 64 bits),不但是RISC CPU, 甚至于还分 32bits, 64 bits RISC CPU 的差异。586 与 RISC CPU 的差异可想而知 ! 这是由磁盘阵列的观点出发来看的。


    由服务器的角度来看
  
    服务器的结构已由传统的 I/O 结构改为 I2O ( Intelligent I/O, 简称 I2O ) 的结构,其目的就是为了减少服务器CPU的负担,才会将系统的 I/O 与服务器CPU负载分开。Intel 因此提出 I2O 的架构,I2O 也是由一颗 RISC CPU ( i960RD 或I960RN ) 来负责 I/O 的工作。试想想若服务器内都已是由 RISC i960 CPU 来负责 I/O,结果磁盘阵列上却仍是用 586 CPU, 速度会快吗 ?
  
    由操作系统的角度来看
  
    在操作系统都已由 32 bits 转到 64 bits,磁盘阵列上的CPU 必须是 Intel i960 RISC CPU才能满足速度的要求。586 CPU 是无法满足的!
  
    磁盘阵列的功能
  
    使用磁盘阵列的好处,在于数据的安全、存取的速度及超大的存储容量。如何确保数据的安全,则取决于磁盘阵列的设计与品质。其中几个功能是必须考虑的:是否有环境监控器针对温度、电压、电源、散热风扇、硬盘状态等进行监控。磁盘阵列内的硬盘连接方式是用SCA-II整体后背板还是只是用SCSI线连的?在 SCA-II整体后背板上是否有隔绝芯片以防硬盘在热插拔时所产生的高/低电压,使系统电压回流,造成系统的不稳定,产生数据丢失的情形。我们一定要重视这个问题,因为在磁盘阵列内很多硬盘都是共用这同一SCSI总线!一个硬盘热插拔,可不能引响其它的硬盘!甚幺是热插拔或带电插拔?硬盘有分热插拔硬盘, 80针的硬盘是热插拔硬盘,68针的不是热插拔硬盘,有没有热插拔,在电路上的设计差异就在于有没有保护线路的设计,同样的硬盘拖架也是一样有分真的热插拔及假的热插拔的区别。磁盘阵列内的硬盘是否有顺序的要求?也就是说硬盘可否不按次序地插回阵列中,数据仍能正常的存取?很多人认为不是很重要,不太会发生,但是可能会发生的,我们就要防止它发生。假如您用六个硬盘做阵列,在最出初始化时,此六个硬盘是有顺序放置在磁盘阵列内,分为第一、第二…到第六个硬盘,是有顺序的,如果您买的磁盘阵列是有顺序的要求,则您要注意了:有一天您将硬盘取出,做清洁时一定要以原来的摆放顺序插回磁盘阵列中,否则您的数据可能因硬盘顺序与原来的不苻,磁盘阵列上的控制器不认而数据丢失!因为您的硬盘的SCSI ID号乱掉所致。现在的磁盘阵列产品都已有这种不要求硬盘有顺序的功能,为了防止上述的事件发生,都是不要求硬盘有顺序的。
  
    我们为什幺需要磁盘阵列
  
    目前人们逐渐认识了磁盘阵列技术。磁盘阵列技术可以详细地划分为若干个级别0-5 RAID技术,并且还发展了所谓的 RAID Level 10, 30, 50的新的级别。RAID是廉价冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称。用RAID的好处简单的说就是:安全性高,速度快,数据容量超大某些级别的RAID技术可以把速度提高到单个硬盘驱动器的400%。磁盘阵列把多个硬盘驱动器连接在一起协同工作,大大提高了速度,同时把硬盘系统的可靠性提高到接近无错的境界。这些“容错”系统速度极快,同时可靠性极高。本节将讨论这些新技术,以及不同级别RAID的优缺点。我们并不想涉及那些关键性的技术细节问题,而是将磁盘阵列和RAID技术介绍给对它们尚不熟悉的人们。相信这将帮助你选用合适的RAID技术。
  
    RAID级别的定义
  
    下表提供了6级RAID的简单定义,本书其后部分将对各级RAID进行更详尽的描述。
  
    RAID级别,描述,速度* ,容错性能
  
    RAID 0,硬盘分段,硬盘并行输入/出,无
  
    RAID 1,硬盘镜像,没有提高,有(允许单个硬盘错)
  
    RAID 2,硬盘分段加汉明码纠错,没有提高,有(允许单个硬盘错)
  
    RAID 3,硬盘分段加专用,奇偶校验盘,硬盘并行输入/出,有(允许单个硬盘错)
  
    RAID 4,硬盘分段加专用,奇偶校验盘需异步硬盘,硬盘并行输入/出,有(允许单个硬盘错)
  
    RAID 5,硬盘分段加奇偶校验,分布在各硬盘,
        硬盘并行输入/出比RAID0稍慢,有(允许单个硬盘错)
  
    *对于单一容量昂贵硬盘(SLED)的性能提高
  
  
    硬盘数据跨盘(Spanning)
  
    数据跨盘技术使多个硬盘像一个硬盘那样工作,这使用户通过组合已有的资源或增加一些资源来廉价地突破现有的硬盘空间限制。 4个300兆字节的硬盘驱动器连结在一起,构成一个SCSI系统。用户只看到一个有1200兆字节的C盘,而不是看到C, D, E, F, 4个300兆字节的硬盘。在这样的环境中,系统管理员不必担心某个硬盘上会发生硬盘安全检空间不够的情况。因为现在1200兆字节的容量全在一个卷(Volume)上(例如硬盘C上)。系统管理员可以安全地建立所需要的任何层次的文件系统,而不需要在多个单独硬盘环境的限制下,计划他的文件系统。硬盘数据跨盘本身并不是RAID,它不能改善硬盘的可靠性和速度。但是它有这样的好处,即多个小型廉价硬盘可以根据需要增加到硬盘子系统上。
  
    硬盘分段(Disk Striping, RAID 0)
  
    硬盘分段的方法把数据写到多个硬盘,而不是只写到一个盘上,这也叫作RAID O,在磁盘阵列子系统中,数据按系统规定的“段”(Segment)为单位依次写入多个硬盘,例如数据段1写入硬盘0,段2写入硬盘1,段3写入硬盘2等等。当数据写完最后一个硬盘时,它就重新从盘0的下一可用段开始写入,写数据的全过程按此重复直至数据写完。段由块组成,而块又由字节组成。因此,当段的大小为4个块,而块又由256个字节组成时,依字节大小计算,段的大小等于1024个字节。第1~1024字节写入盘0,第1025~2048字节写盘1等。假如我们的硬盘子系统有5个硬盘,我们要写20,000个字节,则数据将采用硬盘分段方式存储。 总之,由于硬盘分段的方法,是把数据立即写入(读出)多个硬盘,因此它的速度比较快。实际上,数据的传输是顺序的,但多个读(或写)操作则可以相互重迭进行。这就是说,正当段1在写入驱动器0时,段2写入驱动器1的操作也开始了;而当段2尚在写盘驱动器1时,段3数据已送驱动器2;如此类推,在同一时刻有几个盘(即使不是所有的盘)在同时写数据。因为数据送入盘驱动器的速度要远大于写入物理盘的速度。因此只要根据这个特点编制出控制软件,就能实现上述数据同时写盘的操作。遗憾的是RAID 0不是提供冗余的数据,这是非常危险的。因为必须保证整个硬盘子系统都正常工作,计算器才能正常工作,例如,假使一个文件的段1(在驱动器0),段2(在驱动器1),段3(在驱动器2),则只要驱动器0, 1, 2中有一个产生故障,就会引起问题;如果驱动器1故障,则我们只能从驱动器物理地取得段1和段3的数据。幸运的是可以找到一个解决办法,这就是硬盘分段和数据冗余。下面一小节将讨论这个问题。
  
    硬盘镜像(RAID 1)
  
    硬盘镜像(RAID 1)是容错磁盘阵列技术最传统的一种形式,在工业界中相对地最被了解,它最重要的优点是百分之百的数据冗余。RAID 0通过简单地将一个盘上的所有数据拷贝到第二个盘上(或等价的存储设备上)来实现数据冗余,这种方法虽然简单且实现起来相对较容易,但它的缺点是要比单个无冗余硬盘贵一倍,因为必须购买另一个硬盘用作第一个硬盘的镜像。 硬盘镜像最简单的形式,是通过把二个硬盘连结在一个控制器上来实现的。数据写在某一硬盘上时,它同时被写在相应的镜像盘上。当一个盘驱动器发生故障,计算器系统仍能正常工作,因为它可以在剩下的那块好盘上操作数据。因为二个盘互为镜像,哪个盘出故障都无关紧要,二是盘在任何时间都包含相同的数据,任何一个都可以当作工作盘。在硬盘镜像这个简单的RAID方式中,仍能采用一些优化速度的方法,例如平衡读请求负荷。当多个用户同时请求得到数据时,可以将读数据的请示分散到二个硬盘中去,使读负荷平均地分布在二个硬盘上。这种方法可观地提高了读数据的性能,因为二个硬盘在同一时刻读取不同的数据片。但是硬盘镜像不能改善写数据的性能。被“镜像”的硬盘也可被镜像到其它存储设备上,例如可擦写光盘驱动器,虽然以光盘作镜像盘没有用硬盘的速度快,但这种方法比没有使用镜像盘毕竟减少了丢失数据的危险性。总之,镜像系统容错性能非常好,并可以提高读数据的速度;它的缺点是需要双份硬盘,因此价格较高。