# Linux进阶Day03逻辑卷管理与RAID磁盘阵列

声明:本文仅作学习交流使用,引用需标明出处。

如有谬误,敬请指正


Linux 进阶:LVM 逻辑卷管理与 RAID 磁盘阵列全解析

在 Linux 系统运维中,物理磁盘分区面临空间零散、无法动态扩容,以及数据存储效率低、冗余性差等问题。逻辑卷管理(LVM)RAID 磁盘阵列 作为两大核心存储技术,分别从弹性空间管理和磁盘整合优化角度解决了上述痛点。本文将融合核心知识点,从概念、实操、核心特性等方面全面解析 LVM 和 RAID,修正文档谬误,形成从原理到实践的完整知识体系。


一、逻辑卷管理(LVM):弹性化的存储管理方案

LVM 是在传统存储流程 分区规划 → 格式化 中新增的 逻辑层 ,通过虚拟整合多块物理存储资源,打造为可 动态扩容、灵活调整大小 的虚拟磁盘分区,彻底解决物理分区空间零散、扩容繁琐的问题。

其核心为三层架构,从底层到上层依次为 物理卷(PV)卷组(VG)逻辑卷(LV),整体使用流程为:

识别硬盘 → 分区规划 → 物理卷 → 卷组 → 逻辑卷 → 格式化 → 挂载使用
💡 一句话总结:LVM 就是为了打破物理磁盘边界,实现存储空间的整合、统一管理并弹性分配存储空间。


1.1 LVM 核心组件及概念

LVM 的三层组件各司其职,形成 零散存储整合(未分区的整块磁盘 或 未格式化的独立分区)→ 虚拟存储池 → 弹性分区使用 的完整链路。同时,卷组(VG)与 MBR 分区体系的扩展分区存在高度类比性,便于理解其"容器"属性。

LVM 三层核心架构
层级 组件 说明
底层 物理卷(PV) LVM 的底层物理存储单元,直接对应硬盘或硬盘分区,是已规整的存储原材料。可在创建卷组时由系统自动转换。
中层 卷组(VG) 由多个物理卷整合而成的虚拟存储空间,自身无法直接存储数据,仅作为容纳逻辑卷的"容器",相当于 LVM 体系中的"扩展分区"。
上层 逻辑卷(LV) 从卷组中划分出的虚拟逻辑分区,可被格式化、挂载并直接存储数据,是用户实际操作的存储单元,支持动态调整大小。
卷组(VG)与扩展分区的类比

二者本质均为"容器",核心特性高度一致:

共同特性:

  • 自身不能直接存储数据(扩展分区 ≠ 可存文件的分区,卷组 ≠ 可格式化挂载的逻辑卷)
  • 仅用来包含更小的存储单元(扩展分区包含逻辑分区,卷组包含逻辑卷)
  • 均为解决"数量/空间不够"的问题(扩展分区突破 MBR 主分区最多 4 个的限制,卷组整合多块 PV 突破单个磁盘空间的限制)

体系层级对应关系:

层级 MBR 分区体系 LVM 体系 角色
物理层 硬盘 /dev/sda 硬盘 /dev/sda 裸设备
原料层 主分区 PV(物理卷) 已规整的原材料
容器层 扩展分区 VG(卷组) 存储容器
可用层 逻辑分区 LV(逻辑卷) 最终可用单元

🧱 通俗理解:物理卷(PV)是零散的存储空间,好似砖头;卷组(VG)是整合后的存储池,好似砖头堆成的建材池;逻辑卷(LV)是弹性的存储空间,如同可随时切割的房间;LVM 则是整个弹性空间的管理者。


1.2 LVM 核心管理工具集

物理卷、卷组、逻辑卷的管理命令按功能分类如下(加粗为最常用命令,掌握这些即可):

功能 物理卷(PV)管理 卷组(VG)管理 逻辑卷(LV)管理
scan 扫描/查看 pvs vgs lvs
create 创建 pvcreate vgcreate lvcreate
display 显示 pvdisplay vgdisplay lvdisplay
remove 删除 pvremove vgremove lvremove
extend 扩展 vgextend lvextend

remove删除使用中的逻辑卷必须先卸载挂载,并删除对应/etx/fstab配置

⚠️ 注意 :区分字母 l 与数字 1,避免 1vcreate / Ivdisplay 等书写错误。


1.3 LVM 完整部署及使用(全实操步骤)

虚拟机中 20G 硬盘 /dev/sdb 为基础,采用 MBR 分区模式,划分 2 个 2G 主分区 /dev/sdb1/dev/sdb2,完成从磁盘分区到逻辑卷永久挂载的全流程。

步骤1:环境准备与磁盘分区

通过 VMware 添加 20G SCSI 类型硬盘,系统识别为 /dev/sdb,使用 fdisk 划分 2 个 2G 主分区:

bash 复制代码
[root@localhost ~]# lsblk /dev/sdb          # 查看新磁盘,确认识别
[root@localhost ~]# fdisk /dev/sdb          # 进入分区工具
# 创建 sdb1(2G 主分区):n → p → 分区号 1 → 起始扇区默认 → 结束扇区 +2G
# 创建 sdb2(2G 主分区):n → p → 分区号 2 → 起始扇区默认 → 结束扇区 +2G
# 查看分区表:p
# 保存并退出:w
[root@localhost ~]# partprobe /dev/sdb      # 刷新分区表,让系统识别新分区
[root@localhost ~]# lsblk /dev/sdb          # 验证分区结果
步骤2:创建物理卷(PV)

将空闲分区转换为物理卷,支持批量创建:

bash 复制代码
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2   # 批量创建 PV
[root@localhost ~]# pvs                           # 查看 PV 创建结果
步骤3:创建卷组(VG)

将多个物理卷整合为卷组,示例命名为 systemvg,整合后容量约 4G:

bash 复制代码
[root@localhost ~]# vgcreate systemvg /dev/sdb1 /dev/sdb2   # 整合 PV 为 VG
[root@localhost ~]# vgs                                      # 查看 VG 创建结果
步骤4:创建逻辑卷(LV)

从卷组中划分指定大小的逻辑卷,核心参数 -L 指定大小、-n 指定名称:

bash 复制代码
[root@localhost ~]# lvcreate -L 180M -n vo systemvg   # 创建 LV
[root@localhost ~]# lvs                               # 查看 LV 创建结果

易错点:指定名称后不要忘记后接卷组名

步骤5:格式化逻辑卷

将逻辑卷格式化为主流文件系统(如 ext4):

bash 复制代码
[root@localhost ~]# mkfs.ext4 /dev/systemvg/vo        # 格式化为 ext4
[root@localhost ~]# blkid /dev/systemvg/vo            # 查看文件系统信息
步骤6:挂载逻辑卷(临时 + 永久)

逻辑卷需挂载至指定目录才能使用,临时挂载重启失效,永久挂载需编辑 /etc/fstab

bash 复制代码
# 临时挂载
[root@localhost ~]# mkdir /vo                         # 创建挂载点
[root@localhost ~]# mount /dev/systemvg/vo /vo        # 执行挂载

# 永久挂载
[root@localhost ~]# vim /etc/fstab                    # 编辑配置文件
# 添加行:/dev/systemvg/vo /vo ext4 defaults 0 0
[root@localhost ~]# mount -a                          # 验证挂载配置
[root@localhost ~]# df -hT                            # 验证挂载结果
[root@localhost ~]# echo 123 > /vo/test01.txt         # 写入测试文件
[root@localhost ~]# cat /vo/test01.txt                # 读取文件,验证可读写

1.4 LVM 动态扩容(核心实操,分两种场景)

LVM 的核心优势是 动态扩容不中断使用 。扩容需完成两步核心操作:更新逻辑卷空间 + 更新文件系统大小(仅扩容逻辑卷,文件系统无法识别新空间)。

扩容前需先判断卷组空间是否充足,并根据文件系统类型选择不同的刷新命令:

文件系统类型 刷新命令
ext3 / ext4 resize2fs
xfs xfs_growfs
场景1:卷组空间充足(直接扩容 LV + 刷新文件系统)

以将 /dev/systemvg/vo 从 180M 扩容至 300M 为例:

bash 复制代码
# 步骤1:扩容逻辑卷
[root@localhost ~]# lvextend -L 300M /dev/systemvg/vo
[root@localhost ~]# lvs                    # 查看 LV 已扩容
# 此时 df -Th 查看文件系统仍为原大小

# 步骤2:刷新 ext4 文件系统
[root@localhost ~]# resize2fs /dev/systemvg/vo
[root@localhost ~]# df -Th                 # 验证文件系统已扩容至 300M
场景2:卷组空间不足(准备新磁盘/分区 → 先扩 VG → 再扩 LV → 最后刷新文件系统)

以将 /dev/systemvg/vo 扩容至 5G 为例(原 VG 仅 4G,空间不足),需先划分新分区并扩容卷组:

bash 复制代码
# 步骤1:划分 6G 新分区 /dev/sdb3
[root@localhost ~]# fdisk /dev/sdb         # n → p → 分区号 3 → +6G → w
[root@localhost ~]# partprobe /dev/sdb     # 刷新分区表

# 步骤2:扩容卷组(卷组扩容时会自动将新分区转换为物理卷)
[root@localhost ~]# vgextend systemvg /dev/sdb3
[root@localhost ~]# vgs                    # 验证 VG 扩容结果(约 10G)

# 步骤3:扩容逻辑卷
[root@localhost ~]# lvextend -L 5G /dev/systemvg/vo
[root@localhost ~]# lvs                    # 验证 LV 已扩容至 5G

# 步骤4:刷新文件系统
[root@localhost ~]# resize2fs /dev/systemvg/vo
[root@localhost ~]# df -Th                 # 验证文件系统已扩容至 5G

1.5 卷组的 PE 设置:LVM 空间划分的最小单位

PE(Physical Extent,物理扩展)是 卷组 划分空间的 最小单位,直接决定逻辑卷的空间划分精度,是 LVM 的核心底层参数。

📌 默认 PE 大小为 4M,创建卷组时可指定,也可对已存在的卷组进行修改。

1.5.1 PE 基础特性
  • 只能多给、不能少给:创建逻辑卷时,若目标空间不是 PE 的整数倍,系统会自动分配下一个整数倍的 PE 空间(如 250M 按 4M PE 计算,实际分配 252M,即 63 × 4 = 252M)
  • PE 大小决定划分精度,默认 4M 精度较低,可自定义为 1M 实现精准划分
1.5.2 PE 大小的设置与修改
bash 复制代码
# 查看当前 PE 大小(默认 4M)
[root@localhost ~]# vgdisplay systemvg | grep "PE Size"

# 方式1:创建卷组时指定 PE(示例 1M)
[root@localhost ~]# vgcreate -s 1M systemvg /dev/sdb1 /dev/sdb2

# 方式2:修改已存在卷组的 PE(示例 1M)
[root@localhost ~]# vgchange -s 1M systemvg

# 验证 PE 修改结果
[root@localhost ~]# vgdisplay systemvg | grep "PE Size"

⚠️ 注意vgchange -s 命令仅支持修改 未激活 的卷组,生产环境操作前请确保已停用卷组中的逻辑卷。

1.5.3 按 PE 个数创建逻辑卷

除了用 -L 指定具体大小,还可通过 -l(小写 L)指定 PE 个数 创建逻辑卷:

bash 复制代码
# 创建 600 个 PE 的逻辑卷(PE 为 1M 则为 600M,PE 为 4M 则为 2400M)
[root@localhost ~]# lvcreate -l 600 -n testvo03 systemvg
[root@localhost ~]# lvs                    # 查看 LV 大小

1.6 LVM 综合实操案例

修改 systemvg 卷组 PE 为 4M,创建 2G 逻辑卷 film,格式化为 xfs 并永久挂载至 /film,扩容至 4G 并刷新文件系统:

bash 复制代码
# 1. 修改 PE 为 4M
[root@localhost ~]# vgchange -s 4M systemvg

# 2. 创建 2G 逻辑卷
[root@localhost ~]# lvcreate -L 2G -n film systemvg

# 3. 格式化为 xfs
[root@localhost ~]# mkfs.xfs /dev/systemvg/film

# 4. 永久挂载
[root@localhost ~]# mkdir /film
[root@localhost ~]# echo "/dev/systemvg/film /film xfs defaults 0 0" >> /etc/fstab
[root@localhost ~]# mount -a

# 5. 扩容至 4G
[root@localhost ~]# lvextend -L 4G /dev/systemvg/film

# 6. 刷新 xfs 文件系统
[root@localhost ~]# xfs_growfs /dev/systemvg/film

# 7. 验证结果
[root@localhost ~]# lvs && df -Th

二、RAID 磁盘阵列:效率与冗余的磁盘整合方案

RAID 即 廉价冗余磁盘阵列(Redundant Arrays of Inexpensive Disks) ,通过硬件或软件技术将多个较小/低速的磁盘整合为一个大容量虚拟磁盘,核心价值是 提升 I/O 读写效率 和实现 硬件级别的数据冗余


2.1 主流 RAID 级别核心原理与特性

课程重点讲解 RAID 0、RAID 1、RAID 10、RAID 5 四种级别:

RAID 级别 核心原理 特点 适用场景
RAID 0 条带模式 将同一文件分散存储在不同磁盘,并行写入/读取 磁盘利用率 100%,I/O 读写性能最高;无容错性,单盘损坏则所有数据丢失 仅追求效率,不要求数据安全的场景(如临时文件存储)
RAID 1 镜像模式 将同一文件复制多份,分别写入不同磁盘 磁盘利用率 ≤50%,I/O 读写性能最低;有容错性,单盘损坏可从镜像恢复 数据安全性要求极高,效率要求低的场景
RAID 10 组合模式 先做 RAID 1 镜像,再对镜像组做 RAID 0 条带 磁盘利用率 ≤50%,I/O 读写性能中等;容错性高,每组镜像中仅坏 1 块数据不丢失 兼顾效率与安全的企业核心业务(如数据库存储)
RAID 5 高性价比模式(分布式校验,R0和R1的折中方案) 数据分散存储,校验数据分布式存放在各磁盘 磁盘利用率 (n-1)/n,I/O 读写性能较高;有容错性,单盘损坏可通过校验恢复 兼顾成本、效率与安全,企业最常用

(了解)RAID 6:在RAID 5的基础上再加一块盘用来校验

2.2 RAID 各级别核心参数对比

对比项 RAID 0 RAID 1 RAID 10 RAID 5
最少磁盘数 ≥2 ≥2 ≥4 ≥3
磁盘利用率 100% ≤50% ≤50% (n-1)/n
专用校验盘 无(分布式校验)
容错性
I/O 读写性能 较高

2.3 RAID 阵列的两种实现方式

对比项 硬 RAID 软 RAID
管理主体 RAID 控制卡(专用硬件) 操作系统的 RAID 软件(如 Linux 的 mdadm
数据流程 主板 → RAID 阵列卡 → 磁盘 → 操作系统 → 数据 主板 → 磁盘 → 操作系统 → RAID 软件 → 数据
优势 硬件级管理,不占用系统 CPU/内存,性能高、稳定性强 无需专用硬件,成本低,配置灵活
劣势 需要专用 RAID 阵列卡,硬件成本较高 占用系统 CPU/内存资源,性能略低于硬 RAID

三、课程核心总结与实操关键点

LVM 和 RAID 作为 Linux 存储领域的核心技术,分别解决了 空间弹性管理磁盘效率与冗余 的问题。

3.1 核心知识总结

  1. LVM 是支持动态扩容的虚拟分区技术,核心三层架构为 物理卷(PV)→ 卷组(VG)→ 逻辑卷(LV),解决了物理分区空间零散、无法动态扩容的痛点
  2. LVM 的核心操作包括创建(PV → VG → LV)、格式化、挂载,以及根据卷组空间是否充足的两种扩容方式,扩容后必须刷新文件系统才能让系统识别新空间
  3. PE 是卷组划分空间的最小单位,默认 4M,可自定义大小,支持按 PE 个数(-l)或具体大小(-L)创建逻辑卷
  4. RAID 通过整合多块磁盘实现效率提升和数据冗余,RAID 0 追效率、RAID 1 追可靠、RAID 10 兼顾二者、RAID 5 高性价比(企业首选)
  5. RAID 的实现方式分为 硬 RAID (硬件管理,性能高、成本高)和 软 RAID(软件管理,成本低、占用系统资源)

3.2 实操关键点

  1. LVM 命令集 :牢记 PV/VG/LV 的创建、查看、扩展命令,区分 字母 l 和数字 1,避免书写错误
  2. 文件系统刷新 :严格区分 ext3/ext4(resize2fs)和 xfs(xfs_growfs)的刷新命令,不可混用
  3. RAID 核心判断 :根据场景快速判断所需 RAID 级别,重点掌握各级别的 最少磁盘数、利用率、容错性
  4. LVM 扩容逻辑 :先判断卷组空间是否充足,不足时需先扩容卷组(vgextend),且卷组扩容会自动将新分区转换为物理卷,无需手动创建 PV

通过掌握 LVM 和 RAID 的核心技术,可实现 Linux 系统存储的弹性化、高效化和高可用化,满足不同业务场景下的存储需求,是 Linux 进阶运维的必备技能。


相关推荐
与数据交流的路上1 小时前
linux-系统日志的归档
linux·运维·javascript
杭州杭州杭州1 小时前
Docker实验5
运维·docker·容器
释怀不想释怀2 小时前
硬盘分区:fdisk
linux·运维·服务器
Astro_ChaoXu2 小时前
GAMSE使用日志与教程(高分辨率光谱数据缩减)
linux·数据库·python
sky wide2 小时前
[特殊字符] Docker Compose 安装指南
运维·docker·容器
biubiubiu07062 小时前
Ubuntu 22.04 高级运维与架构规范手册
运维·ubuntu·架构
有毒的教程2 小时前
Ubuntu 网络代理设置教程
linux·网络·ubuntu
vvw&3 小时前
如何在 Linux 中安装和使用 nftables
linux·运维·服务器·ubuntu
BlackPercy3 小时前
[deepin] 搭建 openclaw
linux·deepin·openclaw