实验环境

  • Vmware添加420G硬盘(模拟测试)
  • 系统CentOS Linux release 7.6.1810 (Core)

生产环境中用到的服务器一般都配备RAID阵列卡,我们需要学会使用mdadm命令在Linux系统中创建和管理软件RAID磁盘阵列,而且它涉及的理论知识和操作过程与生产环境中的完全一致。

mdadm命令用于创建、调整、监控和管理RAID设备,英文全称为“multiple devices admin”,语法格式为“mdadm`参数 硬盘名称`”。

mdadm命令中的常用参数及作用

参数作用
-a检测设备名称
-n指定设备数量
-l指定RAID级别
-C创建
-v显示过程
-f模拟设备损坏
-r移除设备
-Q查看摘要信息
-D查看详细信息
-S停止RAID磁盘阵列

创建整列卡

接下来,使用mdadm命令创建RAID 10,名称为/dev/md0
其中,-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数则代表RAID 10方案;最后再加上4块硬盘设备的名称就搞定了。

[root@53 ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

查看简要信息

可以用-D参数进行查看。也可以用-Q参数查看简要信息:

[root@53 ~]# mdadm -Q /dev/md0
/dev/md0: 39.97GiB raid10 4 devices, 0 spares. Use mdadm --detail for more detail.

格式化Ext4格式

[root@53 ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477056 blocks
523852 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   

创建挂载点,将硬盘设备进行挂载操作;

[root@53 ~]# mkdir /RAID10
[root@53 ~]# mount /dev/md0 /RAID10
[root@53 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   36G  4.6G   32G   13% /
devtmpfs                 898M     0  898M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M  9.6M  901M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M   15% /boot
/dev/mapper/centos-home   18G   33M   18G    1% /home
/dev/md0                  40G   49M   38G    1% /RAID10
tmpfs                    182M     0  182M    0% /run/user/0

再来查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确:

[root@53 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Jul 25 04:40:30 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Jul 27 01:54:59 2022
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : 53:0  (local to host 53)
              UUID : 01af1583:0b79c2e7:ae64d91a:f68e8e39
            Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

修改/etc/fatab文件

如果想让创建好的RAID磁盘阵列能够一直提供服务,不会因每次的重启操作而取消,那么一定要记得将信息添加到/etc/fstab文件中,这样可以确保在每次重启后RAID磁盘阵列都是有效的。

[root@53 ~]# echo "/dev/md0 /RAID10 ext4 defaults 0 0"  >> /etc/fstab
[root@53 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu May  6 03:04:18 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=087c7d4c-a364-4f57-8803-ac2927618cca /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/md0 /RAID10 ext4 defaults 0 0

损坏磁盘阵列及修复

之所以在生产环境中部署RAID 10磁盘阵列,就是为了提高存储设备的IO读写速度及数据的安全性,但因为我们的硬盘设备是在虚拟机中模拟出来的,所以对于读写速度的改善可能并不直观。下面演示一下RAID磁盘阵列损坏后的处理方法,以确保以后在步入运维岗位后不会因为突发事件而手忙脚乱。

在确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变:

[root@53 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@53 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Jul 25 04:40:30 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Jul 27 02:07:03 2022
             State : clean, degraded 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : 53:0  (local to host 53)
              UUID : 01af1583:0b79c2e7:ae64d91a:f68e8e39
            Events : 19

    Number   Major   Minor   RaidDevice State
       -       0        0        0      removed
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

       0       8       16        -      faulty   /dev/sdb

刚刚使用的-f参数是让硬盘模拟损坏的效果。为了能够彻底地将故障盘移除,还要再执行一步操作:

[root@53 ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0

RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令予以替换即可,在此期间可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。

更换硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作。使用-D参数即可看到整个过程和进度(用百分比表示):

[root@53 ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@53 ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Jul 25 04:40:30 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Jul 27 02:10:18 2022
             State : clean, degraded, recovering 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 44% complete

              Name : 53:0  (local to host 53)
              UUID : 01af1583:0b79c2e7:ae64d91a:f68e8e39
            Events : 29

    Number   Major   Minor   RaidDevice State
       4       8       16        0      spare rebuilding   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

查找故障盘

  • 一般故障盘对应的盘符上面的指示灯会一直闪烁,或者根据盘符顺序查找
最后修改:2023 年 04 月 15 日
如果觉得我的文章对你有用,请随意赞赏