LVM(Logical Volume Manager,逻辑卷管理)是 Linux 系统中非常强大的磁盘管理工具。它的核心逻辑就像“搭积木”:先将物理磁盘化整为零(PV),再合零为整(VG),最后按需分配(LV)。
为了方便记忆,我们可以按照 PV(物理卷)→ VG(卷组)→ LV(逻辑卷) 的层级结构来总结常用命令。
1. 基础创建流程(从零开始)
如果你有一块新硬盘 /dev/sdb,想要创建一个名为 data_lv 的逻辑卷:
| 步骤 | 命令 | 说明 |
|---|---|---|
| 第一步:创建 PV | pvcreate /dev/sdb |
将物理硬盘初始化为 LVM 成员 |
| 第二步:创建 VG | vgcreate data_vg /dev/sdb |
创建一个名为 data_vg 的存储池 |
| 第三步:创建 LV | lvcreate -L 10G -n data_lv data_vg |
从池中划分 10G 空间给 data_lv |
| 第四步:格式化 | mkfs.ext4 /dev/data_vg/data_lv |
格式化后才能挂载使用 |
2. 扩容操作(最常用)
LVM 最大的优势就是可以在线扩容(无需卸载磁盘)。
A. 场景:卷组(VG)空间充足
直接给逻辑卷(LV)加点肉:
- 增加指定大小:
lvextend -L +5G /dev/data_vg/data_lv - 按百分比分配(如:剩余全部空间):
lvextend -l +100%FREE /dev/data_vg/data_lv - 关键一步(同步文件系统):
- 如果是 ext4:
resize2fs /dev/data_vg/data_lv - 如果是 xfs:
xfs_growfs /挂载点 - 小技巧: 在
lvextend命令后加上-r参数,可以自动调整文件系统大小。
B. 场景:卷组(VG)空间也用完了
需要加入新硬盘 /dev/sdc:
pvcreate /dev/sdcvgextend data_vg /dev/sdc(把新硬盘扩充到池子里)- 然后再执行上面的 LV 扩容步骤。
3. 缩减空间(高风险)
注意: > 1. XFS 文件系统不支持缩减!
2. 必须先卸载(umount)磁盘,且必须先缩减文件系统,再缩减 LV。数据无价,操作前请务必备份。
以 ext4 为例,将 10G 缩减到 5G:
- 卸载:
umount /dev/data_vg/data_lv - 检查磁盘:
e2fsck -f /dev/data_vg/data_lv - 缩减文件系统:
resize2fs /dev/data_vg/data_lv 5G - 缩减 LV:
lvreduce -L 5G /dev/data_vg/data_lv - 重新挂载:
mount /dev/data_vg/data_lv /mnt
4. 查看与监控
这些命令可以让你随时掌握存储的使用情况:
- 简略摘要:
pvs,vgs,lvs - 详细状态:
pvdisplay,vgdisplay,lvdisplay - 查看扫描:
pvscan,vgscan(用于发现系统新识别的 LVM 卷)
5. 删除操作
删除顺序与创建顺序相反:
- 卸载挂载点:
umount /mnt - 删除 LV:
lvremove /dev/data_vg/data_lv - 删除 VG:
vgremove data_vg - 删除 PV:
pvremove /dev/sdb
避坑小贴士
- 起名要规范: 建议 VG 以
_vg结尾,LV 以_lv结尾,这样在/dev/下一眼就能认出来。 - 扩容先看 VG: 扩容 LV 之前先用
vgs看一眼VFree(剩余空间)够不够,不够就得先扩 VG。 - 快照功能: LVM 还可以创建快照(
lvcreate -s),这是更新系统或做实验前的“后悔药”。