LVM 逻辑卷管理

LVM 逻辑卷管理

在 Linux 系统中,磁盘与分区是存储管理的基础,但传统分区方式(如 MBR、GPT)存在诸多缺陷:难以在线扩容、难以灵活调整大小、磁盘拆换也比较麻烦。为了解决这些问题,Linux 提供了一套更强大、更灵活的机制——LVM(Logical Volume Manager)逻辑卷管理系统

LVM 可以理解为一层构建在物理磁盘之上的“可伸缩存储抽象层”,让磁盘管理不再受传统分区限制。

一、LVM 是什么?

LVM(Logical Volume Manager)是 Linux 上的一种逻辑卷管理机制,它通过在物理磁盘之上构建“可伸缩的逻辑卷”,从而实现更灵活的磁盘管理。

简单说,它有三大优势:

  1. 可动态调整大小(在线扩容)

无需重启、不影响业务即可扩容分区或文件系统。

  1. 跨磁盘组合

多个物理磁盘可以组合成一个逻辑卷,使存储空间利用最大化。

  1. 快照(Snapshot)能力

可对卷进行快照用于备份或临时恢复。

这些能力让 LVM 成为服务器环境、虚拟机、数据库以及需要频繁扩容的场景中的核心技术。

二、LVM 的结构组成

理解 LVM 的架构,是掌握它的第一步。

LVM 主要由三层组成:

1
物理卷(PV) → 卷组(VG) → 逻辑卷(LV)

下面逐一说明:

  1. PV(Physical Volume)物理卷

就是由物理磁盘或分区转换而来的 LVM 物理单元。

例如:

  • /dev/sdb
  • /dev/sdc1

创建 PV:

1
pvcreate /dev/sdb

  1. VG(Volume Group)卷组

多个 PV 可以组合成一个 VG,就像将几块磁盘合在一起,成为一个大的存储池。

创建 VG:

1
vgcreate myvg /dev/sdb /dev/sdc1

  1. LV(Logical Volume)逻辑卷

VG 中的空间可以被划分成多个 LV,类似于传统分区,但更灵活。

创建 LV:

1
lvcreate -L 20G -n data myvg

创建完 LV 后,就能把它当成一个“分区”来格式化、挂载:

1
2
mkfs.ext4 /dev/myvg/data
mount /dev/myvg/data /mnt/data

三、基本操作流程

下面是 LVM 最常用的工作流程,适用于扩容磁盘、创建存储空间等常见操作。

1. 创建 PV:将磁盘加入 LVM

1
2
pvcreate /dev/sdb
pvdisplay # 查看所有 PV

2. 创建 VG:把多个 PV 变成一个卷组

1
2
3
vgcreate myvg /dev/sdb
vgextend myvg /dev/sdc # 扩容 VG,加入新磁盘
vgdisplay

3. 创建 LV:划分逻辑卷空间

1
2
lvcreate -n data -L 50G myvg
lvdisplay

4. 格式化并挂载

1
2
3
mkfs.ext4 /dev/myvg/data
mkdir /data
mount /dev/myvg/data /data

四、LVM 扩容

扩容是 LVM 最大的优势。下面以将 LV 扩容 10GB 为例:

1. 扩容 LV

1
lvextend -L +10G /dev/myvg/data

2. 扩容文件系统(ext4)

1
resize2fs /dev/myvg/data

无需重启系统,无需卸载卷(在线扩容),非常适合服务器环境。

五、创建和使用快照(Snapshot)

快照是 LVM 的独特功能,可用于备份、临时复制、数据恢复等。

创建快照:

1
lvcreate -s -L 5G -n data_snap /dev/myvg/data

挂载快照:

1
mount /dev/myvg/data_snap /mnt/snap

快照保存的是卷的“差异数据”,可用于:

  • 数据备份前创建快照
  • 升级前创建快照
  • 还原错误修改

删除快照:

1
lvremove /dev/myvg/data_snap