软件磁盘阵列(Software RAID)介绍

简介

  • RAID,英文全称为:Redundant Arrays of Independent Disks,中文译为:独立容错式磁盘阵列,以前也叫作容错式廉价磁盘阵列,现在一般都称为磁盘阵列。这个东西是由加州大学伯克利分校提出来的,可以把多块较小的硬盘整合成一块较大的盘使用,也可用做保护数据的安全。现在磁盘阵列分为:软件RAID和硬件RAID;在应用中若是企业的要求比较高,一般都是用硬件RAID,因为软件的速度,怎么也比不上硬件的速度的,当然硬件太烂的话就算了,不过一般企业也不会用很烂的硬件的!!

    这里由于资源有限,介绍的是软RAID!!

一、RAID等级及功能

  • 1、RAID-0 (等级模式, stripe):效能最佳
  • 首先要介绍的是RAID-0,这种模式的RAID要求要使用至少两块以上的硬盘,而且硬盘的型号、容量大小什么的最好都是一致的。这种级别的RAID会把每一块磁盘分成一小块一小块的大小相同、数量相等的 chunk (大小可以自己设定,一般在4K—1M之间),当有文件要写入磁盘时,系统会依据划分好的chunk大小,依次存入各个磁盘,不过这种存储不是一个盘一个盘的去存,而是进行交错的存储,并不会将数据集中存入到一个磁盘中,具体情况如下图所示:
    这里写图片描述 如图所示,使用RAID-1在进行文件存储时,系统会自动地将文件分别存进两块磁盘中,也就是说会有一个磁盘用作冗余备份,数据的安全性会大大地得到提升。图中用的只是两块磁盘,其实还可以使用更多的磁盘组成RAID-1,但是这些磁盘所存储的数据是完全相同的;一块磁盘的损坏,并不会损坏数据的完整性,所以这种模式很适合于那些对数据安全要求非常高的场合。
  • RAID-1对于数据的安全性确实得到了很好的保证,但同时也暴露了一些问题,就是数据的存储效率却大大地降低了,毕竟我们的磁盘在同一时刻是只能进行一个磁盘的读写操作的,所以组成RAID-1的磁盘数量越多,数据的存储效率也就越低,这是一个令人很头疼的问题,毕竟鱼和熊掌不可同时得焉!!
3、RAID-10 和 RAID-01
  • RAID-10 和RAID-01这两种模式是根据 RAID-0 和 RAID-1 两种模式的特点优势组合而成的,在很大程度上可以克服 RAID-0 和 RAID-1 单种模式的不足之处,但是在实际使用中一般使用较多的还是 RAID-10 这种组合模式,原因就在于这种组合模式在造价、数据冗余和数据存取效率上来说能够达到一种较为理想的状态,下图为 RAID-10 这种组合模式的数据存储方式:
    这里写图片描述
  • 如上图所示,RAID-5在进行数据存储时与RAID-0的方式是有点类似的,不同之处就在于RAID-5多了一个数据校验的部分(记录着同时存入数据的信息,可以叫做:同位校验码),这个同位校验码随着每一次磁盘存储,其存放位置都会不同,分散在各个磁盘中,可以降低数据损毁的概率;在磁盘有损坏的情况下,通过将未损坏的磁盘数据与这个数据校验的部分进行计算,便可以恢复丢失的数据,在数据安全性上要比RAID-0好很多。
  • RAID-5在磁盘的读性能上与RAID-0差不了太多,但是在相同硬件环境下,在写性能上RAID-5比RAID-0可能就会差点了。因为在写的时候,RAID-5要计算同为校验码,在进行这个计算的时候,是会占用计算机的计算资源,而RAID-0由于没有同位校验码,所以也就不需要这一步的计算了,效率上会稍微比RAID-5高些(关键要看硬件环境)!读的时候没有这些操作,所以读性能差别不大!
  • 还有一种RAID-6的模式,与RAID-5相似,都是通过同位校验码来保证数据的安全,不同的是RAID-6是有两份同位校验码的,并且校验码的存储方式与RAID-5一样,都是分散存储的。这种模式比RAID-5好的地方在于RAID-6允许系统中有两块磁盘可以同时损坏,依然能保证数据可以被恢复(因为有两份冗余校验),而RAID-5只能同时损坏一块磁盘。
5、Spare Disk:预备磁盘的功能
  • Spare Disk也可以叫做热备盘,它的作用就是在磁盘阵列中的磁盘发生损坏时,系统会自动启用热备盘,并自动重建磁盘阵列中损坏磁盘的数据,这也会是热备盘的优点。热备盘可以有一块,也可以有多块!当然若要使用热备盘,首先使用的磁盘阵列要支持热备盘的功能,同时硬件系统最好能支持热拔插,否则还要手动卸下损坏的磁盘,再手动安装新的磁盘,而且手动安装的话还要关机才能进行!
6、磁盘阵列的优点
  • 磁盘阵列的应用主要要考虑以下几点: 数据安全与可靠性:指的并非网络数据安全,而是当磁盘损毁时,数据是否还能够被安全的救援或使用之意; 读写效能:例如RAID 0 可以加强读写效能,让你的系统I/O 部分得以改善; 容量:可以让多颗磁盘组合起来,所以单一文件系统可以有相当大的容量。 重点是保证数据的可靠性和安全性(完整性)是RAID使用的重点考虑,毕竟在企业中数据是异常重要的,在日常生活中一般也没有使用这个的必要!
  • 下表为几种RAID级别的各自特点:(n为假定有n块磁盘组成)
项目 RAID-0 RAID-1 RAID-10 RAID-5 RAID-6
最少磁盘数 2 2 4 3 4
最大容错磁盘数 n-1 n/2 1 2
数据安全性 完全没有 最佳 最佳 比RAID-5好
理论写入效率 n 1 n/2
理论读出效率 n n n n
磁盘实际可使用量 n 1 n/2 n-1 n-2
一般应用 强调效率但数据重要性要求不高的环境 数据存储与备份 服务器与云系统中常用 数据存储与备份 数据存储与备份

注:因为RAID-5和 RAID-6读写都需要经过parity 的计算机制,因此读/写效能都不会刚好满足于使用的磁碟数量!
另外,根据使用的情况不同,一般推荐的磁盘阵列等级也不太一样,需要根据自己的使用环境进行选择。

二、 软件RAID与硬件RAID

  • 前面也都提到过RAID分为软件RAID和硬件RAID,以下将会介绍什么是软件RAID,什么又是硬件RAID,以及二者又有什么区别是什么。
  • 硬件磁盘阵列(hardwareRAID)是通过磁盘阵列卡来创建磁盘阵列的。在磁盘阵列卡上会有一个专门的芯片来处理RAID任务,可以大大减轻原来系统的计算压力和I/O压力,效率也会得到很好的提升;同时现在相当一部分的磁盘阵列卡都支持热拔插,所以在更换损坏磁盘时是非常方便的。但是不好的一点是磁盘阵列卡比较贵,特别是那些好一点的磁盘阵列卡就会特别贵,而且功能还不能保证特别齐全,所以在这种情况下就出现了软件RAID,来模拟硬件RAID。
  • 软降RAID是一种模拟硬件RAID的产物,是要运行在系统上面的,是要占用一定的系统资源的,特别是计算和I/O资源,所以在效率上跟硬件RAID相比还是有有相当的差距的。虽然说现在的机器计算速度都非常快了,但是对于一些要求较高的场景或企业,一般最好还是尽量不要选择软件RAID的,毕竟在总的使用成本上来说硬件RAID还是很划算的!

三、软件磁盘阵列的设定

  • 1、软件RAID的指令介绍
    软件RAID的设置很简单,就一个指令,但是这个指令和在CentOS7中设置quota的xfs_quota指令类似,都是一条指令后面跟很多可选选项。
  • 指令格式:
  • mdadm –create /dev/md[0-9] –auto=yes –level=[015] –chunk =NK –raid-devices=N –spare-devices=N /dev/sdx /dev/hdx…

常用选项与参数:

option 描述
–create 创建磁盘阵列(RAID)
–auto 建立后面接的软件磁盘阵列(RAID)设备,比如/dev/md0,/dev/md1…
–chunk 设置设备的chunk大小,也可以当做stripe大小,一般为64K或者512K
–raid-devices 设置组成磁盘阵列(RAID)的磁盘数量
–spare-devices 设置热备盘的数量
–level 设置磁盘阵列(RAID)的等级,一般建议0,1,5即可
–detail 显示后接磁盘阵列(RAID)的详细信息
  • 2、创建磁盘阵列:
    mdadm –create /dev/md0 –auto=yes –level=5 –chunk=256K –raid-devices=4 –spare-devices=1 /dev/sdc {1,2,3,4,5}

    这里写图片描述

    由图中可知,磁盘阵列md0由分区/dev/sdc1、/dev/sdc2、/dev/sdc3、/dev/sdc4组成,/dev/sdc5设置成了热备盘。若是创建时没有报错,但是使用该指令却无法查询时,可以先等几分钟,然后再使用此指令查询,因为创建时,系统是需要时间去进行创建的,创建慢一点的话,可能查的时候查不出来!

    这里写图片描述

    上图中进行格式化的参数含义为:

    • su:表示chunk大小为256K;
    • sw:表示被格式化的磁盘数量,设置为3,所以格式化了三块磁盘,所以df查询出来的大小为3GB;
    • extsize:表示由上面两项计算出来的数据宽度:256K*3=768K。

    四、模拟RAID错误的救援模式

    • 指令格式:mdadm –manage /dev/md[0-9] [–add 设备] [–remove 设备] [–fail 设备]
    option 描述
    –add 将后面跟的设备添加到该RAID中
    –remove 将后面跟的设备从该RAID中移除
    –fail 将后面跟的设备设置成出错状态

    1)将磁盘状态设置成出错状态:

    这里写图片描述
    3)将出错的设备移除并添加新的设备:
    这里写图片描述
    注意:以上操作都是在线完成的

    五、开机自动启动RAID并自动挂载

    • 1)查询md0的UUID识别码及UUID号:
      这里写图片描述
    • 3)修改/etc/mdadm.conf:(该文件中添加的是UUID识别码)
      这里写图片描述

    六、关闭软件RAID

    • 以下为关闭的步骤:
      1)首先要先卸载掉该RAID设备:umount /srv/raid;
      2)将/etc/fstab文件中的有关该RAID设备的那一行删除掉;
      3)覆盖该RAID设备的元数据块及superblock:dd if=/dev/zero of=/dev/md0 bs=1M count=50;
      4)关闭该RAID设备:mdadm –stop /dev/md0;
      5)将组成该RAID设备的各磁盘的RAID相关数据:dd if=/dev/zero of=/dev/sdc{1..5} bs=1M count=10
      6)将/etc/mdadm.conf文件中关于该RAID设备的那一行数据删除或注释掉即可
      7)查看:cat /proc/mdstat

      注:上述的dd指令是为了将磁盘中所有有关该RAID设备的信息覆盖掉;若不进行覆盖,在开机时,系统还是会自动将该RAID设备建立起来,名称是随机指定的!

    来源:AhhSong

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年8月7日
下一篇 2017年8月7日

相关推荐