RAID
的全称是Redundant Array of Independent Disks,即磁盘冗余阵列
简单来说,RAID是一种在Linux系统中使用多个硬盘来提高数据存储的可靠性和性能的技术。通过将多个硬盘组合在一起,形成一个更大、更可靠的硬盘,同时还可以提高数据读写的速度。
Linux支持多种RAID级别,包括RAID 0、RAID 1、RAID 5、RAID 6、RAID 10
等。每种RAID级别都有不同的数据保护和性能特性
RAID 0的工作原理?有什么优缺点?
RAID 0是将多个物理硬盘组合成一个逻辑硬盘的技术,它在吞吐量和性能方面提供了很大的优势,但是不提供数据冗余和容错能力,因此在使用RAID 0时必须非常小心,确保数据备份和恢复计划。由于RAID 0将数据分散存储在多个硬盘上,因此如果其中一个硬盘故障,整个RAID 0将无法访问,这是需要注意的一个问题
优点:读写性能非常高,因为数据可以同时从多个硬盘上读取或写入。
缺点:可靠性差,如果其中一个硬盘出现故障,所有数据都会丢失
RAID 1工作原理?有什么优缺点?
RAID 1是将多个物理硬盘组合成一个逻辑硬盘的技术,它提供了数据冗余和容错能力,但是在吞吐量和性能方面较差。RAID 1将数据镜像到多个硬盘上,如果其中一个硬盘故障,RAID 1可以继续使用,并且可以在更换故障硬盘之前进行数据恢复。由于RAID 1需要将数据镜像到其他硬盘上,因此需要至少两个硬盘来创建RAID 1。
优点:可以将数据复制到多个硬盘中,确保即使一个硬盘出现故障,数据仍然可以访问
缺点:价格贵,每个硬盘都必须存储相同的数据,因此RAID 1的存储效率比其他RAID模式低。
RAID 5是什么?有什么优缺点?
RAID 5是将多个物理硬盘组合成一个逻辑硬盘的技术,它提供了数据冗余和容错能力,并且在吞吐量和性能方面比RAID 1更好。RAID 5通过将数据和校验信息分散存储在多个硬盘上来提供冗余,在其中一个硬盘故障时,RAID 5可以继续使用,并且可以在更换故障硬盘之前进行数据恢复。由于RAID 5需要将数据和校验信息分散存储在多个硬盘上,因此需要至少三个硬盘来创建RAID 5。
优点:高数据可靠性、高存储效率、中等的读取性能
缺点:写入性能有限、重建时间长
RAID 10工作原理?有什么优缺点?
RAID 10是将多个物理硬盘组合成一个逻辑硬盘的技术,它将RAID 1和RAID 0结合起来,提供了高性能和强大的容错能力。RAID 10将数据分散存储在多个硬盘上,并通过将数据镜像到其他硬盘上来提供冗余。如果其中一个硬盘故障,RAID 10可以继续使用,并且可以在更换故障硬盘之前进行数据恢复。由于RAID 10需要将数据镜像到其他硬盘上,因此需要至少四个硬盘来创建RAID 10。
优点:提高性能,提供高可靠性,快速恢复,灵活性
缺点:成本较高,硬盘利用率较低,写入性能较低
总结
Linux的磁盘阵列提供了多种RAID级别的支持,可以根据不同的需求选择不同的RAID级别来提供高性能和高可靠性的存储解决方案
同时,Linux的“
mdadm
”命令提供了方便的创建和管理RAID的工具。
mdadm是一款Linux下的软件RAID管理工具,可以用来创建、管理和监控软件RAID
。
语法
mdadm [options] device [device...]
参数
以下是常用的mdadm命令创建RAID时使用的选项:
-C or --create: 创建一个新的RAID设备
-A or --assemble: 组装一个已经存在的RAID设备。
-S or --stop: 停止一个正在运行的RAID设备
-D or --detail: 显示RAID设备的详细信息
-E or --export: 导出RAID设备的配置信息。
-v or --verbose: 显示详细的输出信息。
-q or --quiet: 只显示必要的输出信息。
-a or --auto: 自动组装已知的RAID设备。
-f or --force: 强制执行某些操作。
-l or --level: RAID设备的级别
-n or --raid-devices: RAID设备中的磁盘数量。
-p or --parity: RAID设备的校验方式。
-R or --run: 在后台运行RAID设备。
-r or --remove: 从RAID设备中移除一个磁盘
--zero-superblock:将包含合法md信息的superblock区域置为零
fdisk -l
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdb2
mkfs.xfs /dev/sdb3
mkfs.xfs /dev/sdb4
yum install -y mdadm
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
mkfs.xfs /dev/md0
创建挂载RAID设备的目录
mkdir /mnt/raid10
挂载
mount /dev/md0 /mnt/raid10
其中,“/mnt/raid10”是要挂载RAID设备的目录,“/dev/md0”是RAID设备的设备名称。
#我们首先写入一些文件看看是否可以使用
[root@localhost raid10]# echo csq{1..1000000} >> csq.txt
[root@localhost raid10]# df -h # 可以使用
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 12M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda5 55G 11G 44G 20% /
/dev/sda2 30G 33M 30G 1% /home
/dev/sda1 7.9G 142M 7.7G 2% /boot
tmpfs 781M 0 781M 0% /run/user/0
/dev/md0 10G 118M 9.9G 2% /mnt/raid10
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sun Apr 2 00:46:54 2023
Raid Level : raid10
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Sun Apr 2 00:48:18 2023
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8bc8a484:0f2ffd78:607fe509:264ac168
Events : 19
Number Major Minor RaidDevice State
0 8 17 0 active sync set-A /dev/sdb1
1 8 18 1 active sync set-B /dev/sdb2
2 8 19 2 active sync set-A /dev/sdb3
3 8 20 3 active sync set-B /dev/sdb4
在创建RAID 10之前,确保硬盘设备已经被格式化为Linux文件系统
创建设备时
在Linux中创建RAID 0时,必须至少使用两个硬盘
在Linux中创建RAID 1时,必须至少使用两个硬盘
在Linux中创建RAID 5时,必须至少使用三个硬盘
在Linux中创建RAID 10时,必须至少使用四个硬盘
创建RAID 10设备时,硬盘设备的容量最好相同
在挂载RAID设备之前,确保要挂载的目录存在
在使用RAID设备时,建议定期进行RAID设备的备份,以确保数据的安全
删除 RAID 10 阵列 ,在删除 RAID 10 阵列之前 , 请确保已备份好重要数据
卸载挂载 RAID 10 阵列上的文件系统
[root@localhost ~]# umount /mnt/raid10/
停止 RAID 10 阵列
[root@localhost ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
卸载raid10中所有的磁盘信息
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
mdadm --zero-superblock /dev/sdb4
删除RAID设备配置文件
rm /etc/mdadm/mdadm.conf
删除开机自动挂载的文件信息
(如果设置了就要删除)
# 清除/etc/fstab 文件的自动挂载信息文件
vim /etc/fstab
为了模拟故障,首先我们将一个硬盘设备标记为故障设备
mdadm --manage /dev/md0 --fail /dev/sdb4
查看RAID设备信息
然后我们移除这一块坏掉的硬盘
mdadm --manage /dev/md0 --remove /dev/sdb4
使用umount命令取消挂载RAID设备
umount /dev/md0
使用mdadm命令添加新硬盘设备
为了获得最佳性能,建议新硬盘的大小应该与之前的硬盘大小一致或者更大
mdadm --manage /dev/md0 --add /dev/sdc1
添加完之后用 mdadm /dev/md0 查看磁盘阵列信息,等待修复过程
如下图磁盘就修复成功了!
然后就可以使用磁盘了!
创建raid的配置文件
将RAID设备的配置信息写入到/etc/mdadm.conf
文件中,以便在系统启动时自动加载RAID设备
echo DEVICE /dev/sdb[1-3] /dev/sdc1 >> /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf # 这是添加后的效果 自己设置自己的device
DEVICE /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdc1
ARRAY /dev/md/0 metadata=1.2 name=localhost.localdomain:0 UUID=6190dc62:f4779dfb:cc7b8909:5f256a76
取消raid10的挂载
umount /mnt/raid10/
停止 raid10
停止之后使用 mdadm -D /dev/md0 命令查不到raid10信息就是正常状态
[root@localhost ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or director
在存在配置文件的情况下就可以正常启动raid10了!
mdadm -A /dev/md0
启动完成后查看raid10详细信息
使用mdadm命令创建RAID 5备份盘,需要先准备好三个或更多硬盘,确认硬盘已连接到计算机
使用mdadm
命令创建一个RAID设备
mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
-n 指定3块硬盘
-l 指定raid级别
-x 1 指定一个备份盘
使用mkfs等命令在RAID设备上创建文件系统
mkfs.xfs /dev/md0
创建RAID设备的挂载点,挂载磁盘阵列
mkdir /mnt/raid5/
mount /dev/md0 /mnt/raid5/
写入数据,检查raid是否可以使用
[root@localhost raid5]# echo csq{1..1000000} >> csq.txt
[root@localhost raid5]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 12M 3.8G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda5 xfs 55G 11G 44G 20% /
/dev/sda2 xfs 30G 33M 30G 1% /home
/dev/sda1 xfs 7.9G 142M 7.7G 2% /boot
tmpfs tmpfs 781M 0 781M 0% /run/user/0
/dev/md0 xfs 8.0G 42M 8.0G 1% /mnt/raid5
# 可以使用
见证备份盘的作用(从磁盘整列中删除一块硬盘)
mdadm /dev/md0 --fail /dev/md0
查看磁盘整列信息,发现备用磁盘已经顶替上去
检查备份盘是否自动加入了阵列组
[root@localhost raid5]# cp csq.txt csq2.txt
[root@localhost raid5]# cp csq.txt csq3.txt
[root@localhost raid5]# df -H
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.1G 0 4.1G 0% /dev
tmpfs 4.1G 0 4.1G 0% /dev/shm
tmpfs 4.1G 13M 4.1G 1% /run
tmpfs 4.1G 0 4.1G 0% /sys/fs/cgroup
/dev/sda5 59G 12G 47G 20% /
/dev/sda2 33G 34M 33G 1% /home
/dev/sda1 8.4G 149M 8.3G 2% /boot
tmpfs 819M 0 819M 0% /run/user/0
/dev/md0 8.6G 64M 8.6G 1% /mnt/raid5
测试可用