磁盘阵列
磁盘阵列(RedundantArraysofIndependentDisks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(ParityCheck)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
中文名:磁盘阵列
外文名:RAID,RedundantArrayofIndependentDisks
原理:利用数组方式来作磁盘组
ParityCheck:任一颗硬盘故障时仍可读出数据
1、简介
由加利福尼亚大学伯克利分校(UniversityofCalifornia-Berkeley)在1988年,发表的文章:“ACaseforRedundantArraysofInexpensiveDisks”。文章中,谈到了RAID这个词汇,而且定义了RAID的5层级。伯克利大学研究目的是反应当时CPU快速的性能。CPU效能每年大约成长30~50%,而硬磁机只能成长约7%。研究小组希望能找出一种新的技术,在短期内,立即提升效能来平衡计算机的运算能力。在当时,柏克莱研究小组的主要研究目的是效能与成本。
另外,研究小组也设计出容错(fault-tolerance),逻辑数据备份(logicaldataredundancy),而产生了RAID理论。研究初期,便宜(Inexpensive)的磁盘也是主要的重点,但后来发现,大量便宜磁盘组合并不能适用于现实的生产环境,后来Inexpensive被改为independent,许多独立的磁盘组。
独立磁盘冗余阵列(RAID,redundantarrayofindependentdisks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地)的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
2、分类
磁盘阵列其样式有三种,一是外接式磁盘阵列柜、二是内接式磁盘阵列卡,三是利用软件来仿真。
外接式磁盘阵列柜最常被使用大型服务器上,具可热交换(HotSwap)的特性,不过这类产品的价格都很贵。
内接式磁盘阵列卡,因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案。阵列卡专用的处理单元来进行操作。
利用软件仿真的方式,是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降低幅度还比较大,达30%左右。因此会拖累机器的速度,不适合大数据流量的服务器。
3、原理
和当时PC用单磁盘内部集成缓存一样,在磁盘阵列内部为加快与主机交互速度,都带有一定量的缓冲存储器。主机与磁盘阵列的缓存交互,缓存与具体的磁盘交互数据。
在应用中,有部分常用的数据是需要经常读取的,磁盘阵列根据内部的算法,查找出这些经常读取的数据,存储在缓存中,加快主机读取这些数据的速度,而对于其他缓存中没有的数据,主机要读取,则由阵列从磁盘上直接读取传输给主机。对于主机写入的数据,只写在缓存中,主机可以立即完成写操作。然后由缓存再慢慢写入磁盘。
4、优缺点
优点
提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID最初想要解决的问题。因为当时CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。RAID最后成功了。
通过数据校验提供容错功能。普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。
缺点
RAID0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
RAID1磁盘的利用率最高只能达到50%(使用两块盘的情况下),是所有RAID级别中最低的。
RAID0+1以理解为是RAID0和RAID1的折中方案。RAID0+1可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。
5、RAID级别
RAID0是最早出现的RAID模式,即DataStripping数据分条技术。RAID0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID0没有提供冗余或错误修复能力,但实现成本是最低的。
RAID0示意图
RAID0最简单的实现方式就是把N块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起创建一个大的卷集。在使用中电脑数据依次写入到各块硬盘中,它的最大优点就是可以整倍的提高硬盘的容量。如使用了三块80GB的硬盘组建成RAID0模式,那么磁盘容量就会是240GB。其速度方面,各单独一块硬盘的速度完全相同。最大的缺点在于任何一块硬盘出现故障,整个系统将会受到破坏,可靠性仅为单独一块硬盘的1/N。
为了解决这一问题,便出现了RAID0的另一种模式。即在N块硬盘上选择合理的带区来创建带区集。其原理就是将原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了4倍。
在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。
带区集虽然可以把数据均匀的分配到所有的磁盘上进行读写。但如果我们把所有的硬盘都连接到一个控制器上的话,可能会带来潜在的危害。这是因为当我们频繁进行读写操作时,很容易使控制器或总线的负荷超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。
虽然RAID0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID0一般只是在那些对数据安全性要求不高的情况下才被人们使用。
RAID1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID1多用在保存关键性的重要数据的场合。
RAID1示意图
RAID1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。
从RAID0+1名称上我们便可以看出是RAID0与RAID1的结合体。在我们单独使用RAID1也会出现类似单独使用RAID0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。
RAID0+1示意图
MegaRAID、Nytro和Syncro都是LSI针对RAID而推出的解决方案,并且一直在创造更新。
LSIMegaRAID的主要定位是保护数据,通过高性能、高可靠的RAID控制器功能,为数据提供高级别的保护。LSIMegaRAID在业界有口皆碑。
LSINytro的主要定位是数据加速,它充分利用当今备受追捧的闪存技术,极大地提高数据I/O速度。LSINytro包括三个系列:LSINytroWarpDrive加速卡、LSINytroXD应用加速存储解决方案和LSINytroMegaRAID应用加速卡。NytroMegaRAID主要用于DAS环境,NytroWarpDrive加速卡主要用于SAN和NAS环境,NytroXD解决方案由NytroWarpDrive加速卡和NytroXD智能高速缓存软件两部分构成。
LSISyncro的定位主要用于数据共享,提高系统的可用性、可扩展性,降低成本。
LSI通过MegaRAID提供基本的可靠性保障;通过Nytro实现加速;通过Syncro突破容量瓶颈,让价格低廉的存储解决方案可以大规模扩展,并且进一步提高可靠性。
6、规范
RAID技术主要包含RAID0~RAID50等数个规范,它们的侧重点各不相同,常见的规范有如下几种:
RAID0:RAID0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构。RAID0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID0不能应用于数据安全性要求高的场合。
RAID1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1可以提高读取性能。RAID1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
RAID2:将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用称为“加重平均纠错码(汉明码)”的编码技术来提供错误检查及恢复。
RAID3:它同RAID2非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。
RAID4:RAID4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID4在商业环境中也很少使用。
RAID5:RAID5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID5更适合于小数据块和随机读写的数据。RAID3与RAID5相比,最主要的区别在于RAID3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID6:与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID6很少得到实际应用。
RAID7:这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID7可以看作是一种存储计算机(StorageComputer),它与其他RAID标准有明显区别。除了以上的各种标准(如表1),我们可以如RAID0+1那样结合多种RAID规范来构筑所需的RAID阵列,例如RAID5+3(RAID53)就是一种应用较为广泛的阵列形式。用户一般可以通过灵活配置磁盘阵列来获得更加符合其要求的磁盘存储系统。
RAID50:RAID50是RAID5与RAID0的结合。此配置在RAID5的子磁盘组的每个磁盘上进行包括奇偶信息在内的数据的剥离。每个RAID5子磁盘组要求三个硬盘。RAID50具备更高的容错能力,因为它允许某个组内有一个磁盘出现故障,而不会造成数据丢失。而且因为奇偶位分部于RAID5子磁盘组上,故重建速度有很大提高。优势:更高的容错能力,具备更快数据读取速率的潜力。需要注意的是:磁盘故障会影响吞吐量。故障后重建信息的时间比镜像配置情况下要长。
7、RAID技术的应用
DAS--directaccessstoragedevice直接访问存储设备
DAS是磁盘存储设备的术语,以前被用在大、中型机上。使用在PC机上还包括硬盘设备DAS的最新形式是RAID。“直接访问”指访问所有数据的时间是相同的。
NAS--NetworkAttachedStorage网络附加存储设备
一种特殊目的的服务器,它具有嵌入式的软件系统,可以通过网络对个种的系统平台提供文件共享服务。
SAN--StorageAreaNetworks存储区域网
一种高速的专用网络,用于建立服务器、磁盘阵列和磁带库之间的一种直接联接。它如同扩展的存储器总线,将专用的集线器、交换器以及网关或桥路互相连接在一起。SAN常使用光纤通道。一个SAN可以是本地的或者是远程的,也可以是共享的或者是专用的。SAN打破了存储器与服务器之间的束缚,允许独立地选择最佳的存储器或者是最佳的服务器,从而提高可扩性和灵活性。
8、混合RAID
混合RAID是一种冗余存储解决方案,采用高容量低成本的SATA或者高性能SAS硬盘与低延迟高IOPs的固态盘,再加上SSD感知的RAID控制卡.
混合RAID部署
在混合RAID中,读取操作在更高速的SSD中进行,而出于冗余考虑,写入操作则在SSD和HDD中进行。混合RAID适合于数据等级较低的应用,例如互联网网关、文件服务器或者虚拟机
混合RAID的好处是什么?
混合RAID阵列的性能远远超过标准HDDRAID阵列,而且成本比纯SSDRAID阵列更低。相比纯HDDRAID阵列,混合阵列加速IOPS并降低延迟,使数据中心和云计算环境能够托管更多用户,每秒钟在每台服务器上执行更多交易,减少了支持任何特定工作负载所需的服务器数量。除了服务器数量缩减会减少数据中心服务器的占地空间之外,在财务上体现出的好处就是降低了采购额外服务器所需的资本开支,以及供电、冷却与维护相关的运营开支。
混合RAID解决方案
从硬件的角度看,搭建一个混合RAID解决方案可以使用任何容量的SSD和HDD(不过SSD和HDD的数量必须相同)。如果这个RAID阵列使用容量不同的驱动器,那么驱动器容量就是更小的那个。例如,一个RAID1使用1个128GBSSD和2TBHDD,那么逻辑设备就是128GB。一个RAID10使用2个128GBSSD和2个2TBHDD,逻辑设备就是256GB。剩下的HDD容量可用于存储。
不过,从应用的角度看,因为大多数软件并不能识别出采用两种有着不同特点的存储的可能性。为了充分利用混合RAID,必须部署一种具有智能存储处理能力、SSD感知的RAID控制卡。Adaptec6系列、5Z系列、5系列、2系列和Q系列控制卡经过最新的固件升级之后,可以很好地利用剩余容量,自动创建一个混合RAID阵列,将1个或者多个SSD与相同数量的HDD做成RAID1或者RAID10阵列。这个混合RAID阵列对于操作系统和所有运行中的应用都是透明的。此外,Adaptec控制卡通过向HDD和SSD的写入、100%从SSD读取,提供了最高的混合阵列性能。
Adaptec混合RAID阵列提供了比标准HDD阵列更高的IOPs性能,同时写I/O性能也没有降级,见下图-IOMeter原始性能。
IOMeter原始性能
一些应用甚至看到了通过Adaptec混合RAID获得的少量性能优势,并且混合RAID1速度比单个SSD更快,见下图-ASSSD应用性能。
ASSSD应用性能