随着硬盘技术的不断发展,DIY服务器时可选的硬盘和RAID越来越多,如何选用合适的硬盘RAID,既能提高服务器性能,又具有价格优势,是DIY爱好者关心的话题。笔者就建设世界网络(www.linkwan.com)过程中DIY服务器硬盘RAID选用的经验共享给大家,希望能对大家有所帮助。
一、 常用硬盘类型简介
目前常用硬盘分为IDE、SATA、SCSI几种,最大的区分的就是接口上的不同。服务器上一般采用后面两种:SATA和SCSI,也有DIY采用比较新的SAS硬盘。下面我们就SATA、SCSI、SAS等接口技术作简单介绍。
1、 SATA 接口
SATA(Serial Advanced Technology Attachment)是串行ATA的缩写,目前能够见到的有SATA-I和SATA-II两种标准,对应的传输速度分别是150MB/s和300MB/s。SATA主要用于取代遇到瓶颈的PATA接口技术。从数据传输角度来看,SATA比PATA速度更快,抗干扰能力更强。
SATA一般采用点对点的连接方式,即一头连接主板上的SATA接口,另一头直接连硬盘,没有其他设备可以共享这条数据线。 另外,SATA具备热插拨功能,可以更加方便的组建磁盘阵列。串口的数据线由于只采用了四针结构,因此较并口安装起来更加便捷,更有利于缩减机箱内的线缆,有利散热。
2、 SCSI 接口
SCSI(Small Computer System Interface)是一种专门为小型计算机系统设计的存储单元接口模式,可以对计算机中的多个设备进行动态分工操作,对于系统同时要求的多个任务可以灵活机动的适当分配,动态完成。
SCSI从最初的SCSI(8bit)发展到今天的Ultra 320 SCSI,速度从1.2MB/s到现在的320MB/s,有了质的飞跃,目前的主流SCSI硬盘都采用了Ultra 320 SCSI接口。SCSI硬盘也有专门支持热拔插技术的接口,与SCSI背板配合使用,可实现硬盘的热拔插。
3、 SAS 接口
SAS 是Serial Attached SCSI的缩写,即串行连接SCSI。SAS技术引入了SAS扩展器,使SAS系统可以连接更多的设备,其中每个扩展器允许连接多个端口,每个端口可以连接SAS设备。SAS也兼容了SATA,这使得SAS的背板可以兼容SAS和SATA两类硬盘, 对用户来说,使用不同类型的硬盘时不需要再重新投资。
和传统并行SCSI接口比较起来,SAS不仅在接口速度上得到显著提升(现在主流Ultra 320 SCSI速度为320MB/s,而SAS才刚起步速度就达到300MB/s,未来会达到600MB/s甚至更多),而且由于采用了串行线缆,不仅可以实现更长的连接距离,还能够提高抗干扰能力,并且这种细细的线缆还可以显著改善机箱内部的散热情况。
二、 服务器硬盘的选用
SCSI硬盘相对于SATA硬盘,有许多优点:
SCSI可支持多个设备,也就是说所有的设备只需占用一个IRQ,同时SCSI还支持相当广的设备,如CD-ROM、DVD、CDR、磁盘、磁带机、扫描仪等。
SCSI允许在对一个设备传输数据的同时,另一个设备对其进行数据查找。这就可以在多任务操作系统如Linux、Windows NT中获得更高的性能。
SCSI占用CPU较低,在多任务系统中占有着明显的优势。由于SCSI卡一般带有自己的I/O处理芯片,可处理SCSI设备的事务,在工作时主机CPU只要向SCSI卡发出工作指令,SCSI卡就会自己进行工作,工作结束后返回工作结果给CPU,在整个过程中,CPU均可以进行自身工作。 而SATA工作时别的操作都需要等待,这就是为什么在读取硬盘的时候你会觉得系统“卡”的原因,SCSI就不会有这样的问题。
SCSI设备还具有智能化,SCSI卡自己可对CPU指令进行排队,这样就提高了工作效率。在多任务时磁盘会在当前磁头位置,将邻近的任务先完成,再逐一进行处理。
虽然SCSI设备价格高些,但与SATA相比,SCSI的性能更稳定,可靠性更好,即SCSI的MTBF比IDE及SATA的MTBF要好。
MTBF是用来衡量硬盘性能的一个重要的标准,指的是一个硬盘可以连续工作而不出错的平均时间(MTBF详情可参考:http://www.linkwan.com/gb/tech/05110501.htm )。从MTBF角度看,SCSI硬盘明显比SATA接口硬盘大,一般SCSI硬盘的MTBF可达1,000,000小时,IDE /SATA硬盘MTBF一般为800,000小时左右。
由于SCSI具有CPU占用率低,多任务并发操作效率高,连接设备多等优势,对于大多数的服务器应用,建议采用SCSI硬盘,并采用最新的Ultra320 SCSI控制器。而一般的PC机,则选用传统的IDE /SATA硬盘即可,具有较高的性价比。
SCSI的优点很多,但是我们在决定选用时,也不能忽视它的缺点:
在同样条件下,SCSI磁盘内部传输速度要比SATA IDE慢一些。因为SCSI磁盘的控制指令比SATA IDE磁盘复杂,SCSI磁盘在标识磁盘扇区时使用了线性的概念,不像SATA IDE磁盘,是柱面、磁头、扇区这种三维格式。目前的操作系统内部也使用线性编号的扇区,但BIOS只接受三维格式的磁盘请求,所以操作系统必须把磁盘请求转换为三维格式,这样IDE磁盘可直接使用,但SCSI为了和BIOS兼容还得将三维格式的磁盘请求转换为线性编号,这样磁盘的数据传输率就大大降低了,所以说SATA-II 在内部传输和随机数据下比SCSI要快。
SCSI的发热量较SATA和IDE要大,这个是转速决定的,转速越高,发热量越大。
SCSI的价格高,目前情况下价格/容量比是SATA的3倍以上。
选择硬盘时,除了需了解上面提到的性能特点外,还需要考虑转速、单碟容量、平均寻道时间、缓存等因素,并结合资金预算,选定性价比最合适的硬盘。
三、 RAID的选用
独立磁盘冗余阵列的英文名称为Redundant Array of Independent Disks,也就是我们通常所说的RAID。RAID的作用就是把多个独立的磁盘组合在一起,成为一个磁盘组,而这个磁盘组我们可以将它看成一个大的磁盘,这是因为这个磁盘组的性能并没有受到多个磁盘组合而造成性能减弱,相反还有所增强,因此,RAID技术被广泛用于数据存储行业中。在大型存储中,我们通常通过存储机柜来实现数据存储;而在服务器上的存储,我们就通过支持RAID功能的RAID卡来实现。
1、 RAID种类及作用
RAID分为很多种,如常见的RAID 0、RAID 1一直到RAID 7,另外还有组合,如RAID0+1(也被称为RAID 10)、RAID0+5(50)、RAID 5+3(RAID 53),每一个RAID级别都有其优点和缺点。下面和大家一起认识四种常用的RAID (RAID 0、RAID1、RAID0+1、RAID5)工作方式。
RAID 0
采用磁盘分段的方法把数据写到多个磁盘,而不是只写到一个盘上,这叫RAID 0,在磁盘阵列子系统中,数据按系统规定的“段”(Segment)为单位依次写入多个磁盘,例如数据段1写入磁盘1,段2写入磁盘2,段3写入磁盘3等等。当数据写完最后一个磁盘时,它就重新从盘1的下一可用段开始写入,写数据的全过程按此重复直至数据写完;简单来说RAID 0使用的是平行存取方式。
我们来看一下RAID 0系统的工作原理,图1是由三块磁盘组成的RAID 0系统:
图1 RAID 0系统的工作原理
由上图可以清楚地看到,该系统由三块磁盘同时读写同一数据的不同数据块来达到三倍于原来磁盘的速度。实际上,RAID也可以只使用两块磁盘。上图中,在任何时刻,这三块磁盘都在同步地工作,但它们读写的内容却完全不同。由于一个传输过程由三个磁盘各完成1/3,也就相当于传输带宽增加了三倍,所以操作时间也就减少了2/3。其中RAID 0控制器的作用就是将原来的数据均分为三份给三块磁盘写入或将三块磁盘读出的数据合并在一块儿交给外部数据总线。磁盘数量越多,速度就越快,容量就越大(单盘速度×硬盘数量=RAID0的总速度;单盘容量×硬盘数量=RAID0的总容量)。但是,可靠性是单独使用一块磁盘的1/N。磁盘量越多,可靠性就越低(即是容易比单盘发生故障),一个磁盘出故障或磁盘坏了数据将会丢失。所以RAID 0最好备份一下结构和分区表信息,便于一般故障的恢复。
RAID 1
RAID 1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性、可修复性,具有很高的数据冗余能力,但磁盘利用率为50%,成本高,多用在保存关键性重要数据的场合。但是在RAID中,它同样是占用了一些CPU时间,把写往主盘的数据同步地写到镜像盘。它的工作方式如图2所示。
图2 RAID 1工作原理图示
上图中,写在磁盘1和磁盘2上的数据是完全一样的,如写在磁盘1上的数据1、2、3,也同样写在磁盘2上,对外只显示一个带有数据1、2、3的磁盘。
RAID 1有以下特点:
RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。
磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。
只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的磁盘出现问题时系统都可以正常运行。
出现磁盘故障之后RAID系统不再可靠,因为只有一个磁盘正常运作,应当及时的更换损坏的磁盘,否则剩余的镜像磁盘时间长了也可能出现问题,那么整个系统就会崩溃。
更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。
RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。
RAID1磁盘的写速度可能下降1/4左右,读取速度比单盘可能提高1/4 左右,因为RAID1读取时,系统会同时从两个盘上搜索,把先读取到的数据传输回来。
RAID 1+0(也被称为RAID 10)
虽然RAID 1也可以获得少许的性能提升,但是相对RAID 0来说恐怕是微不足道了。因此,在性能和安全兼顾的情况下,就出现了RAID 1+0。RAID 1+0至少使用4个磁盘,这样,RAID 1+0在理论上同时保证了RAID 0的性能和RAID 1的安全性,代价是比RAID 0或1再多一倍的磁盘数量。其工作原理如图3所示。RAID 10是建立在RAID 0和RAID 1基础上的,具体的组合结构看图:
图3 RAID 1+0工作原理图示
从中可以看出,RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。其实,图3只是一种RAID
10方式,更多的情况是从主通路分出两路(以4个磁盘时为例),做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。这就是RAID
10名字的来历(也因此被很多人称为RAID 0+1)。
由于利用了RAID 0较高的读写效率和RAID 1较高的数据保护、恢复能力,使RAID
10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。但是,RAID 10对存储容量的利用率和RAID
1一样低,只有50%,读写速度增加是单盘的一倍。下面就让我们总结一下它的特点:
拥有RAID 1 数据保护及容错能力,具有RAID 0比较高的I/O带宽,容错处理的系统和单独的镜像基本上一样。对在RAID 1基础上提高性能,RAID10 它就是完美的解决方案。适用于数据库服务器等需要高性能、高容错而对容量要求不大的场合上。
由于存储容量的利用率较低,成本昂贵造成非常有限的扩展性。并且所有磁盘必须并行存取,工作使用磁轨的持续性能被减弱。
RAID 5
RAID 5 是一种存储性能、数据安全和存储成本兼顾的方案,它使用的是Disk Striping(硬盘分割)技术,RAID 5不是利用镜像而是利用分散奇偶校验冗余数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案,RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror(镜像)低而磁盘空间利用率要比Mirror高。
如上图所示,四个硬盘组成的RAID 5采用数据分块并行传送的方法,但是它在数据分块之后需计算它们的奇偶校验和。数据存储方式为: P4为磁盘1的数据0,数据3和数据6的奇偶校验信息,其它以此类推;P3为磁盘2的数据1,数据4和数据9的奇偶校验信息;P2为磁盘3的数据2,数据7和数据10的奇偶校验信息;P1为磁盘4的数据5,数据8和数据11的奇偶校验信息。由图中可以看出,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。
RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。RAID5是采用奇偶校验的方法维护数据,这些奇偶校验的信息只占用一块磁盘的容量,所以RAID5的实际容量相当于阵列中的磁盘数减1,数据读写速度等于单盘的速度×盘数,具有相对较好的综合性能。
RAID 5E(RAID 5 Enhencement)是在 RAID 5级别基础上的改进,与RAID 5类似,数据的校验信息均匀分布在各硬盘上,但是在每个硬盘上都保留了一部分未使用的空间,这部分空间没有进行条带化,最多允许两块物理硬盘出现故障。看起来,RAID 5E和RAID 5加一块热备盘好象差不多,其实由于RAID 5E是把数据分布在所有的硬盘上,性能会与RAID5 加一块热备盘要好。当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间,逻辑盘保持RAID 5级别。
RAID 5E RAID 5EE
与RAID 5E相比,RAID 5EE的数据分布更有效率,每个硬盘的一部分空间被用作分布的热备盘,它们是阵列的一部分,当阵列中一个物理硬盘出现故障时,数据重建的速度会更快。
综上所述,RAID 总体来说有以下作用:
增强了速度 ,服务器可以在同一时间从多个磁盘上读取数据。
提升I/O每秒的数量,增加可用运用时间,減少维护。
增加资料安全性及稳定性, 大量资料快速及简易管理。
扩容了存储能力,多个磁盘组成更大的空间提供给服务器使用。
可高效恢复磁盘,RAID提供了相当高的数据冗余功能,我们可以保证数据的完整无缺。
2、 软RAID与硬RAID
RAID也有全软、半软半硬与全硬之分。全软RAID就是指RAID的所有功能都是操作系统(OS)与CPU来完成,没有第三方的控制/处理(业界称其为RAID协处理器)与I/O芯片。这样,有关RAID的所有任务的处理都由CPU来完成,可想而知这是效率最低的一种RAID。由于全软RAID是在操作系统下实现RAID,不能保护系统盘,亦即系统分区不能参与实现RAID。有些操作系统,RAID的配置信息存在系统信息中,而不是存在磁盘上,当系统崩溃,需重新安装时,RAID的信息也会丢失。尤其是全软RAID 5是CPU的增强方式,会导致30%-40%的I/O功能降低,所以在服务器中不建议使用全软RAID。
半软半硬RAID是一种把初级的RAID功能附加给SCSI或者SATA卡而产生的产品,它把软件RAID功能集成到了产品的固件上,从而提高了产品的功能和容错能力。它可以支持RAID 0和RAID 1 RAID (1+0)。但因为缺乏自己的I/O处理芯片,所以这方面的工作仍要由CPU与驱动程序来完成。而且,半软半硬RAID所采用的RAID控制/处理芯片的能力一般都比较弱,不能支持高的RAID等级。
全硬的RAID则全面具备了自己的RAID控制/处理与I/O处理芯片,甚至还有阵列缓冲(Array Buffer),对CPU的占用率以及整体性能是这三种类型中最优势的,但设备成本也是三种类型中最高的。简单来说半软半硬是依靠主机本身CPU和内存运行,全硬RAID,自带有微处理与I/O处理芯片及内存,不依靠你主机的CPU内存,直接把相关信息提交给OS处理,从而使性能获得很大的提高。它的缺点是要占用PCI总线带宽,所以PCI I/O 可能变成阵列速度的瓶颈。
RAID卡有多种,除主板集成能够做的RAID的硬RAID外,还有各种专门RAID卡。如泰安7901以及目前板载SATA RAID都是典型的HOST RAID卡,只有I/O处理芯片,虽然它也能做RAID1,RAID0和RAID10,但都是通过BIOS和驱动程序实现的,其性能较全硬RAID卡如Adaptec的2系列的(2030s等)要低,优点是价格要低至少一半。
其实要识别全硬RAID也很简单:如果不挂驱动在LINUX下能认到RAID而不是单磁盘的就是全硬RAID了。因为LINUX对RAID驱分很严,HOST RAID是作为软RAID来对待的,没有厂家专用驱动LINUX就把它当作SCSI卡来处理。
3、 RAID的可靠度
根据平均故障间隔时间(MTBF),可以推断出单只磁盘的规定时间的无故障可靠度概率。这里所说的可靠度是指在规定的时间内,在规定的条件下,完成规定功能的能力,以概率计量。按RAID可靠度的数学模型,可计算出常见RAID的可靠度,见下表。从该表不难看出,IDE的RAID 1也有极高的可靠度。由于SCSI硬盘比IDE硬盘价格要贵,性能高出不少,为了获得比较合理的结论,可选择以下方式比较:规定时间内、相同价格下比可靠度;或规定时间内、相同可靠度下比价格;当然还有其他的比较方式。不难得出以下结论:SCSI硬盘一次性投资较大,相对一劳永逸,RAID的可选形式较多。IDE硬盘一次性投资小,要达到规定可靠度,必须分段投资,总价仍较低,相对麻烦,RAID的可选形式较少。
RAID可靠度表
时间 | 一年 | 两年 | 三年 | |
SCSI硬盘可靠度 | 单只硬盘 | 0.991278257 | 0.982632582 | 0.974062314 |
Raid0 | 0.982632583 | 0.965566792 | 0.948797391 | |
Raid1 | 0.999923931 | 0.999698372 | 0.999327236 | |
Raid1+0 | 0.999847868 | 0.999396836 | 0.998654925 | |
Raid5(2/3) | 0.99977312 | 0.999105595 | 0.998016609 | |
IDE硬盘可靠度 |
单只硬盘 | 0.978338064 | 0.957145367 | 0.936411745 |
Raid0 | 0.957145367 | 0.916127254 | 0.876866957 | |
Raid1 | 0.99953076 | 0.99816348 | 0.995956533 | |
Raid1+0 | 0.999061741 | 0.996330333 | 0.991929417 | |
Raid5(2/3) | 0.9986126109 | 0.9946478482 | 0.9883838357 |
4、 服务器RAID选用
服务器RAID选用,需根据具体应用对数据安全性、速度等性能的要求,结合投资来综合考虑。目前常用的RAID方式为RAID1、RAID0、RAID5及RAID1+0,如果数据重要而写性能不重要则选RAID1就可以了;如果性能重要而数据不重要则选RAID0,如果两种都重要只能用RAID5或RAID1+0。
笔者的世界网络(www.linkwan.com)服务器,为两岸三地提供速度测试服务,日访问用户数近十万,涉及两千多个测试站点,大量的测试数据统计分析,对稳定性、数据安全性要求很高,所以目前采用RAID 1,优先保证系统的可靠性、可修复性,同时具有较高的数据冗余能力。
一般情况下,笔者建议在目前硬件成本已经大幅降低的情况下选用RAID1+0,因为从性能来说RAID1+0比RAID5要高出不少,从安全性来说RAID5随意坏两块磁盘则数据全丢,RAID1+0只有特定的两块盘损坏才会损坏数据,所以RAID1+0从性能和安全性上都比RAID5要强,只是比RAID5成本略高。且普通的SCSI卡都支持RAID 1+0,针对大部分的网站应用,RAID 1+0既保证数据安全性,又能提高性能,确实是一个不错的选择。
在低价格的RAID选用方面,笔者推介SCSI RAID 1 及 RAID 1+ 0,如泰安M7901卡只需人民币700多元,Adaptec 29320ALP-R只需人民币1500元。资金比较充裕的,笔者推荐使用LSI Logic MEGA RAID。此卡最大的优点是做RAID的时候会比较方便,RAID的初始化可以后台做,不用等很久,当然还有其它优点,大家可以参考厂家资料。
M7901 Adaptec 29320ALP-R
Adaptec 2130S
综合考虑硬盘和RAID的选用,由于SCSI具有较多性能优势且目前价格相对来说也可接受,所以在数据安全性要求高的情况下,SCSI特别是SCSI RAID仍然是首选。SATA II虽然在磁盘数量多的情况下性能已经不低于SCSI,但是从CPU占用率及数据安全的角度来看,SCSI比SATA成熟,兼容性基本上不成问题,反观SATA的板载芯片或HOST RAID芯片,兼容性目前还存在较严重的问题,典型的如有的芯片不支持SATA II代硬盘,SATA硬盘和RAID的损坏率高于SCSI等。当然SATA技术前景比较光明,它理论上也具备热插拔能力,并且可以在接口上具备很好的可伸缩性,但是以后的高端来说还是SCSI,三至五年SAS成熟后就会逐步取代SCSI。至于如何选择,仍然是看用户的需要。
当然,RAID并不能完全保障资料的安全,RAID只是尽量减少硬件故障所造成的资料损失和提升性能。但是防不了黑客入侵和病毒侵害,所以要保证资料的安全性还是要多管齐下,本文只是从硬盘和RAID的角度做一个比较具体的介绍,所以在数据重要的情况下要采取服务做RAID,定期异机备份资料,甚至定期更换磁盘等多管齐下的办法,才能确保企业服务器稳定性及资料安全。