一篇文章彻底搞懂RAID磁盘阵列及其配置使用

一篇文章彻底搞懂RAID磁盘阵列及其配置使用

一、RAID技术概述

RAID(Redundant Array of Independent Disks)即独立磁盘冗余阵列,是一种通过多磁盘组合实现​​数据冗余​​、​​性能提升​​或二者兼顾的存储虚拟化技术。其核心原理包括:

​​条带化(Striping)​​:数据分块并行写入多磁盘(如RAID 0)​​镜像(Mirroring)​​:数据完全复制到多磁盘(如RAID 1)​​奇偶校验(Parity)​​:通过校验数据实现故障恢复(如RAID 5/6)

二、常见RAID级别详解

1. ​​RAID 0​

RAID 0使用数据条带化(striping)的方式将数据分散存储在多个磁盘上,而不进行冗余备份。数据被分成固定大小的块,并依次存储在每个磁盘上。例如,如果有两个磁盘(磁盘A和磁盘B),一块数据的第一个部分存储在磁盘A上,第二个部分存储在磁盘B上,以此类推。这种条带化的方式可以同时从多个磁盘读取或写入数据,从而提高系统的性能。​简单来说:

​​原理​​:数据分块后并行存储于≥2块磁盘​​优点​​:读写性能最高,100%磁盘利用率​​缺点​​:无冗余,单盘故障导致数据全毁​​场景​​:临时缓存、非关键数据存储

2. ​​RAID 1​

RAID 1使用数据镜像(mirroring)的方式将数据完全复制到两个或多个磁盘上。当写入数据时,数据同时写入所有磁盘。这样,每个磁盘都具有相同的数据副本,从而实现数据的冗余备份。如果其中一个磁盘发生故障,系统可以继续从剩余的磁盘中读取数据,确保数据的可用性和完整性。​

​​原理​​:数据完全镜像到≥2块磁盘​​优点​​:高可靠性,读取性能提升​​缺点​​:磁盘利用率仅50%​​场景​​:数据库、交易系统等关键数据

3. ​​RAID 5​

RAID 5使用数据条带化(striping)的方式将数据分散存储在多个磁盘上,并通过分布式奇偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的磁盘上。当写入数据时,奇偶校验信息也会被更新。如果其中一个磁盘发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。这种方式可以同时提供性能增强和数据冗余。​

​​原理​​:数据条带化存储,​​分布式奇偶校验​​(校验信息轮转存储)​​优点​​:兼顾性能与安全,利用率(n-1)/n(n代表磁盘数量)​​缺点​​:单盘故障后重建时间长​​场景​​:金融、数据库等随机读写场景

4. ​​RAID 6​

与RAID 5相似,RAID 6也使用数据条带化(striping)的方式将数据分散存储在多个磁盘上,并通过分布式奇偶校验和双重奇偶校验实现数据的冗余备份。数据和奇偶校验信息被组织成数据块,其中奇偶校验信息被分布式存储在不同的磁盘上,并通过双重奇偶校验提供更高的数据冗余性。当写入数据时,奇偶校验信息也会被更新。如果其中两个磁盘发生故障,系统可以通过重新计算奇偶校验信息来恢复丢失的数据。这种方式可以同时提供性能增强和更高级别的数据冗余。​

​​原理​​:双奇偶校验,可容忍​​同时两块磁盘故障​​​​优点​​:安全性高于RAID 5​​缺点​​:利用率(n-2)/n,写入性能较低​​场景​​:高可靠性要求的存储系统

5. ​​RAID 10(1+0)​

RAID 10结合条带化(striping)和镜像(mirroring)实现数据的冗余备份。具体来说就是:先将磁盘两两分组,每组设置为RAID 1;再将每组RAID 1一起设置为RAID 0。这样,RAID 10在提供性能增强的同时,也提供了数据的冗余保护。​

​​原理​​:先镜像再条带化(需≥4块磁盘)​​优点​​:兼具RAID 1可靠性和RAID 0高性能​​缺点​​:磁盘利用率仅50%​​场景​​:金融、大数据分析等高性能高可靠场景

▶ RAID级别对比表

​​级别​​​​最小磁盘数​​​​容错能力​​​​利用率​​​​读性能​​​​写性能​​RAID 02无100%⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐RAID 12单盘50%⭐⭐⭐⭐⭐⭐RAID 53单盘(n-1)/n⭐⭐⭐⭐⭐⭐⭐RAID 64双盘(n-2)/n⭐⭐⭐⭐⭐RAID 104镜像组单盘50%⭐⭐⭐⭐⭐⭐⭐⭐⭐

三、mdadm工具详解

mdadm是Linux下管理​​软件RAID​​的核心工具,支持阵列创建、监控、修复等操作。

命令格式​​

mdadm [模式] [选项] <成员设备>

​​模式​​:指定操作模式(如创建、管理、监控等)。​​RAID设备​​:虚拟 RAID 设备名(如 /dev/md0)。​​成员设备​​:物理磁盘分区(如 /dev/sdb1)。

​​常用模式与参数​​

​​1. 创建模式 (--create/-C)​​

创建新的 RAID 阵列:

mdadm -C /dev/md0 -l 5 -n 3 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

​​-l/--level​​:RAID 级别(如 0、1、5、10)。​​-n/--raid-devices​​:活动磁盘数量。​​-x/--spare-devices​​:热备盘数量。​​-a/--auto​​:自动创建设备文件(yes/no)。​​-c/--chunk​​:条带大小(单位 KB,默认 64KB)。

​​2. 管理模式 (--manage)​​

动态调整运行中的 RAID:

mdadm /dev/md0 --add /dev/sdf # 添加磁盘

mdadm /dev/md0 --fail /dev/sdb # 标记故障

mdadm /dev/md0 --remove /dev/sdb # 移除磁盘

​​--add​​:添加新成员盘(可作热备盘)。​​--fail​​:模拟磁盘故障。​​--remove​​:移除故障盘。

​​3. 监控模式 (--monitor/-F)​​

后台监控阵列状态(如邮件告警):

mdadm --monitor --daemonise --mail=admin@example.com /dev/md0

​​--daemonise​​:后台运行。​​--mail​​:故障时发送邮件。

​​4. 组装模式 (--assemble/-A)​​

重新激活已存在的 RAID:

mdadm -A /dev/md0 /dev/sdb /dev/sdc # 手动指定磁盘

mdadm -As --scan # 自动扫描配置文件

​​--scan​​:读取 /etc/mdadm.conf 配置。

​​5. 查看模式 (--detail/-D)​​

显示 RAID 详细信息:

mdadm -D /dev/md0 # 详细状态

cat /proc/mdstat # 实时概览

​​-Q/--query​​:简要摘要。

​​6. 停止模式 (--stop/-S)​​

停用 RAID 设备:

mdadm -S /dev/md0

四、CentOS 7.9实战:创建与管理RAID 10

1. 环境准备​

准备4块可用磁盘或分区,安装mdadm软件。

组成RAID的可以是磁盘,也可以是分区,以下使用分区来代替磁盘。

4个分区组成RAID 10(注意每个分区一样大最佳,sda5-sda8)1个分区作为热备份磁盘(与RAID的分区一样大,sda9)将此RAID 10设备挂载到 /mnt/raid 目录下

# 1.安装mdadm

yum install mdadm -y

# 2.查看可用磁盘(确认≥3块)

lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 20G 0 disk

├─sda1 8:1 0 500M 0 part /boot

├─sda2 8:2 0 1G 0 part [SWAP]

├─sda3 8:3 0 17G 0 part /

├─sda4 8:4 0 1K 0 part

├─sda5 8:5 0 250M 0 part

├─sda6 8:6 0 250M 0 part

├─sda7 8:7 0 250M 0 part

├─sda8 8:8 0 250M 0 part

└─sda9 8:9 0 250M 0 part

sr0 11:0 1 9.6G 0 rom

# 3.创建挂载点

mkdir /mnt/raid

2. 创建RAID 10阵列​

mdadm -C /dev/md0 -n4 -x1 -l10 -a yes /dev/sda{5..9}

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

mdadm -D /dev/md0 # 可查看RAID设备详细数据

-C 创建模式 ;-n 活动磁盘数量 ;-x 热备份磁盘数量 ;-l RAID级别 ;-a 是否自动创建设备文件; -D 查看模式

3. 格式化与挂载​​

mkfs.xfs /dev/md0 # 格式化为xfs文件系统

mount /dev/md0 /mnt/raid # 挂载

此时RAID 10就可以正常使用了。

df -Th /mnt/raid # 查看磁盘空间

Filesystem Type Size Used Avail Use% Mounted on

/dev/md0 xfs 490M 26M 465M 6% /mnt/raid

为什么我分配了5块250M的磁盘,但是 /dev/md0 只有490M大小?

答:这是由RAID 10的特性所决定的,这5块磁盘中除去1个热备磁盘作为备用,剩下4块磁盘,但其中一半的容量用来存放镜像数据,所以总体只有约500M大小的磁盘容量。

4. 模拟故障与恢复​​

mdadm /dev/md0 --fail /dev/sda8 # 标记sdb为故障盘

mdadm /dev/md0 --remove /dev/sda8 # 移除故障盘

mdadm /dev/md0 --add /dev/sda8 # 添加新盘并等待重建

watch cat /proc/mdstat # 监控重建进度

/dev/sda8其实并未损坏,只是被标记为损坏,因此可以模拟新盘使用。现实中需要进行硬盘更换的操作。

5. 配置开机自动挂载​

RAID也有配置文件​,即/etc/mdadm.conf,但默认不会自动生成,需要我们手动创建

# 1. 保存阵列配置

mdadm -D --scan >> /etc/mdadm.conf

# 2. 编辑fstab

echo "/dev/md0 /mnt/raid xfs defaults 0 0" >> /etc/fstab

# 3. 测试挂载

mount -a

6. 安全关闭RAID​

当确认不再使用RAID时,需要安全关闭RAID。尤其是使用磁盘分区的情况,如果只将/dev/md0卸载,但忘记关闭RAID,那么未来在重新划分/dev/sda时可能出现错误。​

# 卸载并取消开机自动挂载

umount /mnt/raid

vim /etc/fstab

#/dev/md0 /mnt/raid xfs defaults 0 0 # 将这一行删除或注释掉

mdadm -S /dev/md0 # 关闭RAID

mdadm --zero-superblock /dev/sda{5..9} # 清除磁盘超级块(彻底销毁)

相关推荐