1.硬 RAID 与软 RAID区分 磁盘阵列冗余技术 它是由很多独立的磁盘组成一个容量巨大的磁盘组,然后利用个别磁盘提供数据所产生的一个加速效果,提升整个磁盘系统性能,利用这项技术,能够将数据切割为许多个区段,分别存储在各个硬盘上,磁盘阵列还能利用检查的概念,Part Check 然后在数组中检查任意一个硬盘故障的时候,我仍然可以读取数据,在数据重构的时候,再将数据通过计算之后,加入到新的硬盘中,这就是磁盘阵列冗余技术 软 RAID。 软 RAID 通过软件的形式去安装,去使用,软件是其他程序员写好的,我们可以直接使用,叫软 RAID。 硬 RAID 硬 RAID 而是提供 RAID 卡,它是一块实实在在存在的硬件,能够实现与软 RAID 一样的效果,硬 RAID 效果比软 RAID 效果佳,硬 RAID 是一种把多块独立的物理硬盘按不同方式组合起来形成一个逻辑硬盘,从而提供比单个硬盘有着更高的性能和提供数据冗余的技术,叫做 硬 RAID。 RAID常见组合
RAID 0
RAID 1
RAID 5
RAID 10 软 RAID 的区分 互联网公司一般都会购买 RAID 卡(硬 RAID) -数据冗余性能(也就是数据安全性能)从好到坏的排序:RAID 1 RAID 10 RAID 5 RAID 0
数据读写性能从好到坏:RAID 0 RAID 10 RAID 5 RAID 1 -成本从高到低:RAID 0 RAID 10 RAID 1 RAID 5
硬 RAID 与软 RAID 的区别 -软件 RAID 会额外的消耗 CPU 资源,造成服务器压力。 -硬 RAID 更加稳定,并且 软件 RAID 可能会造成磁盘发热过量,造成损坏。公司一般都使用 硬件 RAID -硬 RAID 兼容性更好,软 RAID 兼容性依赖于操作系统,可能会出问题。 -硬 RAID 完胜。
2.配置软Raid(注意应先做软Raid再做LVM) 今天我们来配置软Raid:
2.1准备 添加一个20G的虚拟硬盘,分成10个2G的分区(使用fdisk,上期文章有讲)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [root@192 ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.39.1)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 设备不包含可识别的分区表。 Created a new DOS (MBR) disklabel with disk identifier 0x8cbd7811. 命令(输入 m 获取帮助):n 分区类型 p 主分区 (0个主分区,0个扩展分区,4空闲) e 扩展分区 (逻辑分区容器) 选择 (默认 p):p 分区号 (1-4, 默认 1): 第一个扇区 (2048-41943039, 默认 2048): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +10G 创建了一个新分区 1,类型为“Linux”,大小为 10 GiB。 命令(输入 m 获取帮助):n 分区类型 p 主分区 (1个主分区,0个扩展分区,3空闲) e 扩展分区 (逻辑分区容器) 选择 (默认 p):p 分区号 (2-4, 默认 2): 第一个扇区 (20973568-41943039, 默认 20973568): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (20973568-41943039, 默认 41943039): 创建了一个新分区 2,类型为“Linux”,大小为 10 GiB。 命令(输入 m 获取帮助):w 分区表已调整。 将调用 ioctl() 来重新读分区表。 正在同步磁盘。
首先看一下是否安装了mdadm工具,如果没有就安装
1 2 3 4 5 6 [root@192 ~]# which mdadm /usr/sbin/mdadm [root@192 ~]# rpm -qf /usr/sbin/mdadm mdadm-4.1-rc2.0.17.uel20.x86_64 [root@192 ~]# dnf install -y mdadm
2.2创建raid0 2.2.1创建 1 2 3 4 5 6 -C:创建软raid -l:指定raid级别 -n:指定raid中设备个数 [root@192 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
2.2.2查看RAID信息: 1 2 3 4 5 6 [root@192 ~]# cat /proc/mdstat Personalities : [raid0] md0 : active raid0 sdb2[1] sdb1[0] 20952064 blocks super 1.2 512k chunks unused devices: <none>
2.2.3查看指定的RAID信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [root@192 ~]# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Apr 4 16:45:39 2025 Raid Level : raid0 Array Size : 20952064 (19.98 GiB 21.45 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Fri Apr 4 16:45:39 2025 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : original Chunk Size : 512K Consistency Policy : none Name : 192.168.135.174:0 (local to host 192.168.135.174) UUID : 1a44ef6c:1e8a114a:5df87f1b:1b4a1845 Events : 0 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 18 1 active sync /dev/sdb2
2.2.4格式化挂载使用并查看空间使用情况: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [root@192 ~]# mkfs.ext4 /dev/md0 mke2fs 1.47.0 (5-Feb-2023) 创建含有 5238016 个块(每块 4k)和 1310720 个 inode 的文件系统 文件系统 UUID:d6fa2ff5-b54c-4300-9fc2-eeceaa32ef9a 超级块的备份存储于下列块: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 正在分配组表:完成 正在写入 inode表:完成 创建日志(32768 个块):完成 写入超级块和文件系统账户统计信息:已完成 [root@192 ~]# mkdir /md0 (创建挂载目录) [root@192 ~]# mount /dev/md0 /md0/ [root@192 ~]# df -h 文件系统 大小 已用 可用 已用% 挂载点 /dev/sda4 26G 2.7G 23G 11% / devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 1.7G 0 1.7G 0% /dev/shm tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 682M 8.8M 673M 2% /run /dev/sda4 26G 2.7G 23G 11% /home tmpfs 1.7G 0 1.7G 0% /tmp /dev/sda2 974M 207M 700M 23% /boot /dev/md0 20G 24K 19G 1% /md0
停止raid并擦除超级块(superblock)清楚相关信息
1 2 3 4 5 6 7 8 9 1.卸载设备 2.移除所有磁盘 3.停止raid: 4.擦除超级块(superblock)清楚相关信息
2.3创建raid1 2.3.1创建raid1: 1 [root@192 ~]# mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb1 /dev/sdb2
2.3.2查看状态信息: 1 2 3 4 5 6 7 8 9 10 [root@192 ~]# watch -n1 "cat /proc/mdstat" [root@node01 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdb2[1] sdb1[0] 10475520 blocks super 1.2 [2/2] [UU] unused devices: <none>
2.3.3查看raid1详细信息 1 [root@192 ~]# mdadm -D /dev/md1
2.3.4格式化挂载使用: 1 2 3 [root@192 ~]# mkfs.ext4 /dev/md1 [root@192 ~]# mkdir /md1 [root@192 ~]# mount /dev/md1 /md1
2.3.5查看空间使用情况: 1 2 3 4 [root@192 ~]# df -h 文件系统 大小 已用 可用 已用% 挂载点 /dev/md1 9.8G 24K 9.3G 1% /md1
2.3.6测试验证热插拔: 1.模拟一块盘故障(将磁盘标记为失效) 1 2 3 [root@192 ~]# mdadm /dev/md1 -f /dev/sdb2 mdadm: set /dev/sdb2 faulty in /dev/md1
2.查看raid1状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@192 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] md1 : active raid1 sdb2[1](F) sdb1[0] (F表示失效失败) 10475520 blocks super 1.2 [2/1] [U_] unused devices: <none> [root@192 dev]# mdadm -D /dev/md1 ... Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 - 0 0 1 removed 1 8 18 - faulty /dev/sdb2
3.移除故障或者失效硬盘(热拔) 1 2 3 4 5 6 7 8 9 10 [root@192 ~]# mdadm /dev/md1 -r /dev/sdb1 mdadm: hot removed /dev/sdb1 from /dev/md1 [root@192 ~]# mdadm -D /dev/md1 ... Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 - 0 0 1 removed
4.加入新的磁盘到raid1中(热插) 1 2 [root@192 ~]# mdadm /dev/md1 -a /dev/sdb5 mdadm: added /dev/sdd5
5.加入新的磁盘到raid1中(热插) 1 2 3 4 5 6 [root@192 ~]# mdadm /dev/md1 -a /dev/sdb3 mdadm: added /dev/sdb3 [root@192 ~]# cat /proc/mdstat
2.4创建raid5 2.4.1创建raid5: 1 2 3 4 5 6 7 8 [root@192 ~]# mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sdb{1,2,3,4} [root@192 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdb3[4] sdb4[3](S) sdb2[1] sdb1[0] 10473472 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
说明:热备盘表示当其中一块盘故障后,热备盘会立马顶上去,而不需要人为手动干预。
1 2 3 4 5 6 [root@192 ~]# mdadm -D /dev/md5 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3 3 8 20 - spare /dev/sdb4
2.4.2格式化挂载使用: 1 2 3 [root@192 ~]# mkfs.ext4 /dev/md5 [root@192 ~]# mkdir /md5 [root@192 ~]# mount /dev/md5 /md5/
2.4.3查看空间使用情况: 1 2 3 4 [root@192 ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/md5 9.8G 24K 9.3G 1% /md5
2.4.4测试热备磁盘作用: 1.标记一块活动盘失效 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [root@192 ~]# mdadm /dev/md5 -f /dev/sdb1 mdadm: set /dev/sdb1 faulty in /dev/md5 [root@192 ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdb3[4] sdb4[3] sdb2[1] sdb1[0](F) 10473472 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none> [root@192 ~]# mdadm -D /dev/md5 Number Major Minor RaidDevice State 3 8 20 0 active sync /dev/sdb4 1 8 18 1 active sync /dev/sdb2 4 8 19 2 active sync /dev/sdb3 0 8 17 - faulty /dev/sdb1
2.移除失效的盘 1 2 3 4 [root@192 ~]# mdadm /dev/md5 -r /dev/sdb1 mdadm: hot removed /dev/sdb1 from /dev/md5 [root@192 ~]# mdadm /dev/md5 -a /dev/sdb1 mdadm: added /dev/sdb1
3.保存RAID信息 为什么要保存raid信息? 如果不做信息的保存,在CentOS6中,重启系统后raid不能自动被识别到,7,8系统中不会出现这种状况。
3.1创建配置文件 1 2 [root@192 ~]# cat /etc/mdadm.conf ARRAY /dev/md5 metadata=1.2 spares=1 name=192.168.135.174:5 UUID=352fe575:2b243e2a:3d6f59b4:88ef686a
4.raid停止与启动 以RAID5为例说明: 停止raid:
4.1卸载raid
4.2.使用命令停止raid
4.3.启动raid 4.3.1配置文件(/etc/mdadm.conf)存在如下启动
4.3.2配置文件(/etc/mdadm.conf)不存在如下启动
4.3.3如果设备名不知道,可以去查看每个设备的raid信息,使用uuid把raid设备重新组合 1 2 3 4 5 6 7 8 9 10 [root@192 ~]# mdadm -E /dev/sdb1 | grep UUID Array UUID : 352fe575:2b243e2a:3d6f59b4:88ef686a Device UUID : fd110eee:41700eb5:242c1771:5b5ab08f [root@192 ~]# mdadm -E /dev/sdb2 | grep UUID Array UUID : 352fe575:2b243e2a:3d6f59b4:88ef686a Device UUID : 974d110f:f9cb7a58:19b41563:4781649c [root@node01 ~]# mdadm -A --uuid=352fe575:2b243e2a:3d6f59b4:88ef686a /dev/md5 mdadm: /dev/md5 has been started with 3 drives and 1 spare.
4.4raid的删除 4.4.1卸载设备
4.4.2移出所有磁盘 1 2 3 4 5 6 7 8 9 10 11 [root@192 dev]# mdadm /dev/md5 -f /dev/sdb[1234] mdadm: set /dev/sdb6 faulty in /dev/md5 mdadm: set /dev/sdb7 faulty in /dev/md5 mdadm: set /dev/sdb8 faulty in /dev/md5 mdadm: set /dev/sdb9 faulty in /dev/md5 [root@192 dev]# mdadm /dev/md5 -r /dev/sdb[1234] mdadm: hot removed /dev/sdb6 from /dev/md5 mdadm: hot removed /dev/sdb7 from /dev/md5 mdadm: hot removed /dev/sdb8 from /dev/md5 mdadm: hot removed /dev/sdb9 from /dev/md5
4.4.3停止raid 1 2 [root@node01 ~]# mdadm --stop /dev/md5 mdadm: stopped /dev/md5
4.4.4擦出超级块(superblock)清除相关信息
问题: 做之前注意看一下系统内核是否自动装配了raid
1 2 3 [root@192 dev]# mdadm --examine /dev/sdb1 /dev/sdb2 mdadm: No md superblock detected on /dev/sdb1. mdadm: No md superblock detected on /dev/sdb2.
这里可以看到没有,如果自动装填了,那我们需要去先停止自动创建的设备,并且清楚分区上RAID元数据:
1 2 3 4 5 1. 停止自动创建的 RAID 设备 mdadm --stop /dev/mdXXX 2. 清除分区上的 RAID 元数据 mdadm --zero-superblock /dev/sde1 /dev/sde2