目录
前言
运行环境:VMware16pro + centos8.3
特别申明:space 为一个空格。
一、RAID
1.RAID概述
- 把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列
- 把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上
- 利用分散读写技术来提升磁盘阵列整体的性能
- 同时把多个重要数据的副本同步到不同的物理硬盘设备上
- 非常好的数据冗余备份效果
2.常见的RAID方案
方案 | 原理 | 优缺点 | 图示 |
---|---|---|---|
RAID 0 | 1、物理硬盘设备串联组成卷组 2、数据依次写入各个物理硬盘 |
1、提升硬盘数据的传输速度 2、任一硬盘故障都会损坏整个系统的数据 3、不具备数据备份和错误修复能力 |
|
RAID 1 | 1、两块以上硬盘设备进行绑定 2、数据同时写入多块硬盘设备 3、硬盘故障,自动以热交换的方式来恢复数据的使用 |
1、数据安全性提高 2、硬盘利用率下降 3、系统计算功能负载增加 |
|
RAID 5 | 1、没有备份硬盘中的真实数据信息 2、把阵列组数据的奇偶校验信息存储到除自身以外的其他每一块硬盘设备 3、硬盘故障,通过奇偶校验信息来尝试重建损坏的数据 (parity 部分存放的就是数据的奇偶校验信息) |
兼顾了硬盘设备的读写速度、数据安全性与存储成本问题 | |
RAID 10 | 1、RAID1+RAID0技术的一个“组合体” 2、至少需要4 块硬盘来组建 3、先分别两两制作成RAID 1 磁盘阵列,保证数据安全性;然后对两个RAID1磁盘阵列实施RAID0技术,提高读写速度 |
1、只要坏的不是同一组中的所有硬盘,那么不丢失数据 2、继承了RAID 0 的高读写速度和RAID1 的数据安全性 3、不考虑成本时,RAID 10 的性能都超过了RAID 5 4、当前广泛使用 |
二、部署磁盘阵列
1、相关命令:mdadm
用途:管理Linux系统中软件RAID磁盘阵列
格式:mdadmspace[参数]
模式参数 | 说明 |
---|---|
create | 创建一个新的RAID,每个设备都具有元数据(超级块) |
build | 创建或组合一个没有元数据(超级块)的RAID |
assemble | 组装以前创建的RAID的组件集成到一个活动RAID |
manage | 更改一个现有的RAID,比如添加新的备用成员和删除故障设备 |
misc | 报告或修改各种RAID相关设备,比如查询RAID或者设备的状态信息、删除旧的超级块 |
grow | 调整/重新塑造一个活动RAID,比如改变RAID容量或阵列中的设备数目。 |
monitor | 监控一个或多个RAID的更改 |
incremental | 添加设备到RAID中,或从RAID中删除设备。 |
参数 | 说明 |
---|---|
-a | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止RAID |
2、部署RAID10磁盘阵列
⑴使用 mdadm 命令创建RAID 10,名称为“/dev/md0”
mdadm | -Cv | /dev/md0 | -a yes | -n 4 | -l 10 | /dev/sdb /dev/sdc /dev/sdd /dev/sde |
---|---|---|---|---|---|---|
命令 | -C 参数创建RAID阵列卡 -v参数显示创建过程 |
RAID 磁盘 阵列名称 |
-a yes 参数自动创建设备文件 | -n 4 参数使用4 块硬盘部署 | -l 10 参数使用RAID10方案 | 4 块硬盘设备的名称 |
[root@CentOS64 ~]# mdadm -Cv /dev/md0 -a yes -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.
⑵把制作好的 RAID 磁盘阵列格式化为ext4 格式
[root@CentOS64 ~]# mkfs.ext4 /dev/md0
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 3ce6e94d-ddde-4b38-87fd-94d680689386
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: 0/32done
⑶创建挂载点然后把硬盘设备进行挂载操作
- ❶创建挂载点
[root@CentOS64 ~]# mkdir /RAID
- ❷把硬盘设备进行挂载
[root@CentOS64 ~]# mount /dev/md0 /RAID
- ❸查看是否挂载成功
[root@CentOS64 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 10M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/cl_centos64-root 20G 4.3G 16G 22% /
/dev/mapper/cl_centos64-user 2.0G 47M 2.0G 3% /user
/dev/sda1 395M 225M 171M 57% /boot
/dev/mapper/cl_centos64-home 2.0G 926M 1.1G 46% /home
/dev/mapper/cl_centos64-var 2.0G 565M 1.5G 28% /var
tmpfs 371M 1.2M 370M 1% /run/user/42
tmpfs 371M 4.6M 367M 2% /run/user/1000
/dev/sr0 683M 683M 0 100% /run/media/centos/CentOS-8-3-2011-x86_64-dvd
/dev/md0
⑷查看/dev/md0 磁盘阵列的详细信息
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Mar 3 18:43:00 2021
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 Mar 3 18:46:29 2021
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : CentOS64:0 (local to host CentOS64)
UUID : 46a97ec4:c89087eb:8c74e7c8:c28d1043
Events : 25
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
⑸挂载信息写入配置文件,使其永久生效
[root@CentOS64 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Feb 18 08:25:14 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.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl_centos64-root / xfs defaults 0 0
UUID=ec3468bb-5c24-48c1-9439-a8f79836cee1 /boot xfs defaults 0 0
/dev/mapper/cl_centos64-home /home xfs defaults 0 0
/dev/mapper/cl_centos64-user /user xfs defaults 0 0
/dev/mapper/cl_centos64-var /var xfs defaults 0 0
/dev/mapper/cl_centos64-swap none swap defaults 0 0
/dev/md0 /RAID ext4 defaults 0 0
三、损坏磁盘阵列的修复
⑴模拟硬盘损坏:移除/dev/sdb
[root@CentOS64 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
⑵查看RAID 磁盘阵列的状态
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Mar 3 18:43:00 2021
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 Mar 3 18:57:16 2021
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 : CentOS64:0 (local to host CentOS64)
UUID : 46a97ec4:c89087eb:8c74e7c8:c28d1043
Events : 27
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
⑶安装新的硬盘
⑷用mdadm 命令把新的硬盘添加到RAID 磁盘阵列
- ❶于挂载点,移除文件系统
[centos@CentOS64 ~]$ su - root
Password:
[root@CentOS64 ~]# umount /RAID
- ❷替换损坏硬盘
[root@CentOS64 ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
- ❸查看RAID 磁盘阵列的状态
第一次查看:显示“spare rebuilding”,即“正在重建”;
第二次查看:RAID 磁盘阵列的状态完好。
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
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
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
Number Major Minor RaidDevice State
4 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
[root@CentOS64 ~]#
⑸挂载
前面在创建RAID10时将挂载信息写入配置文件“/etc/fstab”。此处用“mount -a”自动挂载“ /etc/fstab”即可 。
[root@CentOS64 ~]# mount -a
[root@CentOS64 ~]#
四、部署RAID5磁盘阵列及备份盘
⑴创建一个RAID 5 磁盘阵列+备份盘
[root@CentOS64 ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
⑵ 将部署好的RAID 5 磁盘阵列格式化为ext4 文件格式
[root@CentOS64 ~]# mkfs.ext4 /dev/md0
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 2346f63c-8103-4943-bbb1-dd478291e285
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
⑶挂载
[root@CentOS64 ~]# echo " /dev/md0 /RAID ext4 defaults 0 0 " >> /etc/fstab
[root@CentOS64 ~]# mkdir /RAID
[root@CentOS64 ~]# mount -a
⑷移除测试
[root@CentOS64 ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@CentOS64 ~]# mdadm -D /dev/md0
/dev/md0:
略
Number Major Minor RaidDevice State
3 8 64 0 spare rebuilding /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
参考
1、https://www.linuxprobe.com
2、https://www.linuxcool.com