Centos7.9 创建Raid5
- raid5 可以理解为raid0和raid1的折中方案
- 它可以为系统提供数据安全保障,
- 它有着和raid0相似的数据读取速度,但磁盘利用率比raid1要高,只是多了一个奇偶严重(raid4,奇数验证,raid5偶数验证)
Raid5 的创建至少需要3块硬盘盘
硬盘 | 分区 | 分区格式 | 分区大小 |
sdb | sdb1 | fd | 20G |
sdc | sdc1 | fd | 20G |
sdd | sdd1 | fd | 20G |
sde | sde1 | fd | 20G |
sdf | sdf1 | fd | 20G |
一、安装mdadm和检查硬盘
1、安装mdadm
yum -y install mdadm
2、fdisk -l 查看新盘
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdf 8:80 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sdb 8:16 0 20G 0 disk
sde 8:64 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sda 8:0 0 100G 0 disk
├─sda2 8:2 0 99.5G 0 part
│ ├─centos-swap 253:1 0 100M 0 lvm [SWAP]
│ └─centos-root 253:0 0 99.4G 0 lvm /
└─sda1 8:1 0 500M 0 part /boot
二、mdadm命令详解
- 常用参数
选项 | 全称 | 功能 |
-a | --auto | 向RAID中添加新设备 |
-B | 不把RAID信息写入每个成员超级块中 | |
-s | --scan | 扫描配置文件/proc/mdstat搜寻丢失的信息 |
-c | --config= | 指定raid的配置文件目录,默认存在/etc/mdadm.conf |
-C | --create | 创建阵列 |
-D | --detail | 显示RAID设备的详细信息 |
-S | --stop | 停止使用RAID设备,并释放所有资源 |
-l | --level | 阵列模式(0/1/4/5/10、需要创建的阵列) |
-f | --fail | 将指定RAID设备设置为故障模式 |
-n | --raid-devices=N | 阵列中活动磁盘数目 |
-a | --auto{=yes,md,mdp,part,p}{NN} | 自动创建起设备文件 |
-x | --spare-devices=N | 表示当前阵列中预热盘有N块 即三块盘做raid1,其中地三块盘做在其中一块盘坏掉的时候自动补上 |
--zero-superblock | 使用领覆盖RAID设备中的超块快 |
三、创建RAID0
1、创建raid0
(base) root@python3[10:00:32]:~
$ mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd{b,c}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
2、查看raid0
$ mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Mar 8 11:28:58 2024
Raid Level : raid0
Array Size : 41908224 (39.97 GiB 42.91 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Mar 8 11:28:58 2024
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : python3:0 (local to host python3)
UUID : 14637605:804c951c:37cee3f7:509d15a9
Events : 0
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3、格式化
mkfs.ext4 /dev/md0
- 注意:在格式化时,可以指定-E选项下的stride参数指定条带是块大小的多少倍,有在一定程度上提高软RAID性能,如块默认大小为4k,而条带大小默认为64k,则stride为16,这样就避免了RAID每次存取数据时都去计算条带大小,如:
mkfs.ext4 -E stride=16 -b 4096 /dev/md0
- 其中stride=chunk/block,为2的n次方
4、生成配置文件
mdadm -D -s /dev/md0 > /etc/md0.conf
$ cat /etc/md0.conf
ARRAY /dev/md0 metadata=1.2 name=python3:0 UUID=b7f672e0:a4ff565b:85490849:95d00e0c
5、获取raid的UUID
$ blkid /dev/md0
/dev/md0: UUID="255b76ad-cfa7-44ae-be98-956988ccb8b1" TYPE="ext4"
6、将RAID挂载
创建挂在目录mkdir /raid0
- 临时挂载
mount /dev/md0 /raid0/
- 永久挂载
编辑/etc/fstab
文件,在其中加入
UUID="255b76ad-cfa7-44ae-be98-956988ccb8b1" /raid0 ext4 defaults 0 0
- 查看挂载
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 9.1M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 100G 6.2G 94G 7% /
/dev/sda1 497M 179M 319M 36% /boot
tmpfs 393M 0 393M 0% /run/user/0
/dev/md0 40G 49M 38G 1% /raid0
7、删除raid
- 如果挂载了需要先卸载
umount /dev/md0
- 停止raid设备,
mdadm -S /dev/md0
- 如果忘记了raid中的硬盘名称,
- 要么重启系统,
- 要么运行:
mdadm -A -s /dev/md0
- 然后使用
mdadm -D /dev/md0
查看具体的有那几块盘,然后再去停止raid设备mdadm -S /dev/md0
- 删除raid里面的所有硬盘:
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc
or
mdadm --misc --zero-superblock /dev/sd{b,c}
- 这里有几块盘就按格式删除几次,注意后面硬盘名字的变化
- 删除配置文件:
rm -f /etc/mdadm.conf
- 如果之前将raid相关信息写入了
/etc/fstab
配置文件中,还需要从中删除相关信息
四、创建RAID1
1、创建raid1
- 创建一个三块盘的raid1,其中一块盘备用
- 以防在其中一块盘出现问题的时候无法替换
$ mdadm -C /dev/md1 -a yes -l1 -n2 -x1 /dev/sd{b,c,d}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
- 这里提示的是raid1不能作为boot启动分区使用
2、查看raid1
$ mdadm -D /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Fri Mar 8 15:24:40 2024
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Fri Mar 8 15:25:59 2024
State : clean, resyncing
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Resync Status : 75% complete
Name : python3:1 (local to host python3)
UUID : e8da6ffb:aa0ddeee:d3c34e82:12b7543d
Events : 12
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 - spare /dev/sdd
3、格式化
mkfs.ext4 /dev/md1
- 注意:在格式化时,可以指定-E选项下的stride参数指定条带是块大小的多少倍,有在一定程度上提高软RAID性能,如块默认大小为4k,而条带大小默认为64k,则stride为16,这样就避免了RAID每次存取数据时都去计算条带大小,如:
mkfs.ext4 -E stride=16 -b 4096 /dev/md0
- 其中stride=chunk/block,为2的n次方
4、生成配置文件
mdadm -D -s /dev/md1 > /etc/md1.conf
$ cat /etc/md1.conf
ARRAY /dev/md1 metadata=1.2 spares=1 name=python3:1 UUID=e8da6ffb:aa0ddeee:d3c34e82:12b7543d
5、获取raid的UUID
$ blkid /dev/md0
/dev/md1: UUID="255b76ad-cfa7-44ae-be98-956988ccb8b1" TYPE="ext4"
6、将RAID挂载
创建挂在目录mkdir /raid1
- 临时挂载
mount /dev/md1 /raid1/
- 永久挂载
编辑/etc/fstab
文件,在其中加入
UUID="255b76ad-cfa7-44ae-be98-956988ccb8b1" /raid1 ext4 defaults 0 0
- 查看挂载
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 9.1M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 100G 6.2G 94G 7% /
/dev/sda1 497M 179M 319M 36% /boot
tmpfs 393M 0 393M 0% /run/user/0
/dev/md1 20G 45M 19G 1% /raid1
- 从这里可以看出,三个20G的硬盘做了raid1,实际可用大小只是一个20G
7、删除raid
- 如果挂载了需要先卸载
umount /dev/md1
- 停止raid设备,
mdadm -S /dev/md1
- 如果忘记了raid中的硬盘名称,
- 要么重启系统,
- 要么运行:
mdadm -A -s /dev/md1
- 然后使用
mdadm -D /dev/md1
查看具体的有那几块盘,然后再去停止raid设备mdadm -S /dev/md1
- 删除raid里面的所有硬盘:
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc
mdadm --misc --zero-superblock /dev/sdd
or
mdadm --misc --zero-superblock /dev/sd{b,c,d}
- 这里有几块盘就按格式删除几次,注意后面硬盘名字的变化
- 删除配置文件:
rm -f /etc/md1.conf
- 如果之前将raid相关信息写入了
/etc/fstab
配置文件中,还需要从中删除相关信息
五、创建RAID5
- 用5块盘建一个raid5,其中一块盘作为热备份盘
- 以防在其中一块盘出现问题的时候无法替换
- 做raid5,最少使用三块盘即可
- raid5的实际硬盘使用率为:硬盘数N-1,
1、创建raid5
$ mdadm -C /dev/md5 -a yes -l5 -n4 -x1 /dev/sd{b,c,d,e,f}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
2、查看raid5
$ mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Mar 8 15:37:25 2024
Raid Level : raid5
Array Size : 62862336 (59.95 GiB 64.37 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Fri Mar 8 15:37:33 2024
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 5
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 11% complete
Name : python3:5 (local to host python3)
UUID : 9a7a955f:5bd34657:043737e9:b05e7cd2
Events : 2
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 spare rebuilding /dev/sde
4 8 80 - spare /dev/sdf
3、格式化
mkfs.ext4 /dev/md5
- 注意:在格式化时,可以指定-E选项下的stride参数指定条带是块大小的多少倍,有在一定程度上提高软RAID性能,如块默认大小为4k,而条带大小默认为64k,则stride为16,这样就避免了RAID每次存取数据时都去计算条带大小,如:
mkfs.ext4 -E stride=16 -b 4096 /dev/md0
- 其中stride=chunk/block,为2的n次方
4、生成配置文件
$ mdadm -D -s /dev/md5 > /etc/md5.conf
$ cat /etc/md5.conf
ARRAY /dev/md5 metadata=1.2 spares=2 name=python3:5 UUID=e6827c05:17eec3e1:51a5dded:8ef08bea
5、获取raid的UUID
$ blkid /dev/md5
/dev/md5: UUID="192e2d39-1858-4e79-8d10-8a5531285896" TYPE="ext4"
6、将RAID5挂载
创建挂在目录mkdir /raid5
- 临时挂载
mount /dev/md5 /raid5/
- 永久挂载
编辑/etc/fstab
文件,在其中加入
UUID="74d656a2-d9b1-4b92-838d-4858c75e2bc5" /raid5 ext4 defaults 0 0
- 查看挂载
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 9.1M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 100G 6.2G 94G 7% /
/dev/sda1 497M 179M 319M 36% /boot
tmpfs 393M 0 393M 0% /run/user/0
/dev/md5 59G 53M 56G 1% /raid5
7、删除raid
- 如果挂载了需要先卸载
umount /dev/md5
- 停止raid设备,
mdadm -S /dev/md5
- 如果忘记了raid中的硬盘名称,
- 要么重启系统,
- 要么运行:
mdadm -A -s /dev/md5
- 然后使用
mdadm -D /dev/md5
查看具体的有那几块盘,然后再去停止raid设备mdadm -S /dev/md5
- 删除raid里面的所有硬盘:
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc
mdadm --misc --zero-superblock /dev/sdd
mdadm --misc --zero-superblock /dev/sde
mdadm --misc --zero-superblock /dev/sdf
or
mdadm --misc --zero-superblock /dev/sd{b,c,d,e,f}
- 这里有几块盘就按格式删除几次,注意后面硬盘名字的变化
- 删除配置文件:
rm -f /etc/mdadm.conf
- 如果之前将raid相关信息写入了
/etc/fstab
配置文件中,还需要从中删除相关信息
六、raid5的故障测试
1、指定adc盘坏掉
指定sdc这个盘坏掉
$ mdadm /dev/md5 -f /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md5
查看raid5的状态,可以看到备份盘sdf已经顶替了sdc这个盘,成了行的raid5
$ mdadm -D /dev/md5
/dev/md5:
.
..
...
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
4 8 80 1 spare rebuilding /dev/sdf
2 8 48 2 active sync /dev/sdd
5 8 64 3 active sync /dev/sde
1 8 32 - faulty /dev/sdc
2、恢复sdc盘
- 由下面可以看出,sdc盘已经由faulty变成了spare,故障变成了备用了
$ mdadm -a /dev/md5 /dev/sdc
mdadm: added /dev/sdc
(base) root@python3[15:59:03]:~
$ mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Mar 8 15:47:44 2024
Raid Level : raid5
Array Size : 62862336 (59.95 GiB 64.37 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Fri Mar 8 15:59:03 2024
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : python3:5 (local to host python3)
UUID : e6827c05:17eec3e1:51a5dded:8ef08bea
Events : 304
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
4 8 80 1 active sync /dev/sdf
2 8 48 2 active sync /dev/sdd
5 8 64 3 active sync /dev/sde
6 8 32 - spare /dev/sdc
3、坏掉sdd盘
$ mdadm -f /dev/md5 /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md5
查看结果
- sdd的状态已经变为了faulty故障了,sdc自动替换了上去
$ mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Mar 8 15:47:44 2024
Raid Level : raid5
Array Size : 62862336 (59.95 GiB 64.37 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Fri Mar 8 15:59:33 2024
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 1% complete
Name : python3:5 (local to host python3)
UUID : e6827c05:17eec3e1:51a5dded:8ef08bea
Events : 306
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
4 8 80 1 active sync /dev/sdf
6 8 32 2 spare rebuilding /dev/sdc
5 8 64 3 active sync /dev/sde
2 8 48 - faulty /dev/sdd