Loading... <p>一. raid 是什么</p> <p> RAID:(Redundant Array of indenpensive Disk) 独立磁盘冗余阵列: 磁盘阵列是把多个磁盘组成一个阵列,当作单一磁盘使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。磁盘阵列利用的不同的技术,称为RAID level,不同的level针对不同的系统及应用,以解决数据安全的问题。简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。<br /> <br /> 一般高性能的磁盘阵列都是以硬件的形式来达成,进一步的把磁盘存取控制及磁盘阵列结合在一个控制器(RAID controler)或控制卡上,针对不同的用户解决人们对磁盘输输入输出系统的四大要求: <br /> (1)增加存取速度, <br /> (2)容错(fault tolerance),即安全性 <br /> (3)有效的利用磁盘利用率; <br /> (4)尽量的平衡CPU,内存及磁盘的性能差异,提高主机的整体工作性能。</p> <p><strong>二</strong>.可提供的功能:</p> <p><span style="font-size: 16px"></span></p> <p> 1.冗余(容错) </p> <p> 2.性能提升<br /><strong><br /></strong>RAID分类:<br /> 1. 硬件RAID:用RAId接口卡来实现;需要内核支持其驱动,并且该类设备设备显示为SCSI设备,代号为/dev/sd*<br /> 2. 软件RAID:用内核中的MD(multiple devices)模块实现,该类设备在/etc/下表示为:md*;在现在的RH 5版本中使用mdadm工具管理软RAID;(虽然来说可以用软件模拟实现raid,但是相对对磁盘控制的功能及性能不如硬件实现的好,生产环境中最好使用硬件raid</p> <p> 设置软件RAID,首先需要查看linux系统中是否有raid软件工具包。可以用</p> <p> rpm -qil raidtools 或 rpm -qifl /sbin/mdadm</p> <p> 命令查看相关raid命令。如果没有,可以从http://people.redhat.com/mingo/raidtools/ 中下载,然后解压安装:</p> <p> #tar –zxvf raidtools-1.00.3.tar.gz<br /> #cd raidtools-1.00.3<br /> #./configure<br /> # make<br /> # make install</p> <p> 这样raidtools-1.00.3就安装好了,从而可以随时安装使用RAID</p> <p>三.常见的raid level</p> <p> <strong>1. RAID-0</strong> :striping(条带模式),至少需要两块磁盘,做RAID分区的大小最好是相同的(可以充分发挥并优势);而数据分散存储于不同的磁盘上,在读写的时候可以实现并发,所以相对其读写性能最好;但是没有容错功能,任何一个磁盘的损坏将损坏全部数据;</p> <p> <strong>2. RAID-1</strong>:mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区大小分为一样),可增加热备盘提供一定的备份能力;数据有冗余,在存储时同时写入两块硬盘,实现了数据备份;但相对降低了写入性能,但是读取数据时可以并发,几乎类似于raid-0的读取效率;</p> <p> <strong>3</strong><strong>. RAID-2:</strong>RAID 2是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些。</p> <p> 在写入时,RAID 2在写入数据位同时还要计算出它们的汉明码并写入校验阵列,读取时也要对数据即时地进行校验,最后再发向系统。汉明码只能纠正一个位的错误,所以RAID 2也只能允许一个硬盘出问题,如果两个或以上的硬盘出问题,RAID 2的数据就将受到破坏。但由于数据是以位为单位并行传输,所以传输率也相当快。RAID 2是早期为了能进行即时的数据校验而研制的一种技术,主要为了即时校验以保证数据安全,如果数据位宽越大,用于校验阵列的相对投资就会越小,成本昂贵。</p> <p> <strong>4</strong><strong>. RAID-3:</strong>RAID3的数据存取方式和RAID2一样,把数据以位为单位来分割并且存储到各个硬盘上,并且在数据安全方面以奇偶校验取代海明码做错误校正及检测,所以只需要一个额外的校验盘。奇偶校验值的计算是以各个硬盘的相对应位进行异或的逻辑运算,然后将结果写入奇偶校验硬盘。</p> <p> RAID 3是在RAID 2基础上发展而来的,主要的变化是用相对简单的异或逻辑运算(XOR,eXclusive OR)校验代替了相对复杂的汉明码校验,从而也大幅降低了成本。RAID3具有容错能力,但是系统会受到影响。当一块硬盘失效时,该硬盘上的所以数据块必须使用校验信息重新建立。如果是从好盘中读取数据块,不会有任何变化;但是如果要读取的数据块正好位于已经损坏的硬盘上,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据。</p> <p> <strong>5</strong><strong>. RAID-4:</strong>RAID4和RAID3很象,数据都是依次存储在多个硬盘之上,奇偶校验码存放在独立的奇偶校验盘上,唯一不同的是,在数据分割上RAID3对数据的访问是按位进行的,RAID4是以数据块为单位。即RAID 4是按数据块为单位存储的,那么数据块应该怎么理解呢?简单的话,一个数据块是一个完整的数据集合,比如一个文件就是一个典型的数据块。当然,对于硬盘的读取,一个数据块并不是一个文件,而是由操作系统所决定的,这就是我们熟悉的簇(Cluster)。RAID 4这样按块存储可以保证块的完整,不受因分条带存储在其他硬盘上而可能产生的不利影响(比如当其他多个硬盘损坏时,数据就完了)。</p> <p> 不过,在不同硬盘上的同级数据块也都通过XOR进行校验,结果保存在单独的校验盘。所谓同级的概念就是指在每个硬盘中同一柱面同一扇区位置的数据算是同级。在写入时,RAID就是按这个方法把各硬盘上同级数据的校验统一写入校验盘,等读取时再即时进行校验。因此即使是当前硬盘上的数据块损坏,也可以通过XOR校验值和其他硬盘上的同级数据进行恢复。由于RAID 4在写入时要等一个硬盘写完后才能写一下个,并且还要写入校验数据所以写入效率比较差,读取时也是一个硬盘一个硬盘的读,但校验迅速,所以相对速度更快。</p> <p><strong> 6</strong><strong>. RAID-5:</strong>至少需要3块硬盘,RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。</p> <p>①空间利用率:1 – 1/n</p> <p>②性能:读性能接近RAID0,写性能相比RAID0要弱一些</p> <p>③冗余能力:可以接受1块硬盘的损坏</p> <p>(做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好硬盘转速一样,否则会影响性能,而且可用空间=磁盘数n-1,其中有一块是专门用来校验的,在存储数据的时候,校验盘里面是不会被存入数据的)</p> <p>(Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上,只是在存储空间上为N-1)</p> <p> <strong>7</strong><strong>. RAID-6:</strong>RAID6至少需要4块硬盘,RAID6与RAID5相类似,读写数据的时候会将数据分布的读写到所有硬盘上。在写数据的时候RAID5会对数据进行奇偶校验运算,并将校验信息也保存在了硬盘上,但是RAID6会比RAID5多保存一份校验信息,所以RAID6的冗余性比RAID5就有所提升,可以允许2块硬盘发生损坏。</p> <p>①空间利用率:1 – 2/n</p> <p>②性能:读性能接近RAID5,写性能相比RAID5还要弱一些</p> <p>③冗余能力:可以接受2块硬盘的损坏</p> <p><strong> 8</strong><strong>. RAID-10:</strong>RAID10又称为RAID1+0,先进行镜像(RAID1),再进行条带存放(RAID0)。Raid 10是一个Raid 0与Raid1的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全。我们知道,RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。由于利用了RAID 0极高的读写效率和RAID 1较高的数据保护、恢复能力,使RAID 10成为了一种性价比较高的等级,目前几乎所有的RAID控制卡都支持这一等级。但是,RAID 10对存储容量的利用率和RAID 1一样低,只有50%。因此,RAID10高可靠性与高效磁盘结构是一个带区结构加一个镜象结构,可以达到既高效又高速的目的,RAID 10能提供比RAID 5更好的性能。</p> <p> <strong> 9</strong><strong>.<strong> <strong>RAID-01:</strong></strong></strong>RAID 01是将条带(RAID 0)进行镜像(RAID 1)。Raid 0+需要的驱动器数量(至少):4(要求驱动器的数量为偶数)优点:RAID 0+1阵列从理论上来说,能够经受住RAID 0阵列中任何一块硬盘的故障,因为该硬盘上所有的数据都被备份在RAID 1阵列中。在绝大部分情况下,如果两块硬盘出现故障就会影响整个阵列,因为很多RAID控制器会在RAID阵列中的某一块硬盘出现故障之后让RAID 0镜像离线(毕竟,RAID 0阵列不提供任何冗余),因此只有剩下的RAID 0阵列在工作,这样系统就没有冗余了。简而言之,如果每个RAID 0阵列中都有一块磁盘出现故障,那么整个磁盘阵列就不能工作了。这种模式提供了非常好的顺序或任意读写的性能。<br /> 缺点:只能使用磁盘阵列总体存储容量的50%。容错性不如RAID 1。对于绝大部分控制器来说,这种模式能够应对一块磁盘出现故障的情况。扩展方面受到限制,而且扩展的费用很高<strong>。</strong></p> <p><strong> </strong></p> <p><strong> 4个常用的RAID级别各自的优缺点:</strong></p> <table width="811"> <tbody> <tr class="firstRow"> <td> <strong>RAID级别</strong> </td> <td> <strong>速度</strong></td> <td> <strong>冗余性</strong> </td> <td> <strong>磁盘利用率</strong> </td> </tr> <tr> <td> RAID 0 </td> <td> 读写速度均有提升</td> <td> 0</td> <td> 所有磁盘之和</td> </tr> <tr> <td> RAID 1</td> <td> 读速度有提升</td> <td> n</td> <td> 一个磁盘大小</td> </tr> <tr> <td> RAID 5</td> <td> 读写速度均有提升 </td> <td> 1</td> <td> 1-1/n</td> </tr> <tr> <td> RAID 6</td> <td> 读写速度均有提升</td> <td> 2</td> <td> 1-2/n</td> </tr> </tbody> </table> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信