知已难寻头像
关注
Linux 存储核心——RAID磁盘阵列与LVM逻辑卷封面图

Linux 存储核心——RAID磁盘阵列与LVM逻辑卷

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级别都是这三种技术的不同组合:

  1. 条带化(Striping):数据分成固定大小的块,依次分散写入多块磁盘,读写并行执行,核心作用是提升性能
  2. 镜像(Mirroring):数据完全相同地写入多块磁盘,一份数据多份副本,核心作用是实现冗余
  3. 奇偶校验(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(双奇偶校验)

RAID6

工作原理

在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级别最小盘数最大同时坏盘数空间利用率读性能写性能可靠性硬件成本推荐场景使用频率
RAID020100%极高极高极低临时缓存、视频剪辑
RAID12150%系统盘、关键小文件
RAID531(n-1)/n中低文件服务器、通用存储极高
RAID642(n-2)/n很高中高大容量归档存储
RAID104每组各1块50%极高极高核心数据库、关键业务极高
RAID506每组1块每组(n-1)/n极高大规模并行存储
RAID608每组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分区有三个固有缺陷:

  1. 分区大小固定,扩容困难,分区后面没有空闲空间就无法扩展
  2. 单个分区不能跨磁盘,容量受单盘上限限制
  3. 调整大小必须重新分区,数据风险大、需要停机

LVM(Logical Volume Manager,逻辑卷管理器)就是为解决这些问题而生:将底层磁盘池化,按需灵活划分逻辑卷,支持在线动态调整大小。

1.2 核心概念与层级架构

LVM 架构图:

在这里插入图片描述

从下到上共四层结构:

  1. 物理块设备:最底层的存储介质,可以是物理磁盘、磁盘分区、RAID阵列,比如/dev/sdb/dev/md0
  2. 物理卷 PV(Physical Volume):LVM的最基础单元,在块设备上写入LVM元数据,使其成为LVM可管理的存储块。
  3. 卷组 VG(Volume Group):由一个或多个PV组成的存储大池子,空间统一管理、动态分配。
  4. 逻辑卷 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 文件系统扩容对比
文件系统扩容命令在线扩容缩容支持
XFSxfs_growfs 挂载点✅ 支持❌ 不支持
ext4resize2fs 设备路径✅ 支持✅ 支持(需卸载)

生产环境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 核心区别

对比维度RAIDLVM
核心目标数据冗余保护、提升读写性能存储池化、空间灵活伸缩
可靠性提供磁盘级冗余,坏盘不丢数据本身无任何冗余,磁盘损坏数据丢失
空间灵活性差,阵列建好后容量固定,调整复杂极强,按需划分、在线扩缩
性能影响多数级别带来性能提升几乎无额外性能损耗
所处层级贴近物理磁盘层在物理/RAID之上,文件系统之下

二、生产标准存储架构

企业级最通用的组合方案:RAID在下,LVM在上

物理磁盘 → RAID阵列(RAID5/10) → PV → VG → 多个业务LV → 文件系统 → 业务目录
  • 底层RAID:保证数据可靠性,避免单盘故障导致业务中断
  • 上层LVM:保证空间灵活性,按需分配、在线扩容,无需停机调整
  • 兼顾可靠性与灵活性,是当前服务器存储的标准配置。

三、重点难点总结

高频必会
  1. RAID5、RAID10的工作原理、优缺点、适用场景
  2. mdadm 创建、查看、故障处理的基本命令
  3. LVM PV/VG/LV 创建、在线扩容操作
  4. XFS 文件系统在线扩容步骤
易错踩坑点
  1. RAID0无冗余,禁止存放关键业务数据
  2. 停止RAID后必须清除成员盘的超级块,避免残留标识
  3. XFS 只能扩容不能缩容,缩容前必须确认文件系统类型
  4. 文件系统缩容必须先卸载、先执行完整性检查
  5. /etc/fstab 配置错误会导致系统无法启动,修改后必须先验证
  6. 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

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--