RAID简介
RAID:(Redundant Array of Independent Disk)独立磁盘的冗余阵列
详细介绍可参考刘遄老师的RAID讲解文章

环境:
CentOS7MINI
VMware16.0

准备:

磁盘5块(系统盘1块+4块做阵列)

centos6加载raid卡驱动 centos安装raid_linux

mdadm命令用于管理Linux系统中的软件RAID硬盘阵列。
格式:

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

由于CentOS7最小化没有
安装mdadm

[root@localhost ~]yum install -y mdadm

创建RAID10
①创建需要使用mdadm中的参数了。其中-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,并设置阵列名为/dev/md0;-a yes参数代表自动创建设备文件;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数表示RAID 10;最后再加上4块硬盘设备的名称就搞定了。

[root@localhost ~]mdadm -Cv /dev/md0 -a yes -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: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

②然后格式化好新的阵列卡

[root@localhost ~]mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=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: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

③创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为40GB。

[root@localhost ~]# mkdir /RAID10
[root@localhost ~]# mount /dev/md0 /RAID10/
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        18G  913M   17G   6% /
devtmpfs                devtmpfs  908M     0  908M   0% /dev
tmpfs                   tmpfs     914M     0  914M   0% /dev/shm
tmpfs                   tmpfs     914M  8.5M  906M   1% /run
tmpfs                   tmpfs     914M     0  914M   0% /sys/fs/cgroup
/dev/sr0                iso9660   3.9G  3.9G     0 100% /media/cdrom
/dev/sda1               xfs       497M   96M  401M  20% /boot
/dev/md0                ext4       40G   49M   38G   1% /RAID10

④查看md0阵列的详细信息,并将阵列盘永久挂载使其生效

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 01:39:15 2020
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 17

    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
       3       8       64        3      active sync   /dev/sde
[root@localhost ~]# echo "/dev/md0 /RAID10 ext4 defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab	#查看挂载文件

#
# /etc/fstab
# Created by anaconda on Fri Oct 30 21:03:35 2020
#
# 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        1 1
UUID=2999ce12-9dc5-4581-b11c-b0ff63188473 /boot                   xfs     defaults        1 2
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sr0 /media/cdrom                           iso9660 defaults        0 0
/dev/md0 /RAID10 								ect4 	defaults 		0 0

损坏损坏磁盘阵列及修复
首先在生产环境中,总是避免不了磁盘损坏的情况,比如长时间老化啊,接触不良等等导致硬盘,出现故障,我们就需要用到阵列,既然用到阵列,阵列内某个磁盘损坏了,我们该如何去修复它,这也是作为运维人员的一个技能点,所以,我会模拟一块硬盘损坏,来学习在生产环境中的出现某个硬盘损坏如何去修复,并让生产环境继续工作。

[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb	#-f:模拟磁盘损坏
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 03:33:03 2020
          State : clean, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 19

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

       0       8       16        -      faulty   /dev/sdb				#这里提示有/dev/sdb这块硬盘出现故障了

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

[root@localhost ~]#poweroff				#重启后替换掉损坏的磁盘
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 03:48:59 2020
          State : clean, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 29

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part   /boot
└─sda2            8:2    0 19.5G  0 part
  ├─centos-swap 253:0    0    2G  0 lvm    [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm    /
sdb               8:16   0   20G  0 disk
sdc               8:32   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sdd               8:48   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sde               8:64   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sr0              11:0    1  3.9G  0 rom    /media/cdrom

目前sdb是重新加进去的硬盘,所以我们需要重新添加到新的RAID10内,在此操作前,注意的是,您开机的时候硬盘是直接把RAID10挂载好的,所以需要卸载挂载点后,添加再去重新挂载上去

[root@localhost ~]# umount /RAID10/
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 03:53:14 2020
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : near=2
     Chunk Size : 512K

 Rebuild Status : 22% complete

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 38

    Number   Major   Minor   RaidDevice State
       4       8       16        0      spare rebuilding   /dev/sdb	#再次您会问为什么是这个状态;解释:这是加入阵列加载状态
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@localhost ~]# mount /dev/md0 /RAID10/
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part   /boot
└─sda2            8:2    0 19.5G  0 part
  ├─centos-swap 253:0    0    2G  0 lvm    [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm    /
sdb               8:16   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sdc               8:32   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sdd               8:48   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sde               8:64   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sr0              11:0    1  3.9G  0 rom    /media/cdrom

总结

对于我来说,磁盘阵列在Linux上做确实很好用,很方便,但是我不是很推荐直接用系统的方式做阵列,建议在生产环境,最好是做硬RAID,就是服务器的RAID,为什么会提出这个建议呢;因为如果说您在生产环境中,奔溃的不是您的硬盘,而是系统呢?这个阵列还有用吗?虽然说可以更换内核,但是对于我的建议还是希望能够给到大家最好的帮助!

最后感谢的是刘遄老师给予的教材资料,我也是跟着刘遄老师学的教材学的知识,希望像学习的同学跟我一起学习探讨,再次声明,我不是为了谁打广告,我是为了自己的未来而记录自己的学习的经验!谢谢~