Linux Software RAID实践

在计算机术语中,RAID(Redundant Array of Independent Disks,独立磁盘冗余数组)的基本思想就是把多个相对便宜的硬盘组合起来,成为一个磁盘数组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘.
        根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:
                增强数据集成度
                增强容错功能
                增加处理量或容量
        另外,磁盘数组组对于计算机来说,看起来就像一个单独的硬盘或逻辑存储单元.简单来说,RAID把多个硬盘组合成为一个逻辑磁区,因此,操作系统只会把它当作一个硬盘.RAID常被用在服务器计算机上,并且常使用完全相同的硬盘作为组合.由于硬盘价格的不断下降与RAID功能更加有效地与主板集成,它也成为了玩家的一个选择,特别是需要大容量储存空间的工作,如:视频与音频制作.


常用RAID的等级介绍
        为了各自的特定应用,所需要的磁盘的组合方式也有所不同,通常我们将这种组合方式称为RAID等级.常用的RAID等级如下:

        RAID0(Stripping,条带)
        将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快.RAID0亦称为带区集.它是将多个磁盘并列起来,成为一个大磁盘.在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中.所以,在所有的级别中,RAID0的速度是最快的.但是RAID0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失.
        理论上越多的磁盘效能就等于[单一磁盘效能]x[磁盘数],但实际上受限于总线I/O瓶颈及其它因素的影响,RAID效能会随边际递减,也就是说,假设一个磁盘的效能是50MB/秒,两个磁盘的RAID0效能约96MB/秒,三个磁盘的RAID0也许是130MB/秒而不是150MB/秒.所以,两个磁盘的RAID0最能明显感受到效能的提升.
                Size = 2 * min(S1, S2)
        但如果是以软件方式来实现RAID,则磁盘的空间则不见得受限于此(例如Linux Software RAID),通过软件实现可以经由不同的组合而善用所有的磁盘空间.
                Size = sum of all disk

 

        RAID1(Mirror,镜像)
        两组以上的N个磁盘相互作镜像,速度没有提高,除非拥有相同数据的主磁盘与镜像同时损坏,否则数据不会丢失,可靠性最高.其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据.当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作.因为有镜像硬盘做数据备份,所以RAID1的数据安全性在所有的RAID级别上来说是最好的.但无论用多少磁盘做RAID1,仅算一个磁盘的容量,是所有RAID上磁盘利用率最低的一个级别.
                Size = 2 * min(S1, S2)

 

        RAID5(分布奇偶位条带)
        RAID5是一种存储性能,数据安全和存储成本兼顾的存储解决方案.它使用的是Disk Striping(硬盘分割)技术.RAID5至少需要三颗硬盘,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上.当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据. RAID5可以理解为是RAID0和RAID1的折衷方案.RAID5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高.RAID5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息.写入数据的速度相当的慢,若使用"回写高速缓存"可以让效能改善不少.同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较便宜.
        Size = (N - 1) * min(S1, S2, ...Sn)

 

        RAID10/01
        RAID10/01其实可细分为RAID1+0或RAID0+1.
        RAID1+0(镜像阵列条带)是先镜射再分割数据.是将所有硬盘分为两组,视为是RAID0的最低组合,然后将这两组各自视为RAID1运作.RAID1+0有着不错的读取速度,而且拥有比RAID0更高的数据保护性.
        RAID0+1则是跟RAID1+0的程序相反,是先分割再将数据镜射到两组硬盘.它将所有的硬盘分为两组,变成RAID1的最低组合,而将两组硬盘各自视为RAID0运作.RAID0+1比起RAID1+0有着更快的读写速度,不过也多了一些会让整个硬盘组停止运转的机率;因为只要同一组的硬盘全部损毁,RAID0+1就会停止运作,而RAID1+0则可以在牺牲RAID0的优势下正常运作.
        RAID10巧妙的利用了RAID0的速度以及RAID1的保护两种特性,不过它的缺点是需要的硬盘数较多,因为至少必须拥有四个以上的偶数硬盘才能使用.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25222.html