鸟哥的linux私房菜学习笔记《三十二》RAID软件磁盘阵列

  1. 简介
    RAIN-0:主要有任何一块磁盘损毁,在RAID上面的所有数据都会丢失而无法读取。(半对半)
    RAID-1:最大的优点大概就在与数据的备份。不过由于磁盘容量有一半用在备份,因此总容量会是全部磁盘容量的一半而已。(镜像)
    RAID 1+0,RAID 0+1:具有RAID-0的优点所以性能得以提升,具有RAID-1的优点所以数据得以备份。但是也有RAID-1的缺点,总容量会减少一半。
    RAID-5的总容量会是整体磁盘数量减一块。RAID-5默认仅支持一块磁盘的损毁情况
    RAID-6支持同时两块磁盘损毁
  2. 磁盘阵列的优点
    当磁盘阵列的磁盘损毁时,就得要将坏掉的磁盘拔除,然后换一颗新的磁盘。换成新磁盘并且顺利启动磁盘阵列后, 磁盘阵列就会开始主动的重建 (rebuild) 原本坏掉的那颗磁盘数据到新的磁盘上!然后你磁盘阵列上面的数据就复原了!
  3. mdadm:软磁盘阵列的设置
    参数:
    –create :为创建 RAID 的选项;
    –auto=yes :决定创建后面接的软件磁盘阵列设备,亦即 /dev/md0, /dev/md1等
    –chunk=Nk :决定这个设备的 chunk 大小,也可以当成 stripe 大小,一般是 64K 或 512K。
    –raid-devices=N :使用几个磁盘 (partition) 作为磁盘阵列的设备
    –spare-devices=N :使用几个磁盘作为备用 (spare) 设备
    –level=[015] :设置这组磁盘阵列的等级。支持很多,不过建议0,1,5即可
    –detail:后面所接的那个磁盘阵列的详细信息
    –add:会将后面的设备加入到这个md中
    –remove:会将后面的设备从md中删除
    –fail:会将后面的设备设置成出错的状态
    这里写图片描述
  4. mdadm:创建RAID

    
    # 给虚拟机添加6块硬盘(sdb,sdc,sdd,sde,sdf)(sdg备用)
    
    
    # 以mdadm创建RAID
    
    [root@CentOS ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd{b,c,d,e,f}
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    
    
    
    [root@CentOS ~]# mdadm --detail /dev/md0
    /dev/md0: # 设备文件名
            Version : 1.2
      Creation Time : Sat Mar 18 10:08:48 2017
         Raid Level : raid5
         Array Size : 62863872 (59.95 GiB 64.37 GB)
      Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
       Raid Devices : 4  #用作RAID的数量为4
      Total Devices : 5  #总设备数为5
        Persistence : Superblock is persistent
    
        Update Time : Sat Mar 18 10:10:45 2017
              State : clean 
     Active Devices : 4  #启动的设备数
    Working Devices : 5  #可工作的设备数
     Failed Devices : 0  #出错的设备数
      Spare Devices : 1  #预备磁盘的数量
    
             Layout : left-symmetric
         Chunk Size : 512K
    
               Name : CentOS:0  (local to host CentOS)
               UUID : 2be487b3:4e6688cd:c5d5fbb4:991f3593(设备表示符)
             Events : 20
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           2       8       48        2      active sync   /dev/sdd
           5       8       64        3      active sync   /dev/sde
    
           4       8       80        -      spare   /dev/sdf
    
    
    # spare rebuilding是正在创建的过程(指未完成状态)
    
    
    # 四个active sync,一个spare
    
    
    
    
    # 查看系统RAID情况
    
    [root@CentOS ~]# cat /proc/mdstat 
    Personalities : [raid6] [raid5] [raid4] 
    md0 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
          62863872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
    
    unused devices: <none>
    
    # 上述表示md0是raid5,由五块磁盘组成(有顺序标识)
    
    
    # sdf[4](S):S代表spare
    
    [UUUU]代表四个设备正常
    
    
    
    # 格式化与挂载RAID
    
    [root@CentOS ~]# mkfs -t ext4 /dev/md0
    [root@CentOS ~]# mkdir /mnt/raid
    [root@CentOS ~]# mount /dev/md0 /mnt/raid
    [root@CentOS ~]# df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/md0        61876732  184136  58549404   1% /mnt/raid
    
  5. 仿真RAID错误的救援模式

    
    # 复制一些东西到/mnt/raid中,假设RAID已经在使用了
    
    [root@CentOS ~]# cp -a /etc/ /var/log /mnt/raid/
    [root@CentOS ~]# df /mnt/raid/; du -sm /mnt/raid/*
    Filesystem     1K-blocks   Used Available Use% Mounted on
    /dev/md0        61876732 236008  58497532   1% /mnt/raid
    42  /mnt/raid/etc
    9   /mnt/raid/log
    1   /mnt/raid/lost+found
    
    
    
    
    
    
    # 假设/dev/sdd出错,实际模拟方式:
    
    [root@CentOS ~]# mdadm --manage /dev/md0 --fail /dev/sdd
    mdadm: set /dev/sdd faulty in /dev/md0
    [root@CentOS ~]# mdadm --detail /dev/md0
    /dev/md0:
         Active Devices : 3
        Working Devices : 4
         Failed Devices : 1  #出错一个
          Spare Devices : 1
    
             Layout : left-symmetric
         Chunk Size : 512K
    
     Rebuild Status : 10% complete
    
               Name : CentOS:0  (local to host CentOS)
               UUID : 2be487b3:4e6688cd:c5d5fbb4:991f3593
             Events : 23
    
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           4       8       80        2      spare rebuilding   /dev/sdf
           5       8       64        3      active sync   /dev/sde
    
           2       8       48        -      faulty   /dev/sdd
    
    
    # 显示正在恢复
    
    [root@CentOS ~]# cat /proc/mdstat 
    Personalities : [raid6] [raid5] [raid4] 
    md0 : active raid5 sde[5] sdf[4] sdd[2](F) sdc[1] sdb[0]
          62863872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UU_U]
          [===============>.....]  recovery = 75.1% (15752192/20954624) finish=0.5min speed=152286K/sec
    unused devices: <none>
    [UU_U]:一块磁盘出错
    
    
    
    
    # 重建过的RAID 5情况:
    
    [root@CentOS ~]# mdadm --detail /dev/md0
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           4       8       80        2      active sync   /dev/sdf
           5       8       64        3      active sync   /dev/sde
    
           2       8       48        -      faulty   /dev/sdd
    
    [root@CentOS ~]# cat /proc/mdstat 
    Personalities : [raid6] [raid5] [raid4] 
    md0 : active raid5 sde[5] sdf[4] sdd[2](F) sdc[1] sdb[0]
          62863872 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
    
    unused devices: <none>
    
    # 已恢复正常!
    
    
    
    
    # 给虚拟机增加一块新的相同大小的新磁盘
    
    
    # 加入新的拔出有问题的磁盘
    
    [root@CentOS ~]# mdadm --manage /dev/md0 --add /dev/sdg /remove /dev/sdd
    
    [root@CentOS ~]# mdadm --detail /dev/md0
        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           1       8       32        1      active sync   /dev/sdc
           4       8       80        2      active sync   /dev/sdf
           5       8       64        3      active sync   /dev/sde
    
           6       8       96        -      spare   /dev/sdg
  6. 设置自动挂载

    [root@study ~]# mdadm --detail /dev/md0 &#124; grep -i uuid
    UUID : 2256da5f:4870775e:cf2fe320:4dfabbc6
    
    # 后面那一串数据,就是这个设备向系统注册的 UUID 识别码!
    
    
    # 开始设置 mdadm.conf
    
    [root@study ~]# vim /etc/mdadm.conf
    ARRAY /dev/md0 UUID=2256da5f:4870775e:cf2fe320:4dfabbc6
    
    # RAID设备 识别码内容
    
    
    # 开始设置开机自动挂载并测试
    
    [root@study ~]# blkid /dev/md0
    /dev/md0: UUID="494cb3e1-5659-4efc-873d-d0758baec523" 
    [root@study ~]# vim /etc/fstab
    UUID=494cb3e1-5659-4efc-873d-d0758baec523 /srv/raid ext4 defaults 0 0
    [root@study ~]# umount /dev/md0; mount -a
    [root@study ~]# df -Th /srv/raid
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/md0 xfs 3.0G 111M 2.9G 4% /srv/raid
    
    # 你得确定可以顺利挂载,并且没有发生任何错误!
    
  7. 关闭RAID
    如果你只是将 /dev/md0 卸载,然后忘记将 RAID 关闭, 结果就是….未
    来你在重新分区 /dev/vdaX 时可能会出现一些莫名的错误状况

    
    # 1\. 先卸载且删除配置文件内与这个 /dev/md0 有关的设置:
    
    [root@study ~]# umount /srv/raid
    [root@study ~]# vim /etc/fstab
    UUID=494cb3e1-5659-4efc-873d-d0758baec523 /srv/raid xfs defaults 0 0
    
    # 将这一行删除掉!或者是注解掉也可以!
    
    
    # 2\. 先覆盖掉 RAID 的 metadata 以及 XFS 的 superblock,才关闭 /dev/md0 的方法
    
    [root@study ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50
    [root@study ~]# mdadm --stop /dev/md0
    mdadm: stopped /dev/md0 &lt;==不啰唆!这样就关闭了!
    [root@study ~]# dd if=/dev/zero of=/dev/vda5 bs=1M count=10
    [root@study ~]# dd if=/dev/zero of=/dev/vda6 bs=1M count=10
    [root@study ~]# dd if=/dev/zero of=/dev/vda7 bs=1M count=10
    [root@study ~]# dd if=/dev/zero of=/dev/vda8 bs=1M count=10
    [root@study ~]# dd if=/dev/zero of=/dev/vda9 bs=1M count=10
    [root@study ~]# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    unused devices: &lt;none&gt; &lt;==看吧!确实不存在任何阵列设备!
    [root@study ~]# vim /etc/mdadm.conf
    
    #ARRAY /dev/md0 UUID=2256da5f:4870775e:cf2fe320:4dfabbc6
    
    
    # 一样啦!删除他或是注解他!
    

    为啥上面会有数个 dd 的指令啊?干麻?这是因为 RAID 的相关数据其
    实也会存一份在磁盘当中,因此,如果你只是将配置文件移除, 同时关闭了 RAID,但是分
    区并没有重新规划过,那么重新开机过后,系统还是会将这颗磁盘阵列创建起来,只是名称
    可能会变成 /dev/md127 就是了! 因此,移除掉 Software RAID 时,上述的 dd 指令不要忘
    记!但是…千千万万不要 dd 到错误的磁盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值