RAID 10磁盘阵列实践

RAID概述

RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。
最常见的RAID磁盘阵列的方案是RAID 0RAID 1RAID 5RAID 10这4种。
RAID 10技术是RAID 1+RAID 0技术的一个“组合体”,先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性;再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。
RAID 10磁盘阵列至少4块硬盘来组建。
RAID10技术示意图

如下磁盘阵列部署实践基于RHEL8 + VMWare虚拟机进行操作。
使用mdadm命令创建、调整、监控和管理RAID设备。

部署磁盘阵列

第一步: 创建磁盘阵列。

[root@zhangsan ~]# 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.
[root@zhangsan ~]# 

参数解读:

  • 由于是基于虚拟环境部署的磁盘阵列,所以并不真正存在硬件形式的磁盘阵列卡,故使用-C参数表示创建一个软件RAID阵列卡
  • -v 参数显示创建的过程,/dev/md0为创建后的RAID磁盘阵列的名称
  • -n 4 表示使用4块硬盘来部署这个RAID磁盘阵列
  • -l 10 表示RAID 10方案
  • /dev/sdb /dev/sdc /dev/sdd /dev/sde 为4块硬盘设备名

命令执行期间可以用-D参数进行查看进度,也可以用-Q参数查看简要信息:

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

第二步: 把制作好的RAID磁盘阵列格式化为Ext4格式。

[root@zhangsan ~]# mkfs.ext4 /dev/md0
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 7819e2ed-91c1-46b9-8cd4-d7c390970965
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 (65536 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@zhangsan ~]# 

第三步: 创建挂载点,挂载磁盘阵列。

[root@zhangsan ~]# mkdir /RAID
[root@zhangsan ~]# mount /dev/md0 /RAID
[root@zhangsan ~]# df -h
...省略其他信息...
/dev/md0                40G   49M   38G   1% /RAID
[root@zhangsan ~]# 

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

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Dec 29 19:28:35 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 : Thu Dec 29 19:32:29 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 : zhangsan.com:0  (local to host zhangsan.com)
              UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
            Events : 23

    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
[root@zhangsan ~]#

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

[root@zhangsan ~]# vim /etc/fstab
...省略其他信息...
/dev/md0 /RAID ext4 defaults 0 0

磁盘阵列损坏及修复

一旦硬盘发生故障,服务器上相应的指示灯也会变成红灯(或者变成一直闪烁的黄灯)。
在确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除。

在虚拟机环境模拟硬盘设备故障:

# 使用mdadm命令的-f参数模拟硬盘损坏
[root@zhangsan ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@zhangsan ~]#

查看磁盘阵列状态:

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Dec 29 19:28:35 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 : Thu Dec 29 19:37:40 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 : zhangsan.com:0  (local to host zhangsan.com)
              UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
            Events : 25

    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
[root@zhangsan ~]# 

显然,硬盘设备(/dev/sdb)损坏之后,查看RAID磁盘阵列的状态,可以发现状态已经改变。

此时可以使用mdadm命令的-r参数将故障盘移除。

# 使用mdadm命令的-r参数移除故障硬盘
[root@zhangsan ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
[root@zhangsan ~]#

再次查看磁盘阵列状态:

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Dec 29 19:28:35 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 : 3
       Persistence : Superblock is persistent

       Update Time : Thu Dec 29 19:40:37 2022
             State : clean, degraded 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : zhangsan.com:0  (local to host zhangsan.com)
              UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
            Events : 26

    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
[root@zhangsan ~]# 

RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响整体RAID 10磁盘阵列的使用。
当购买了新的硬盘设备后再使用mdadm命令予以替换即可,在此期间可以在磁盘阵列挂载目录/RAID中正常地创建或删除文件。
更换硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作。

# 使用mdadm命令的-a参数添加新硬盘
[root@zhangsan ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@zhangsan ~]# 

使用-D参数即可看到整个过程和进度(用百分比表示):

[root@zhangsan ~]# mdadm -D /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Thu Dec 29 19:28:35 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 : Thu Dec 29 19:45:01 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 : 2% complete  # 添加新硬盘设备之后数据同步的执行进度

              Name : zhangsan.com:0  (local to host zhangsan.com)
              UUID : 3c00cdbe:d9b5858c:862ad54c:061d0563
            Events : 32

    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
[root@zhangsan ~]#

删除磁盘阵列

首先,umount磁盘阵列。

[root@zhangsan ~]# umount /RAID
[root@zhangsan ~]#

其次,停止磁盘阵列。

# 使用mdadm命令的-S参数或者--stop参数停止磁盘阵列
[root@zhangsan ~]# mdadm -S /dev/md0 
mdadm: stopped /dev/md0
[root@zhangsan ~]#

最后,卸载磁盘阵列中的磁盘。

[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sdb
[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sdc
[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sdd
[root@zhangsan ~]# mdadm --misc --zero-superblock /dev/sde
posted @ 2023-01-01 21:00  nuccch  阅读(604)  评论(0编辑  收藏  举报