Linux 存储核心——RAID磁盘阵列与LVM逻辑卷
本文结合原理示意图,系统讲解RAID磁盘阵列与LVM逻辑卷两大存储技术,涵盖底层原理、级别对比、实操命令、场景选型、易错踩坑,标注生产环境使用频率,帮助建立完整的存储知识体系。
文章目录
第一部分 Linux RAID 存储技术
【工作使用频率:高,运维存储核心基础】
一、RAID 基础认知
1.1 概念与名称演变
RAID 最初全称是 Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列),由加州大学伯克利分校1988年提出,核心思想是将多块容量小、价格低的磁盘组合起来,获得与大容量昂贵磁盘相当的容量、性能与可靠性。
后来磁盘成本下降,「廉价」失去意义,行业将其更改为 Independent Disks(独立磁盘冗余阵列),名称变化但技术本质不变。
1.2 三种实现方式对比
| 实现方式 | 核心原理 | 性能 | 硬件成本 | CPU占用 | 生产使用频率 |
|---|---|---|---|---|---|
| 软 RAID | 完全由操作系统+CPU实现,通过mdadm工具管理 | 低 | 低 | 高 | 中(中小服务器、虚拟机场景) |
| 硬 RAID | 配备专用RAID控制芯片、IO处理芯片与缓存,独立运算 | 高 | 高 | 无 | 高(企业服务器、专业存储阵列) |
| 软硬混合 | 有控制芯片,无IO处理芯片,需要CPU辅助完成 | 中 | 中 | 中 | 低 |
1.3 三大核心技术(所有RAID级别的基础)
所有RAID级别都是这三种技术的不同组合:
- 条带化(Striping):数据分成固定大小的块,依次分散写入多块磁盘,读写并行执行,核心作用是提升性能。
- 镜像(Mirroring):数据完全相同地写入多块磁盘,一份数据多份副本,核心作用是实现冗余。
- 奇偶校验(Parity):通过算法计算校验值,和数据一起分散存储;磁盘损坏后,可通过剩余数据+校验值重建丢失数据,核心作用是用少量空间换冗余。
二、RAID 级别详解(配图)
2.1 RAID 0(条带)

工作原理
数据被分成固定大小的块,轮流分散存储在所有成员磁盘中,完全并行读写,没有任何冗余备份。
比如2块盘的RAID0:第1块数据写磁盘0,第2块写磁盘1,第3块写磁盘0,以此类推。
核心参数
- 最小磁盘数:2
- 容错能力:0,任意一块磁盘损坏,所有数据全部丢失
- 空间利用率:100%,无额外空间开销
- 性能:读写性能都极高,磁盘数量越多性能越强
优缺点
- 优点:性能最高、成本最低、空间完全利用
- 缺点:完全无冗余,可靠性极低
适用场景
对性能要求极高、数据可丢失/可重建的场景:视频剪辑、临时缓存、流媒体转发、测试环境。
工作使用频率:中
2.2 RAID 1(镜像)

工作原理
写入数据时,同时将数据完整复制到两块磁盘,两块盘互为完全镜像;读取时可以从两块盘并行读取。
核心参数
- 最小磁盘数:2
- 容错能力:允许同时坏1块磁盘
- 空间利用率:50%,一半空间用于镜像备份
- 性能:读性能高,写性能略低于单盘(双写开销)
优缺点
- 优点:数据100%冗余,可靠性高;故障后恢复速度极快,直接读镜像盘
- 缺点:空间利用率低,硬件成本高
适用场景
小容量、高可靠的关键数据场景:系统引导盘、数据库日志、核心配置文件。
工作使用频率:高
2.3 RAID 5(分布式奇偶校验)

工作原理
数据条带化分散存储在所有磁盘,同时生成奇偶校验值,校验信息分布式存储在所有磁盘(不是固定在某一块盘)。
任意一块磁盘损坏,都可以通过剩余的数据+校验值,反向计算重建出丢失的数据。
核心参数
- 最小磁盘数:3
- 容错能力:允许同时坏1块磁盘
- 空间利用率:
(n-1)/n,仅损失1块盘的容量 - 性能:读性能高;写性能较低(每次写入都要重新计算校验值)
优缺点
- 优点:兼顾性能与冗余,空间性价比高,是最均衡的RAID级别
- 缺点:写性能弱;磁盘损坏后重建压力大,重建期间有二次损坏风险
适用场景
文件服务器、中小型企业通用存储、读多写少的业务场景。
工作使用频率:极高(生产环境最主流方案)
2.4 RAID 6(双奇偶校验)

工作原理
在RAID5基础上,增加第二组独立的校验算法(双重校验),两组校验信息都分布式存储。
允许同时损坏2块磁盘,数据依然可以恢复。
核心参数
- 最小磁盘数:4
- 容错能力:允许同时坏2块磁盘
- 空间利用率:
(n-2)/n,损失2块盘的容量 - 性能:读性能高;写性能比RAID5更差(双重校验计算开销)
优缺点
- 优点:冗余度更高,大盘场景下安全性远高于RAID5
- 缺点:写性能差,硬件成本更高
适用场景
大容量归档存储、长时间运行的关键业务、单盘容量大的存储阵列。
工作使用频率:中(大容量存储场景)
2.5 RAID 10(镜像+条带,RAID1+0)
工作原理
先两两分组做RAID1镜像,再将所有镜像组做RAID0条带化。
同时具备RAID1的可靠性和RAID0的高性能。
核心参数
- 最小磁盘数:4(偶数)
- 容错能力:每个镜像组允许坏1块,可同时坏多块(不同镜像组内)
- 空间利用率:50%
- 性能:读和写性能都很高
优缺点
- 优点:性能高、可靠性高、故障重建速度快
- 缺点:空间利用率低,硬件成本高
适用场景
高并发数据库、核心交易系统、对性能和可靠性都有高要求的业务。
工作使用频率:极高(核心业务首选)
2.6 RAID 50 / RAID 60(组合型)
RAID 50

- 原理:先组建多组RAID5,再将所有RAID5组做RAID0条带化
- 特点:多组并行性能更高,每组RAID5允许坏1块
- 适用:大规模数据存储、图形渲染、视频处理
- 工作使用频率:低
RAID 60

- 原理:先组建多组RAID6,再将所有RAID6组做RAID0条带化
- 特点:双重冗余+高性能,每组允许坏2块
- 适用:超大规模关键存储系统
- 工作使用频率:极低
2.7 RAID级别核心对比总表
| RAID级别 | 最小盘数 | 最大同时坏盘数 | 空间利用率 | 读性能 | 写性能 | 可靠性 | 硬件成本 | 推荐场景 | 使用频率 |
|---|---|---|---|---|---|---|---|---|---|
| RAID0 | 2 | 0 | 100% | 极高 | 极高 | 极低 | 低 | 临时缓存、视频剪辑 | 中 |
| RAID1 | 2 | 1 | 50% | 高 | 低 | 高 | 中 | 系统盘、关键小文件 | 高 |
| RAID5 | 3 | 1 | (n-1)/n | 高 | 中低 | 中 | 中 | 文件服务器、通用存储 | 极高 |
| RAID6 | 4 | 2 | (n-2)/n | 高 | 低 | 很高 | 中高 | 大容量归档存储 | 中 |
| RAID10 | 4 | 每组各1块 | 50% | 极高 | 高 | 极高 | 高 | 核心数据库、关键业务 | 极高 |
| RAID50 | 6 | 每组1块 | 每组(n-1)/n | 极高 | 中 | 高 | 高 | 大规模并行存储 | 低 |
| RAID60 | 8 | 每组2块 | 每组(n-2)/n | 极高 | 中低 | 极高 | 极高 | 超大规模关键存储 | 极低 |
RAID级别选型思维导图

三、软RAID管理(mdadm工具)
【工作使用频率:中】
3.1 工具概述
mdadm = Multiple Disk Administration,是Linux下管理软件RAID的标准工具,无需额外硬件,通过命令即可完成阵列的创建、管理、故障处理。
3.2 核心命令速记
| 功能 | 命令格式 |
|---|---|
| 创建阵列 | mdadm -C /dev/mdX -l 级别 -n 成员盘数 磁盘列表 |
| 查看阵列详情 | mdadm -D /dev/mdX |
| 快速查看状态/同步进度 | cat /proc/mdstat(生产最常用) |
| 停止阵列 | mdadm --stop /dev/mdX |
| 添加磁盘 | mdadm /dev/mdX -a 磁盘路径 |
| 标记磁盘故障 | mdadm /dev/mdX -f 磁盘路径 |
| 移除故障磁盘 | mdadm /dev/mdX -r 磁盘路径 |
| 清除磁盘RAID签名 | mdadm --zero-superblock 磁盘路径 |
3.3 各级别操作要点
RAID0
# 创建2盘RAID0,设备名/dev/md0
mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
# 或者
mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sd{b,c}
# 格式化挂载
mkfs.xfs /dev/md0
mkdir -p /raid/raid0
mount /dev/md0 /raid/raid0
注意:RAID0不能添加成员盘、不能标记故障盘,损坏即数据全失。
RAID1
# 创建2盘RAID1
mdadm -C /dev/md1 -l 1 -n 2 /dev/sdb /dev/sdc
# 或者
mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}
- 创建后自动开始数据同步(resync),同步完成前性能受影响,建议同步完成后再格式化。
- 查看同步进度:
cat /proc/mdstat
热备盘配置
# 添加热备盘sdd
mdadm /dev/md1 -a /dev/sdd
热备盘平时闲置,成员盘故障时自动顶替并重建数据,无需人工干预。
故障模拟与恢复
# 标记sdc为故障盘
mdadm /dev/md1 -f /dev/sdc
# 移除故障盘
mdadm /dev/md1 -r /dev/sdc
故障发生后热备盘自动启动重建,业务数据不中断访问。
RAID5
# 创建4盘RAID5
mdadm -C /dev/md5 -l 5 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# 或者
mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd[b-e]
创建后自动进行校验同步。
RAID5 扩容
RAID5只能扩容不能减容,且必须在阵列正常状态下操作。
# 先添加新磁盘
mdadm /dev/md5 -a /dev/sdf /dev/sdg
# 将阵列成员数从4扩展到5
mdadm --grow /dev/md5 --raid-devices 5
# 重塑完成后,扩展文件系统
xfs_growfs /raid/raid5
3.4 销毁RAID阵列 标准流程
# 1. 卸载文件系统
umount /dev/md0
# 2. 停止阵列
mdadm --stop /dev/md0
# 3. 清除所有成员盘的RAID超级块
mdadm --zero-superblock /dev/sdb /dev/sdc
⚠️ 易错点:只停止阵列不清除超级块,磁盘上仍保留RAID标识,下次开机可能自动重组阵列。
3.5 标准操作流程
工具安装
# 安装mdadm(默认可能已装)
yum install -y mdadm
创建与使用
# 1. 创建 RAID5 阵列(4块盘)
mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# 2. 查看状态(等待同步完成再格式化)
cat /proc/mdstat
mdadm --detail /dev/md5
# 3. 格式化挂载
mkfs.xfs /dev/md5
mkdir -p /raid/raid5
mount /dev/md5 /raid/raid5
热备盘与故障模拟
# 加热备盘
mdadm --add /dev/md5 /dev/sdf
# 模拟磁盘故障
mdadm --fail /dev/md5 /dev/sdb
# 热备盘会自动顶替并开始重建数据
# 移除故障盘
mdadm --remove /dev/md5 /dev/sdb
销毁阵列
# 1. 卸载
umount /dev/md5
# 2. 停止阵列
mdadm --stop /dev/md5
# 3. 清除所有成员盘的RAID元数据(必须步骤)
mdadm --zero-superblock /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
第二部分 Linux LVM 逻辑卷管理
【工作使用频率:高,生产磁盘管理必备】
一、LVM 基础认知
1.1 为什么需要LVM(传统分区的痛点)
传统MBR/GPT分区有三个固有缺陷:
- 分区大小固定,扩容困难,分区后面没有空闲空间就无法扩展
- 单个分区不能跨磁盘,容量受单盘上限限制
- 调整大小必须重新分区,数据风险大、需要停机
LVM(Logical Volume Manager,逻辑卷管理器)就是为解决这些问题而生:将底层磁盘池化,按需灵活划分逻辑卷,支持在线动态调整大小。
1.2 核心概念与层级架构
LVM 架构图:

从下到上共四层结构:
- 物理块设备:最底层的存储介质,可以是物理磁盘、磁盘分区、RAID阵列,比如
/dev/sdb、/dev/md0。 - 物理卷 PV(Physical Volume):LVM的最基础单元,在块设备上写入LVM元数据,使其成为LVM可管理的存储块。
- 卷组 VG(Volume Group):由一个或多个PV组成的存储大池子,空间统一管理、动态分配。
- 逻辑卷 LV(Logical Volume):从VG中按需划分出来的逻辑分区,可以格式化、挂载,大小可以动态调整。
补充基础单元:
- PE(Physical Extent):PV的最小分配单元,默认4MB,同一个VG内所有PE大小统一。
- LE(Logical Extent):LV的最小分配单元,与PE一一对应。
1.3 LVM 创建四步流程
步骤示意图:

标准流程:
1. 准备物理磁盘/分区 → 2. 创建PV → 3. 组建VG → 4. 划分LV → 格式化挂载使用
二、LVM 基础操作
2.1 物理卷(PV)管理
# 批量创建PV
pvcreate /dev/sdb /dev/sdc
# 查看PV列表(精简)
pvs
# 查看单个PV详情
pvdisplay /dev/sdb
# 删除PV
pvremove /dev/sdb
2.2 卷组(VG)管理
# 创建VG,名为webapp,包含/dev/sdb
vgcreate webapp /dev/sdb
# 查看VG列表(精简)
vgs
# 查看VG详情
vgdisplay webapp
重点关注:VG总容量、剩余空闲空间、PE大小。
2.3 逻辑卷(LV)管理
# 从webapp卷组中,创建名为webapp01、大小5G的逻辑卷
lvcreate -n webapp01 -L 5G webapp
-n:指定逻辑卷名称-L:指定逻辑卷容量(支持G/M/K单位)
# 查看LV列表
lvs
# 查看LV详情
lvdisplay /dev/webapp/webapp01
LV的设备路径有三种等价写法:
/dev/卷组名/逻辑卷名→/dev/webapp/webapp01(最易读,推荐)/dev/mapper/卷组名-逻辑卷名→/dev/mapper/webapp-webapp01/dev/dm-X:内核设备名,不建议记忆使用
2.4 格式化与挂载
和普通磁盘操作完全一致:
mkfs.xfs /dev/webapp/webapp01
mount /dev/webapp/webapp01 /usr/share/nginx/html
需要开机自动挂载,同样写入/etc/fstab配置文件。
2.5 清理LVM
严格按照从上到下的顺序删除:
# 1. 卸载文件系统
umount /dev/webapp/webapp01
# 2. 删除逻辑卷
lvremove /dev/webapp/webapp01
# 3. 删除卷组
vgremove webapp
# 4. 删除物理卷
pvremove /dev/sdb
三、LVM 进阶操作
3.1 卷组(VG)扩容与缩容
扩容VG(添加新磁盘)
VG空间不足时,加入新磁盘扩展总容量:
# 将sdc、sdd加入webapp卷组
vgextend webapp /dev/sdc /dev/sdd
执行后VG总容量增加,空闲空间同步扩大。
缩容VG(移除磁盘)
将不再使用的磁盘从VG中移除,磁盘上有数据时不能直接删除。
# 先将sdb上的数据迁移到同VG内其他PV
pvmove /dev/sdb
# 数据迁移完成后,从VG中移除磁盘
vgreduce webapp /dev/sdb
3.2 逻辑卷(LV)扩容与缩容
扩容LV(生产高频操作)
VG有足够空闲空间时,可在线扩展逻辑卷,无需停机。
# 给LV增加2G空间
lvextend -L +2G /dev/webapp/webapp01
# ✅ 推荐:一步完成LV扩容+文件系统扩容
lvextend -r -L +2G /dev/webapp/webapp01
-r参数:自动识别文件系统类型并执行扩容命令,无需手动单独操作。
缩容LV(生产低频,风险高)
⚠️ 重要前提:XFS文件系统只支持扩容、不支持缩容;只有ext4文件系统支持缩容,且必须卸载后操作。
ext4 缩容标准流程:
# 1. 卸载文件系统
umount /dev/webapp/webapp01
# 2. 强制检查文件系统完整性
e2fsck -f /dev/webapp/webapp01
# 3. 缩减文件系统到10G
resize2fs /dev/webapp/webapp01 10G
# 4. 缩减LV到10G
lvreduce -L 10G /dev/webapp/webapp01
# 5. 挂载验证
mount /dev/webapp/webapp01 /data
3.3 文件系统扩容对比
| 文件系统 | 扩容命令 | 在线扩容 | 缩容支持 |
|---|---|---|---|
| XFS | xfs_growfs 挂载点 | ✅ 支持 | ❌ 不支持 |
| ext4 | resize2fs 设备路径 | ✅ 支持 | ✅ 支持(需卸载) |
生产环境XFS占绝大多数,因此LVM绝大多数场景都是「只扩不缩」。
四、LVM 高级特性
4.1 LVM快照
【工作使用频率:中】
原理
创建某个时间点逻辑卷的只读快照,记录当时的数据状态;后续原卷数据变化时,快照保留旧数据。
常用于数据备份、版本回退、数据一致性验证。
基础操作
# 创建快照,名称webapp01-snap,大小建议不小于原LV
lvcreate -s -n webapp01-snap -L 10G /dev/webapp/webapp01
# 挂载快照查看历史数据
mount /dev/webapp/webapp01-snap /mnt/snap
4.2 LVM RAID
LVM内置了RAID功能,可以直接在逻辑卷层面实现RAID1/RAID5等冗余。
适合场景:已经使用LVM管理存储,又需要数据冗余,不想单独部署mdadm阵列。
第三部分 总结与选型指南
一、RAID vs LVM 核心区别
| 对比维度 | RAID | LVM |
|---|---|---|
| 核心目标 | 数据冗余保护、提升读写性能 | 存储池化、空间灵活伸缩 |
| 可靠性 | 提供磁盘级冗余,坏盘不丢数据 | 本身无任何冗余,磁盘损坏数据丢失 |
| 空间灵活性 | 差,阵列建好后容量固定,调整复杂 | 极强,按需划分、在线扩缩 |
| 性能影响 | 多数级别带来性能提升 | 几乎无额外性能损耗 |
| 所处层级 | 贴近物理磁盘层 | 在物理/RAID之上,文件系统之下 |
二、生产标准存储架构
企业级最通用的组合方案:RAID在下,LVM在上
物理磁盘 → RAID阵列(RAID5/10) → PV → VG → 多个业务LV → 文件系统 → 业务目录
- 底层RAID:保证数据可靠性,避免单盘故障导致业务中断
- 上层LVM:保证空间灵活性,按需分配、在线扩容,无需停机调整
- 兼顾可靠性与灵活性,是当前服务器存储的标准配置。
三、重点难点总结
高频必会
- RAID5、RAID10的工作原理、优缺点、适用场景
- mdadm 创建、查看、故障处理的基本命令
- LVM PV/VG/LV 创建、在线扩容操作
- XFS 文件系统在线扩容步骤
易错踩坑点
- RAID0无冗余,禁止存放关键业务数据
- 停止RAID后必须清除成员盘的超级块,避免残留标识
- XFS 只能扩容不能缩容,缩容前必须确认文件系统类型
- 文件系统缩容必须先卸载、先执行完整性检查
/etc/fstab配置错误会导致系统无法启动,修改后必须先验证- LV扩容后必须扩容文件系统,否则操作系统看不到新增空间
工作频率总览
- 极高:RAID5/RAID10选型、LVM在线扩容、XFS文件系统扩容
- 高:RAID1应用、mdadm基础管理、LVM创建与挂载
- 中:RAID6选型、LVM快照、热备盘配置
- 低:RAID50/60、LVM缩容、LVM内置RAID
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_65272847/article/details/166371608




