RAID(独立冗余磁盘阵列)技术浅析

引言

如果我们有一个需要很大容量,一块硬盘存储不了的数据,只能存储到多个硬盘上,最简单的思维是:一块硬盘一块硬盘的读取/存储。

很显然,这样单纯的堆积法虽然解决了容量的问题,但是也带来的浪费,因为一次只是从一块硬盘上进行读/写,同时,单块硬盘的读取速度,也是整个磁盘组合的读取速度。

因为CPU和缓存的速度远远大于磁盘的读取数据,因此我们可以将CPU数据读/取请求按照顺序给不同的磁盘,让磁盘“同时”读/写数据,也就是下面的RAID 0.

RAID 0

将连续的数据拆分成block,分散将数据block的读/写请求给各个磁盘,达到“同时”读/写的目的。

也叫Stripe条带模式。

  • 优点:这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。因为读取和写入是在设备上并行完成的,读取和写入性能将会增加,
  • 缺点:没有数据冗余,如果其中一个磁盘Disk出现错误,将影响所有的读/写操作,并且不能从错误中恢复数据。

P.S.磁盘上只有实实在在的扇区结构,并没有什么Stripe结构,Stripe只是一种逻辑上由程序根据某种算法实现的一种的概念。Stripe后的多个硬盘,数据是被并行写入磁盘的,而不是只有写满了一个磁盘的Stripe区域后,再写下个磁盘的Stripe区域。

RAID 1

又称为镜像(Mirroring),一个具有全冗余的模式。

  • 优点:需要极高的可靠性和安全性。支持"热替换",即不断电的情况下对故障磁盘进行更换。
  • 缺点:其磁盘的利用率却只有50%,是所有RAID级别中最低的。

RAID 1+0

先做镜像(1),再做条带(0)。

比如,有HDD0~HDD7共7个磁盘,其中HDD0~HDD3是数据盘,HDD4~HDD7是对应的镜像盘。同时,有”ABCD”四个数据的磁盘写请求。

当数据A的写请求在磁盘HDD0上执行时,就在对应的镜像盘HDD4中进行镜像A’。与此同时,按照与数据A类似的步骤,并行在相应磁盘中写入数据B、数据C和数据D。

  • 优点:兼顾了RAID0和RAID1的优点,在可靠性和I/O性能上有保证。只要不是数据盘和对应的镜像盘同时出现损坏,数据就能保证完整性,写功能不会受到影响。如果损坏了其中一块比如HDD0时,读性能可能会稍微降低(读取数据时可以并行操作)。
  • 缺点:从上图可以看出,需要分出一半的磁盘组作为Mirror,因此空间利用率只有50%,成本大。

RAID1+0 由于兼具可靠性和好的性能, 在商业应用中很广泛,常应用于数据库等要求安全性,小数据频繁写的场合。

RAID 0+1

先做条带(0),再做镜像(1)。

先对数据进行RAID 0条带化,然后将Stripe后的数据进行备份。

RAID01几乎不会在实际环境中应用,因为RAID0+1和RAID1+0在读取效率上没有差异,但是RAID0+1在安全性和可靠性低。

RAID 2

可以认为是RAID0的改进版,加入了汉明码(Hanmming Code)错误校验。

汉明码(Hamming Code)是一种能够自动检测并纠正一位错码的线性纠错码,即SEC(Single Error Correcting)码。汉明码通过在要传输的数据位中增加一些bit作为校验位,可以验证数据的有效性。

汉明码的原理举例说明,如果传输的数据位数为k,使用的校验位的位数为r,组成一个n=k+r位数的汉明码。为了能够发现这n位数的数据在传输给后端时是否出错,并且能够指明是那一位数据出错,那么r位的校验位至少能够代表k+r+1个状态(k+r表明出错的位置,其中多出来的1表示数据传输正确)。那么关系式如下:

也是就是说,如果要传输k=4位数据位,根据算式(1) 必须则校验位r≥3,如果用r=3作为校验位数,那么总共传输的数据位数n=k+r=7。

RAID就是利用了汉明码的原理,使用校验磁盘作为错误检查和纠正ECC(Error Correcting Code)盘。如下图,A0-A3四个盘是数据盘,Ax-Az三个盘是校验盘。

根据原理,汉明码有且仅能纠正一个Bit的错误,并且因为校验的原因,校验位和数据位需要一同并行写人或读取(例如,A0-A3,Ax-Az的磁盘需要并行联动)

RAID2技术过于极端,目前基本已经被淘汰了。根据原理,RAID2需要在IO数据到来之后,控制器将数据按Bit分开,顺序并同时在每个数据盘和相应校验盘中存放1Bit,而磁盘上的IO最小单位是扇区512B,那么如何确保写入1Bit并且不至于浪费过多空间的算法就很复杂。此外,需要占用相对较多的校验盘也是原因之一,虽然随着数据盘的增加,校验盘的数量会呈指数下降。

RAID 3

RAID 2的缺点主要是将数据以bit位作为单位来分割,将原本物理连续的扇区转变成了物理不连续、逻辑连续的,这样导致效率低下。RAID3 就准备从根本上就绝这个问题。

RAID3保留了RAID2的一些优点,比如多磁盘同时联动,性能高(利用将一个IO尽量做到能够分割成小块,让每个磁盘能够参与工作)。不过RAID3放弃了将数据分割成Bit这么极端的做法,因为这样就将磁盘扇区的物理连续性打破了。RAID3将数据以一个扇区(512B)或者几个扇区(例如4KB)作为单位来分割数据。此外,RAID3也放弃了使用汉明码来校验,取而代之的是XOR校验算法。XOR校验算法只能判断数据是否有误,不能判断出有那一位有误,更不能更正错误,但是XOR算法可以只需要一块校验盘即可。

在一个磁盘阵列中,一般情况下多于一个磁盘出现故障的几率是很小的,所有一般情况下,RAID3的安全性还是有保障的。

同RAID2一样,由于需要多磁盘同时联动,同时还需要校验。显然,RAID3不适用于有大量写操作的情况,因为这样会使得校验盘的负荷较大,降低RAID系统的性能。RAID3 常用于写操作较少,读操作较多的应用环境,比如数据库和WEB服务器。

RAID 4

从RAID2和RAID3的设计来看,都是为了尽量达到全盘联动,也就是说主要都是为了提高数据传输率而设计的,但是确无法做到并发IO。

然而,现实中例如数据库等应用的特点就是高频率随机IO读写,例如每秒产生的IO数目很大,但是每个IO请求的数据长度都很小。这种情况下,如果所有的磁盘同一时刻都被一个IO占用并且不能并发IO,只能一个IO一个IO的做,必然产生极大的浪费。

那么,要实现并发IO,就需要保证有空闲的磁盘没有被IO占用,这样才能让其他IO去占有这个磁盘进访问。要达到有有空闲磁盘的目的,那么就需要增加每次读/写的容量,例如按块(Block)存取。

RAID4对于写IO有个很难克服的问题,那就是校验盘的争用。例如上图A0-A3四个数据盘和一个校验盘构成的RAID4系统中,某一时刻一个IO只占用了A0和A1两个磁盘和校验盘,此时虽然后面两块磁盘是空闲的,可以同时接受新的IO请求,但是接受了新的IO请求,则新的IO请求也要使用校验盘。这样就导致了校验盘的争用成为并发的瓶颈。(动画演示见http://storage-system.fujitsu...)

基于这个原因,需要特别优化请求的IO数据,才能高效使用RAID4。然而,要优化到并发几率很高很不容易,目前只有NetApp的WAFL文件系统还在使用RAID4,其他产品均未使用了。

RAID4面临淘汰,取而代之的是拥有高盲并发几率的RAID5系统。所谓的高盲并发几率,就是上层文件系统不用感知下层磁盘的结构,即可增加并发的几率。

RAID 5

RAID 5+0

RAID 6

备注:

关于RAID的介绍中动画的网站http://storage-system.fujitsu...

http://storage-system.fujitsu...

文章来源:http://stor.51cto.com/art/201609/517218.htm

时间: 2024-08-28 20:50:22

RAID(独立冗余磁盘阵列)技术浅析的相关文章

RAID(独立冗余磁盘阵列)与LVM(逻辑卷管理器)

RAID(独立冗余磁盘阵列)RAID 0:数据依次写入不同的硬盘,提升速度,但不具备数据备份和错误修复功能.RAID 1:将同一个数据分别写入2个硬盘(一个作为在用,一个作为备份),提升安全性,成本加大,速度不变.RAID 5:将硬盘设备的数据奇偶校验信息保存到其他硬盘设备中,出问题后通过再其他盘的parity重建损坏数据.成本有所增加,安全性提升,速度有所提升.RAID 10:通过RAID1和RAID0组合,采用4个硬盘组成,每2个盘组成一个RAID1,然后用组成的RAID1,组成RAID10

RAID独立冗余磁盘阵列

概述 RAID(Redundant Array of Independent Disks ,独立冗余磁盘阵列)是一种将多块物理磁盘,按照一定的方式组合成具有冗余能力的一个逻辑硬盘,从而提高整体的性能和提供数据的安全备份的技术,在磁盘阵列中的某个或某些磁盘出现故障时仍能从其他磁盘读取数据. RAID级别 RAID有不同的级别,每种级别有不同的磁盘阵列组织结构. RAID 0 (条带化存储)使用条带化技术(Data Stripping),将至少两块磁盘组合起来形成一个大容量的磁盘阵列.RAID 0存

Linux 独立冗余磁盘阵列介绍

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术.RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现.RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都

使用 RAID 与 LVM 磁盘阵列技术

1.RAID(独立冗余磁盘阵列,Redundant Arrays of Independent Disks) RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果,但是它也相应地提高了成本支出. RAID技术的设计初衷是减少因为采购硬盘设备带来的费用支出,但是与数据本身的价值相比较,现代

RAID与LVM磁盘阵列技术

RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列) RAID概念: RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果 1. RAID 0 (最少2块) 概念:RAID 0技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一

《Linux就该这么学》 第7章 使用RAID与LVM磁盘阵列技术

第7章 使用RAID与LVM磁盘阵列技术 7.1 RAID IO 吞吐量 读写速度,数据安全.1.RAID0RAID0:两块盘,加快硬盘的写入速度.但不具有数据备份和错误恢复.速度有提升成本不变安全性会有下降 2.RAID1RAID1:两块盘,速度没有提升,保持一致成本提升一倍,变成两倍安全性提升 3.RAID5RAID5:至少3块盘,兼顾读写速度.数据安全性.存储成本. 4.RAID10RAID10是RAID1+RAID0的组合. 7.1.1 部署磁盘阵列1.关机虚拟机,为虚拟机添加4块硬盘.

第7章 使用RAID与LVM磁盘阵列技术

章节简述: 您好,此章节为新增加的知识内容,正在努力的排版完善,预习2016年9月中旬完成,感谢您的支持,QQ群:340829. 7.1  磁盘冗余阵列 1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢失还加入了冗余备份机制. RAID的早先设计理念为"redundant array of Inexpensive disks"即不贵的硬

RHCE 第10节课 使用RAID与LVM磁盘阵列技术

今天继续学习的是磁盘阵列技术RAID,磁盘阵列方式主要有raid 0 raid 1 raid 10 raid 5 这四种,另外还有一个热备盘的概念,跟着老师做了几次试验之后,对磁盘阵列有了深刻的理解.我们需要在保证数据的读取速度和安全性之间找到平衡点 原文地址:https://blog.51cto.com/12331786/2455054

RAID:独立冗余磁盘阵列

部署逻辑卷1:使硬盘具备LVM技术 pvcreate2:把硬盘加入到VG里 vgcreate3:切割VG成需要的LV lvcreate4:将切好的LV格式化 mkfs.ext45:挂载 自动挂载 mount6:使用 vi 格式化阵列.挂载部署逻辑卷:扩容逻辑卷:1:卸载LV umount2:扩容LV lvextend3:检查LV e2fask resize2fs4:挂载 mount5:使用 vi缩小逻辑卷:1:卸载LV umount2:检查LV e2fask3:缩小LV resize2fs4:挂