实验环境
Vmware
添加4
块20G
硬盘(模拟测试)- 系统
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
查找故障盘
- 一般故障盘对应的盘符上面的指示灯会一直闪烁,或者根据盘符顺序查找