软raid中是通过软件层面来模拟实现raid的相关功能,从而达到与硬件raid相同的功能。在Linux中通常是使用md模块来实现软件raid。
一、安装mdadm
yum -y install mdadm
二、显示硬盘和分区信息
在VM虚拟机中完成测试,sda为系统盘,sdb、sdc、sdd、sde为四个制作raid的硬盘。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
三、格式化硬盘
2TB以内硬盘
fdisk /dev/sdb
n 回车 回车 回车(或输入分区大小,建议预留100M空间) t l fd w
- n:创建分区,回车选择默认分区和大小使用全部硬盘
- t:修改分区类型,回车选择默认分区
- l:列出所有分区类型
- fd:指raid分区,不同版本前的数字不一样,从l显示的列表中找到Linux raid auto类型就行了。
完整操作实例
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xef090fa6 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):l
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xef090fa6
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
2TB以上
parted /dev/sdb
mklabel gpt mkpart 回车 ext4 0GB 4000GB p q
- mklabel:创建一个新的磁盘标签
- gpt: gpt分区
- mkpart: 创建分区
- ext4: 硬盘数据格式
- 0GB: 开始位置
- 4000GB: 结束位置
- p: 显示信息
- q: 保存退出
[root@zngw ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel
New disk label type? gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? y
(parted) mkpart
Partition name? []?
File system type? [ext2]? ext4
Start? 0GB
End? 4000GB
(parted) p
Model: External USB3.0 DISK04 (scsi)
Disk /dev/sdb: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4000GB 4000GB
(parted) q
Information: You may need to update /etc/fstab.
四、创建raid
mdadm --create /dev/md5 --auto yes --level 5 -n4 /dev/sd{b,c,d,e}
- -C/–create:新建阵列
- -a/–auto:允许mdadm创建设备文件,一般常用参数-a yes一次性创建
- -l/–levle:RAID模式,支持RAID0/1/4/5/6/10等
- -n/–raid-devices=:创建阵列中活动磁盘的数量
- /dev/md0:阵列的设备名称
- /dev/sd{b,c,d,e}1:创建阵列中的物理磁盘分区信息
五、查看阵列状态
cat /proc/mdstat
Personalities : [raid1] [raid10] [raid6] [raid5] [raid4]
md5 : active raid5 sde[4] sdd[2] sdc[1] sdb[0]
62862336 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
[=====>...............] recovery = 25.7% (5400192/20954112) finish=1.2min speed=200007K/sec
unused devices: <none>
六、创建md5配置文件
[root@localhost ~]# echo DEVICE /dev/sd{b,c,d,e} >> /etc/mdadm.conf
[root@localhost ~]# mdadm -Evs >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
ARRAY /dev/md/0 level=raid1 metadata=1.2 num-devices=4 UUID=afe6977f:2d213295:513422e5:70099cb9 name=localhost.localdomain:0
devices=/dev/sdb1,/dev/sdc1,/dev/sdd1
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
ARRAY /dev/md/5 level=raid5 metadata=1.2 num-devices=4 UUID=ba5caeb6:401904f5:674ddc67:c4f95242 name=localhost.localdomain:5
devices=/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
七、格式化RAID分区
mkfs -t ext4 /dev/md5
八、挂载
mkdir /data
mount /dev/md5 /data
开机自动挂载
vim /etc/fstab
/dev/md5 /data ext4 defaults 0 0
九、测试
# 模拟/dev/sdc故障
mdadm /dev/md5 -f /dev/sdc
# 显示信息
mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Jan 24 19:04:38 2022
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 : 4
Persistence : Superblock is persistent
Update Time : Mon Jan 24 19:17:38 2022
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : ba5caeb6:401904f5:674ddc67:c4f95242
Events : 20
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
- 0 0 1 removed
2 8 48 2 active sync /dev/sdd
4 8 64 3 active sync /dev/sde
1 8 32 - faulty /dev/sdc
更换硬盘,格式化硬盘,恢复数据
# 移除损坏硬盘
mdadm /dev/md5 --remove /dev/sdc
# 添加新硬盘
mdadm /dev/md5 --add /dev/sdc
# 查看状态等待恢复完成
mdadm -D /dev/md5
十、添加新硬盘
添加一块硬盘/dev/sdf
,格式化
# 添加硬盘
mdadm /dev/md5 -a /dev/sdf
# 扩容硬盘
mdadm -G /dev/md5 -n5
# 查看状态等待扩容完成
mdadm -D /dev/md5
# 将/dev/md5分区扩容
resize2fs /dev/md5
注:数据无价,扩容时最好做好备份。
十一、重装系统后恢复
先安装mdadm软件,再使用下面命令自动检测并安装所有的 md 硬盘
mdadm --assemble --scan
可以查看结果存在5块硬盘并恢复成功
mdadm: /dev/md/5 has been started with 5 drives.
十二、删除软RAID
# 卸载挂载点
umount /dev/md5
# 停止软件RAID设备
mdadm -S /dev/md5
# 删除RAID中的磁盘
mdadm --misc --zero-superblock /dev/sd{b,c,d,e}
# 删除mdadm配置文件
rm -f /etc/mdadm.conf
# 删除/etc/fstab中的挂载信息