磁盘阵列
磁盘阵列RAID全名是Redundant Array of Inexpensive Disk
,1987年由加州伯克利分校提出,最初的研制摸底是为了组合小的廉价磁盘来代替大的昂贵磁盘,以降低大批量数据存储的费用;RAID可以通过软件(RAID卡)或硬件(MDADM)将多个独立的磁盘驱动器组成的磁盘子系统,从而提高比单个磁盘更高的存储性能和数据冗余的技术;
RAID中主要有三个关键概念:镜像、数据条带、和数据校验;
镜像:
镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失;而且镜像技术不需要额外的计算和校验,故障修复非常快,直接复制即可;镜像技术可以从多个副本进行并发读取数据,提供更高的IO性能,但不支持并行写数据,写多个副本会导致一定的IO性能下降;
镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间;高成本限制了镜像的广泛应用,主要用于至关重要的数据保护;
数据条带:
数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理;这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合IO,有效提高整体IO性能,而且具有良好的线性扩展性;
数据条带是基于提高IO性能而提出的,也就是说它只关注性能,二队数据可靠性、可用性没有任何改善;实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术增加了数据丢失的概率;
数据校验:
数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构;相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性;数据条带技术提供高性能,数据校验提供数据安全性,RAID不同等级往往同时结合使用这两种技术;
采用数据校验时,RAID要在写入数据同时进行校验计算,并将得到的校验数据存储在RAID成员磁盘中;校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件RAID控制器;在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多;
冗余数据通常采用海明校验码、异或校验码算法;
RAID的两个关键目标是提高数据可靠性和IO性能;主要具备以下优势:
- 大容量:这是RAID的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的RAID系统具有海量的存储空间;RAID容量利用率一般在50%~90%;
- 高性能:RAID的高性能受益于数据条带华技术;单个磁盘的IO性能收到接口、带宽等计算机技术的限制,性能往往有其上限,很容易称为系统性能的瓶颈;通过数据条带华,RAID将数据IO分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合IO性能;
- 可靠性:可用性和可靠性是RAID的另一个重要特征;RAID冗余技术答复提升数据可用性和可靠性,保证了若干磁盘出错时,不会导致数据的丢失,不影响系统的连续运行;
- 可管理性:实际上,RAID是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器;对于外部主机系统来说,RAID是一个单一的、快速可靠的大容量磁盘驱动器;这样,用户就可以在这个虚拟驱动器上组织和存储应用系统数据;从用户应用角度,可使存储系统简单易用,管理便利;RAID可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,大大简化管理工作;
常见的组合方式有:RAID0、RAID1、RAID5、RAID6、RAID01、RAID10;
RAID0
RAID0是一种简单的、无数据校验的数据条带华技术;实际上不是一种真正的RAID,因为它并不提供任何形式的冗余策略;RAID0将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并发读取访问;由于并发执行IO操作,总线带宽得到充分利用;RAID0不需要进行数据校验,性能是所有RAID等级中最高的;
RAID0具有低成本、高读写性能、100%高存储空间利用率等优点,但它不提供数据冗余保护,一旦数据损坏,将无法修复;因此,RAID0一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等;
RAID1
RAID1称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为50%;RAID1的数据写入时,响应时间会有所影响,但是读数据的时候没有影响;RAID1提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作;
RAID1与RAID0刚好相反,是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便;RAID1拥有完全容错的能力,但实现成本高;RAID1应用于对顺序读写性能要求高以及对数据保护极为重要的应用,如数据库数据文件、邮箱系统数据保护等;
RAID5
RAID5应该是目前最常见的RAID等级,原理与RAID4相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘;对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上;因此,RAID5不存在RAID4中的并发写操作时的校验盘性能瓶颈问题;另外,RAID5还具备很好的扩展性;当阵列磁盘数量增加时,并行操作量的能力也随之增长;RAID5等级一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据;与其他RAID等级一样,重建数据时,RAID5的性能会收到较大的影响;
RAID5兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为RAID0和RAID1的这种方案,是目前综合性能最佳的数据保护解决方案;RAID5基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案;
RAID6
RAID6引入双重校验,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失;RAID6是在RAID5的基础上进一步增强数据保护而设计的一种RAID方式,可以看做是一种扩展的RAID5等级;RAID6不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其它等级更复杂、更昂贵;RAID6思想最常见的实现方式是采用两个独立的校验算法,分别为P和Q,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中;当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据;
RAID6具有快速的读取性能、更高的容错能力;但是,它的成本要高于RAID5许多,写性能也较差,并有设计和实施非常复杂;因此,RAID6很少得到实际应用,主要用于对数据安全等级要求非常高的场合;它一般是RAID10的经济性替代方案;
RAID10
RAID10也叫RAID1+0,该模式现将数据进行镜像操作,然后在对数据进行分组,RAID1在这里就是一个冗余的备份阵列,而RAID0则负责数据的读写阵列;至少要4块盘,两块做RAID0,另两块做RAID1,RAID10对存储容量的利用率和RAID1一样低,只有50%,但提供了200%的速度和单块硬盘损坏的数据安全性,并且当同时损坏的磁盘不在同一RAID1中,就能保证数据安全性;RAID10能提供比RAID5更好的性能,但扩充性不好,且成本昂贵;
RAID01
RAID01兼备RAID0和RAID1的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带华;RAID01的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能;
相同配置下,RAID01相比于RAID10具有更好的容错能力;
RAID50
RAID5与RAID0的组合,先做RAID5,再做RAID0,也就是对多组RAID5彼此构成Stripe访问;RAID50在底层任一组或多组RAID5中出现单块盘损坏时,仍能维持运作,但出现2块或以上硬盘损坏,整组RAID50都会失效;
RAID50提供了接近RAID10性能、可用性以及接近RAID5的成本特性,具有较好的整体性价比优势;RAID50是RAID10的最佳替代方案;
阵列卡简介
阵列卡的全称是磁盘阵列卡,接口类型目前主要有以下几种:
- IDE接口
- SCSI接口
- SATA接口
- SAS接口
IDE接口
IDE英文全称为
Integrated Drive Electronics
,即电子集成驱动器,它的本意是指把硬盘控制器与盘体集成在一起的硬盘驱动器;价格低廉、兼容性强;IDE代表着硬盘的一种类型,但在实际的应用中,人们也习惯用IDE来称呼最早出现IDE类型硬盘ATA-1,其发展分支出的ATA、UltraATA、DMA、UltraDMA等接口都属于IDE硬盘,IDE口属于并行接口;
SCSI接口
SCSI英文全称为
Small Computer System Interface
,即小型计算机系统接口,是同IDE完全不同的接口 ,IDE接口是普通PC的标准接口,而SCSI并不是专门为硬盘设计的接口,是一种广发应用于小型机上的高速数据传输技术;SCSI接口具备应用范围广、多任务、大带宽、CPU占用率低、支持热插拔等优点,但较高的价格使得它很难如IDE般普及,一般用于中高端工作站中;SATA接口
使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是目前PC硬盘的主流;
Serial ATA采用串行连接方式,串行ATA总线使用嵌入式使用信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性;串行接口还具有结构简单,支持热插拔的优点;
串口硬盘是一种完全不同于并行ATA的硬盘接口类型,由于采用串行方式传输数据而知名;相对于并行ATA来说,就具有非常多的优点:
- Serial ATA以连续串行的方式传送数据,一次只传送1位数据;这样能减少SATA接口的针脚数目,使链接线缆数目变少,效率更高;实际上SATA禁用四支针脚就能完成所有的工作,分别用于连接电缆、连接地线、发送数据与接收数据,同时这样的架构还能降低系统能耗和减小系统复杂性;
- Serial ATA起点高、发展潜力大,SATA 1.0定义速率为150MB/S,SATA 2.0定义速率为300MB/S,SATA 3.0可达750MB/S;(ATA理论值为133MB/S);
SAS接口
SAS是新一代的SCSI技术,与SATA相同,也是采用串行技术以获得更高的传输速度;此接口的设计是为了改善存储系统的效能、可用性和扩充性,提供与SATA硬盘的兼容性;
SAS向下兼容SATA,是点到点的结构,可以建立磁盘到控制器的直接连接,具备以下特点:
更好的性能
点到点的技术减少了地址冲突以及菊花链连接的减速;为每个设备提供了专用的信号通路来保证最大的带宽;全双工方式下的数据操作保证最有效的数据吞吐量;
简便的线缆连接
更细的电缆搭配更小的连接器;
更好的扩展性
阵列卡缓存
RAID卡缓存默认选项为:
读取策略:自适应;
默认启用,采用预读取策略,可提高随机读取性能;第二次读取相同数据命中缓存将大幅提升性能;
写策略:回写;
默认启用回写,操作RAID卡上的缓存;写入数据时先写入到缓存就算写入成功,然后RAID卡控制器再把多个写IO合并为一个写IO一次性写入磁盘,提高随机写入性能;RAID卡带电池,机房停电时,电池可给缓存供电72小时,保证缓存中的数据不会丢失;
磁盘高速缓存策略:禁用;
RAID中的磁盘一般要禁用磁盘缓存;防止机房断电导致磁盘自带缓存数据丢失;
关闭写缓存命令为:
hdparm -W 0 /dev/sda
打开写缓存命令为:
hdparm -W 1 /dev/sda
RAID参数调优
- 通常情况下,建议系统使用RAID1,数据使用RAID5、RAID10、RAID50中的一种,且系统与数据分离;
- 使用SSD或者PCIe SSD设备,至少获得数百倍甚至万倍的IOPS提升;
- 购置阵列卡同时配备CACHE以及BBU模块,可明显提升IOPS(主要指机械盘);但需定期检查CACHE及BBU模块的健康状况、电池供电等,确保意外时不至于丢失数据;
- 有阵列卡时,设置阵列写策略为WB,甚至FORCE WB(具备双电保护,且对数据安全性要求不是特别高),严禁使用WT策略;关闭阵列预读策略;
- 尽量使用RAID10替换RAID5;
- 使用机械硬盘时,尽可能选择高转速的;