Linux-raid的工作原理与管理

本章内容:

       1、RAID详细描述

       2、mdadm 工具

       3、创建raid

       4、磁盘阵列的管理

RAID描述:

          RAID:(Redundant Array of indenpensive Disk) 独立磁盘冗余阵列: 磁盘阵列是把多个磁盘组成一个阵列,             当作单一磁盘使用,它将数据以分段(striping)的方式储存在不同的磁盘中,存取数据时,阵列中的相关磁             盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。

      功能:

             提高IO能力:磁盘并行读写。
           提高耐用性:磁盘冗余来实现。

   RAID级别:多块磁盘组织在一起的工作方式有所不同,称为RAID level。不同的level针对不同的系统及应用,以解               决数据安全的问题。简单来说,RAID把多个硬盘组合成为一个逻辑扇区。因此,操作系统只会把它当作               一个硬盘。

  RAID的实方式:    
            1. 硬件RAID:用RAId接口卡来实现;需要内核支持其驱动,并且该类设备设备显示为SCSI设备,代号                   为/dev/sd*。
         2. 软件RAID:用内核中的MD(multiple devices)模块实现,该类设备在/etc/下表示为:md*;使用mdadm               工具管理软RAID;

            虽然来说可以用软件模拟实现raid,但是相对对磁盘控制的功能及性能不如硬件实现的好,生产环境中最             好使用硬件raid 。

 常见的RAID类型描述:

            RAID0:条带卷(striping),至少需要两块磁盘,做RAID分区的大小最好是相同的(也可以用相同大小的                  两块磁盘直接做 RAID);把数据分割成若干个相同大小的chunk,依次均匀的存储在不同的磁盘                   上,在读写的时候可以实现并发,所以读、写性能好;但是没有容错功能,任何一块磁盘损坏,将导                  致全部数据的损坏。磁盘利用率100%。

                如下图:

               Linux-raid的工作原理与管理

                      

          RAID1:镜像卷(mirroring),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区                 大小分为一样),磁盘利用率50%;数据有冗余,在存储时同时写入两块硬盘,实现了数据备份;但                  相对降低了写入性能,但是读取数据时可以并发,几乎类似于raid0的读取效率。

               如下图:

                      Linux-raid的工作原理与管理         

       RAID5:最少需要三块硬盘,可以提供热备盘实现故障的恢复;采用异或运算,可靠性强,允许损坏一块磁盘,只有同时                   损坏两块硬盘时数据才会完全损坏,只损坏一块硬盘时,系统会根据存储的异或校验位重建数据,临时提供服务;此               时如果磁盘阵列中有备用盘,系统会自动在备用盘上重建故障磁盘上的数据。

             如下图:

         Linux-raid的工作原理与管理  

          注:RAID中的容错表示即使磁盘故障,数据仍能保持完整,可让系统存取到正确的数据,而SCSI的磁盘阵列更可在工作中抽换               磁盘, 并可自动重建故障磁盘的数据。 


mdadm:模式化的工具

    命令语法格式:mdadm [mode]  <raiddevice> [options] <component-devices>
    支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
   [mode]:

       -C, –create:  创建一个新的阵列

      -A, –assemble: 激活RAID设备

       -F, –follow, –monitor:选择监控(Monitor)模式

       -G, –grow:   改变激活阵列的大小或形态

   <raiddevice>: /dev/md# 
   <component-devices>: 任意块设备
   [options]:选择一个模式的选项

         -C: 创建模式 
           -n #: 使用#个块设备来创建此RAID 
           -l #:指明要创建的RAID的级别 
           -a {yes|no}:自动创建目标RAID设备的设备文件 
           -c CHUNK_SIZE: 指明块大小 
           -x #: 指明空闲盘的个数 
        -D:显示raid的详细信息; 
              mdadm -D /dev/md#  
           -s:–scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。

               默认配置文件:/etc/mdadm.conf 

   理模式: -f: 标记指定磁盘为损坏 

               -a: 添加磁盘 

               -r: 移除磁盘


创建软RAID的过程:

     以四个分区模拟创建一个raid5为操作示例

   步骤:

        1、创建RAID5 的组员

       linux中阵列组成单元是分区,分区可以是整个设备也可以是设备多个分区中的一个;组成的阵列中,每个分区          的大小必须一样;在fdisk分区后需要将分区标志改为Linux raid auto类型;分区后如下:

 

                              Device             Boot       Start     EndBlocks    Id        System

/dev/sda6 19507 22118 20980890 fd Linux raid autodetect
/dev/sdc1 1 2612 20980858+ fd Linux raid autodetect
/dev/sdd1 1 2612 20980858+ fd Linux raid autodetect

       2、建立RAID5磁盘阵列;如下图:

              Linux-raid的工作原理与管理

    

   3、查看阵列状态;cat /proc/mdstat

       Linux-raid的工作原理与管理

          上图中,通过cat /proc/mdstat信息查看所有运行的RAID阵列的状态,在第一行中首先是MD的设备名md0,active和                 inactive选项表示阵列是否能读/写,接着是阵列的RAID级别raid5,后面是属于阵列的块设备,方括号[]里的数字表示设           备在阵列中的序号,(S)表示其是热备盘,(F)表示这个磁盘是 faulty状态。下一行中首先是阵列的大小,用块数来表示;           后面有chunk-size的大小,然后是layout类型,不同RAID级别的 layout类型不同,[3/3] [UUU]表示阵列有3个磁盘并且3           个磁盘都是正常运行的,而[2/3]和[_UU] 表示阵列有3个磁盘中2个是正常运行的,下划线对应的那个位置的磁盘是faulty           状态

   4、生成RAID的配置文件;

      mdadm.conf是该软件的默认配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件上报选项。其中写入每       一个阵列组成的详细情况,用于在下次开启阵列后依据此文件重新装配开启阵列,否则就需要在开启时手动定义阵列中的成         员;当然是推荐创建该文件,防止出现意外情况。

       Linux-raid的工作原理与管理

       

   5、创建文件系统;

     Linux-raid的工作原理与管理

   6、挂载;

      Linux-raid的工作原理与管理

    7、查看阵列的详细信息;

      Linux-raid的工作原理与管理


磁盘阵列管理:

    1、RAID5磁盘阵列中模拟一块磁盘故障;下图中模拟/dev/sdb盘损坏,发现热备的盘/dev/sdd1/自动替换损坏的磁盘,并显示数       据构建的进度条。

    Linux-raid的工作原理与管理

    2、移除损坏的磁盘;损坏的磁盘状态是faulty.

       Linux-raid的工作原理与管理

    注意:对于有冗余的raid形式,在单一磁盘故障时一般能在一段时间内重建数据;但是数据量非常大时,重建会非常缓慢,且重          建系统过程压力比较大,此时需要多关注系统负载,防止重建过程出现错误;在热移除故障盘后,也需要尽快的换上新              硬盘,并且添加spare盘;在故障修复,重建重建之后,需要重新生成配置文件,防止在下次开启时,按照最初的定义模            式开启。

     3、RAID阵列添加新的组员;

           #mdadm -G /dev/md0 -n4 -a /dev/sdb

     4、停止RAID设备;如下图:

        Linux-raid的工作原理与管理

     5、激活RAID设备;如下图:

        Linux-raid的工作原理与管理

     6、删除RAID设备,如下图:

  •         先取消挂载:#umount /mnt/raid
  •         停止RAID设备:mdadm -S /dev/md0
  •         删除配置文件:rf -f /etc/mdadm.conf
  •         删除/etc/fsatb 文件下的对应挂载信息
  •         分别清除RAID成员上的raid元数据:

            # mdadm –zero-superblock /dev/sda6

 RAID-10的创建方法: 

      1、先创建两个底层的RAID-1:

          #mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd{a6,b}

          #mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd{c1,d1}

      2、用两个RAID-1,创建上层RAID-0

          #mdadm -C /dev/md2 -a yes -l 0 -n 2 /dev/md{0,1}

      3、查看状态;如下图:

        Linux-raid的工作原理与管理

      4、创建配置文件

        Linux-raid的工作原理与管理    

      5、停止与开启阵列;

        Linux-raid的工作原理与管理

       上图中:关闭与开启过程,系统只能识别层级,关闭先关闭上层的RAID-0,再关闭底层的两个RAID-1;

           开启也是与关闭过程一样;防止了冲突。







   

原创文章,作者:shenjialong,如若转载,请注明出处:http://www.178linux.com/78445

(3)
shenjialongshenjialong
上一篇 2017-06-24 17:15
下一篇 2017-06-24 20:55

相关推荐

  • LVM逻辑卷管理

    一、简述 什么是逻辑卷?LVM(Logical Volume Manager)利用Linux内核device-mapper实现存储系统的虚拟化。通过LVM,把底层存储硬件抽象化成存储逻辑块,再将这些逻辑块集合构成存储池,从存储池空间划分分区,可以简单地扩大或缩小分区,而不用担心硬盘没有足够的连续空间。 使用逻辑卷分区有什么用?使用逻辑卷分区重点在于可以弹性地…

    Linux干货 2016-09-06
  • 正则表达式

    什么是正则表达式? 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除…

    Linux干货 2017-06-01
  • MySQL基础入门详解

    MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 想要使用MySQL来存储并操作数…

    2017-09-16
  • 在CentOS中获取命令帮助

    在CentOS中获取命令帮助    在使用和学习CentOS系统中,当我们遇上不熟悉的命令却又需要了解它的详细用法的时候,我们需要获取帮助。除了借助他人和搜索引擎之外,自己通过查看系统帮助文档来解决问题是很重要的。下面就来介绍如何获取帮助以及简单的解决思路:    一、如何获取命令帮助 Linux提供多层次的命令帮助:…

    Linux干货 2016-07-27
  • user相关的一些命令及用法

    前言            我们知道,当我们进入一家公司做运维方面的工作的时候,我们需要对公司的服务器进行监控管理,换句话说,我们需要一个身份来操作服务器。那么我们又知道,linux系统下拥有最高权限的管理员是Root,它无所不能,无所畏惧,那么公司肯定就是不会把这个账户交给你使用。那么就引出一个概…

    2017-07-22
  • chmod 没有执行权限的解决办法 [转载http://www.fblinux.com/?p=30]

    chmod没有权限,貌似就算是root用户也无法授权,这可咋办?chmod是设置权限的命令,但是自身没有了执行权限,那么就表示没有办法更改其他命令的权限,也没有办法改变自己的权限。 1 2 3 4 [root@localhost ~]# ll /bin/chmod ———-. 1 root root 48712 Oct 15 2014 …

    Linux干货 2017-01-01