LVM(Logical Volume Manager,逻辑卷管理)
🧠 一、LVM 基本概念
LVM 是 Linux 下的一种逻辑卷管理机制,它允许灵活地调整磁盘分区大小,而不受物理分区的限制。
1️⃣ 基本组成结构
| 组件 | 全称 | 说明 |
|---|
| PV | Physical Volume | 物理卷,实际的硬盘或分区(如 /dev/sdb1) |
| VG | Volume Group | 卷组,由多个 PV 组成的逻辑存储池 |
| LV | Logical Volume | 逻辑卷,相当于传统意义上的“分区” |
| PE | Physical Extent | PV 上的最小分配单元(默认 4MB) |
| LE | Logical Extent | LV 上的最小分配单元,与 PE 一一对应 |
⚙️ 二、LVM 基本操作流程
LVM 的创建与管理大致分为 5 步:
1
| [物理磁盘] → 创建分区 → PV → VG → LV → 格式化并挂载
|
🪜 三、操作步骤详解
(一)创建物理卷 PV
1. 查看磁盘
2. 创建分区(如果是整块磁盘可省略)
使用 fdisk /dev/sdb 或 parted /dev/sdb 创建类型为 8e(LVM)的分区。
3.创建 PV
1
| pvcreate /dev/sdb1 /dev/sdc1
|
4.查看 PV 状态
(二)创建卷组 VG
1. 创建 VG
1
| vgcreate vgdata /dev/sdb1 /dev/sdc1
|
2. 查看 VG 信息
(三)创建逻辑卷 LV
1. 创建 LV(指定大小)
1
| lvcreate -L 50G -n lvbackup vgdata
|
或按百分比创建:
1
| lvcreate -l 100%FREE -n lvbackup vgdata
|
2. 查看 LV 信息
(四)格式化与挂载
1. 格式化文件系统
1
| mkfs.ext4 /dev/vgdata/lvbackup
|
2. 创建挂载点并挂载
1
2
| mkdir /backup
mount /dev/vgdata/lvbackup /backup
|
3. 开机自动挂载
编辑 /etc/fstab:
1
| /dev/vgdata/lvbackup /backup ext4 defaults 0 0
|
🔧 四、LVM 扩容与缩容
(一)扩容逻辑卷
1. 扩大 LV 容量(+10G)
1
| lvextend -L +10G /dev/vgdata/lvbackup
|
2. 扩展文件系统(ext4 示例)
1
| resize2fs /dev/vgdata/lvbackup
|
⚠️ XFS 文件系统要用:
(二)扩展卷组 VG
如果 VG 空间不够,可以加入新的 PV:
1
| pvcreate /dev/sdd1 vgextend vgdata /dev/sdd1
|
(三)缩减逻辑卷(⚠️高风险操作)
必须先缩小文件系统,再缩小 LV!
- 检查并卸载:
1
| umount /backup e2fsck -f /dev/vgdata/lvbackup
|
- 缩小文件系统:
1
| resize2fs /dev/vgdata/lvbackup 40G
|
- 缩小 LV:
1
| lvreduce -L 40G /dev/vgdata/lvbackup
|
- 重新挂载:
🗑️ 五、删除操作
- 卸载挂载点
- 删除 LV
1
| lvremove /dev/vgdata/lvbackup
|
- 删除 VG
- 删除 PV:
1
| pvremove /dev/sdb1 /dev/sdc1
|
📊 六、常用查看命令总结
| 命令 | 功能 |
|---|
pvs, pvdisplay | 查看物理卷信息 |
vgs, vgdisplay | 查看卷组信息 |
lvs, lvdisplay | 查看逻辑卷信息 |
lvscan, vgscan, pvscan | 扫描系统中的 LVM 组件 |
lvrename, vgrename | 重命名 LV 或 VG |
lvextend, lvreduce | 扩/缩逻辑卷 |
🧩 七、LVM 快照(Snapshot)
创建逻辑卷的“时间点副本”,便于备份或测试。
1
| lvcreate -L 5G -s -n lvbackup_snap /dev/vgdata/lvbackup
|
删除快照:
1
| lvremove /dev/vgdata/lvbackup_snap
|
🧠 八、实用示例汇总
| 场景 | 命令 |
|---|
| 查看磁盘与分区 | lsblk, fdisk -l |
| 创建 PV | pvcreate /dev/sdb1 |
| 创建 VG | vgcreate vgdata /dev/sdb1 /dev/sdc1 |
| 创建 LV | lvcreate -L 100G -n lvdata vgdata |
| 格式化 | mkfs.ext4 /dev/vgdata/lvdata |
| 挂载 | mount /dev/vgdata/lvdata /data |
| 扩容 LV | lvextend -L +20G /dev/vgdata/lvdata && resize2fs /dev/vgdata/lvdata |