RAID 1的主要优点是RAID中的一个磁盘出现故障,另一个磁盘将继续工作。更换故障磁盘时,新磁盘将自动同步数据。RAID 1可以添加热备盘,其中一个磁盘出现故障,自动替换。

RAID1 至少需要2块硬盘:

硬盘

分区

分区格式

大小

sdb

sdb1

fd

5G

sdc

sdc1

fd

5G

sdd

sdd1

fd

5G

一、创建 RAID1 

1、安装

yum -y install mdadm

2、创建 RAID1

mdadm -C /dev/md1 -l1 -n2 /dev/sdb1 /dev/sdc1

# 显示
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 # 输入Y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

注解: 

选项

全称

功能

C

--create

创建阵列

-l 

--level

阵列模式

-n

--reid-devices

阵列中活动磁盘的数目

-x

-spare-devices=N

表示当前阵列中热备盘有 N 块(自定义 N 数量即可)

3、配置信息

# 配置磁盘设备文件名
echo "DEVICE /dev/sdb1 /dev/sdc1" >> /etc/mdadm.conf

# 配置软RAID信息
mdadm -Ds /dev/md1 >> /etc/mdadm.conf

4、查看阵列状态

cat /proc/mdstat

# 显示
Personalities : [raid1]
md1 : active raid1 sdc1[1] sdb1[0]
5236736 blocks super 1.2 [2/2] [UU]

unused devices: <none>

5、查看阵列详细

mdadm -D /dev/md1

# 显示
/dev/md1:
Version : 1.2
Creation Time : Sun Feb 19 13:51:13 2023
Raid Level : raid1
Array Size : 5236736 (4.99 GiB 5.36 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Sun Feb 19 13:51:22 2023
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Consistency Policy : resync

Name : kvm110:1 (local to host kvm110)
UUID : ecc4e35d:ca9dd488:343af2c6:dc664d5f
Events : 17

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1

注解: 

名称

功能

Raid Level

阵列级别

Array Size

阵列容量大小

Raid Devices

RAID 成员的个数

Total Devices

RAID 中下属成员的总计个数,因为还有冗余硬盘或分区,也就是 spare

State

包含三个状态(clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建)

Active Devices

被激活的 RAID 成员个数

Working Devices

正常工作的 RAID 成员个数

Failed Devices

出问题的 RAID 成员

Spare Devices

备用 RAID 成员个数(会自动替换出现问题的成员)

UUID

RAID 的 UUID 值,在系统中是唯一的

 6、挂载系统

# 格式化
mkfs.xfs /dev/md1

# 创建挂载点
mkdir /raid1

# 挂载
mount /dev/md1 /raid1/

# 开机永久挂载
echo "/dev/md1 /raid1 xfs defaults 0 0" >> /etc/fstab

7、查看系统,成功挂载,raid1大小为5G

[root@kvm110 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 1.6G 16G 9% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 12M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 146M 869M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/md1 xfs 5.0G 93M 4.9G 2% /raid1

8、查看分区

[root@kvm110 ~]# 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 5G 0 disk
└─sdb1 8:17 0 5G 0 part
└─md1 9:1 0 5G 0 raid1 /raid1
sdc 8:32 0 5G 0 disk
└─sdc1 8:33 0 5G 0 part
└─md1 9:1 0 5G 0 raid1 /raid1
sdd 8:48 0 5G 0 disk
└─sdd1 8:49 0 5G 0 part
sde 8:64 0 5G 0 disk
└─sde1 8:65 0 5G 0 part

9、我们往 raid1 写入一点数据

dd if=/dev/zero of=/raid1/test.img bs=1M count=60

10、重启系统

shutdown -r now

 二、模拟硬盘坏了

场景1:阵列中没有热备盘

1、我们假设 sdb 硬盘坏了

mdadm /dev/md1 -f /dev/sdb1

# 显示
mdadm: set /dev/sdb1 faulty in /dev/md1

2、查看阵列

mdadm -D /dev/md1

# 显示
/dev/md1:
Version : 1.2
Creation Time : Sun Feb 19 13:51:13 2023
Raid Level : raid1
Array Size : 5236736 (4.99 GiB 5.36 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Sun Feb 19 14:03:58 2023
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0

Consistency Policy : resync

Name : kvm110:1 (local to host kvm110)
UUID : ecc4e35d:ca9dd488:343af2c6:dc664d5f
Events : 21

Number Major Minor RaidDevice State
- 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

0 8 17 - faulty /dev/sdb1 # 显示sdb1坏了

3、添加一块新的硬盘 sdd

mdadm /dev/md1 -a /dev/sdd1

# 显示
mdadm: added /dev/sdd1

# 再次查看阵列
mdadm -D /dev/md1

# 显示
/dev/md1:

......

Number Major Minor RaidDevice State
2 8 49 0 active sync /dev/sdd1 # sdd 加入成功
1 8 33 1 active sync /dev/sdc1

0 8 17 - faulty /dev/sdb1

4、手动移除坏的硬盘,这里如果重启系统,也会把坏的硬盘自动移除的

mdadm /dev/md1 -r /dev/sdb1

# 显示
mdadm: hot removed /dev/sdb1 from /dev/md1


# 再次查看阵列
mdadm -D /dev/md1

# 显示
/dev/md1:

......

Number Major Minor RaidDevice State
2 8 49 0 active sync /dev/sdd1
1 8 33 1 active sync /dev/sdc1

场景2:阵列中存在热备盘

1、我们再次把 sdb 加入阵列中来

mdadm /dev/md1 -a /dev/sdb1

# 查看阵列
mdadm -D /dev/md1

# 显示
/dev/md1:

......

Number Major Minor RaidDevice State
2 8 49 0 active sync /dev/sdd1
1 8 33 1 active sync /dev/sdc1

3 8 17 - spare /dev/sdb1 # 状态变成了备用

2、当存在热备硬盘的情况下:假设这次 sdd 坏了

# 模拟 sdd 硬盘坏了
mdadm /dev/md1 -f /dev/sdd1

# 查看,发现 sdb 的状态马上变成 spare rebuilding
mdadm -D /dev/md1

# 显示
/dev/md1:

......

Number Major Minor RaidDevice State
3 8 17 0 spare rebuilding /dev/sdb1
1 8 33 1 active sync /dev/sdc1

2 8 49 - faulty /dev/sdd1

3、等一会再次查看,sdb变成活动盘, 热备盘会自动替换坏掉的 sdd

mdadm -D /dev/md1

# 显示
/dev/md1:

......

Number Major Minor RaidDevice State
3 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1

2 8 49 - faulty /dev/sdd1

三、如何删除 RAID1 

1、取消挂载

umount /raid1

2、停止阵列

mdadm --stop /dev/md1


# 如何启用一个阵列
mdadm --assemble /dev/md1

3、清除阵列超级块信息

mdadm --zero-superblock /dev/sd[b-c]1

4、删除永久挂载信息,不然系统就起不来了

# 注释掉
# /dev/md1 /raid1 xfs defaults 0 0"