3.4.3 逻辑卷扩展与缩减

3.4.3 逻辑卷扩展与缩减#

逻辑卷扩展与缩减是LVM容量管理的核心操作,必须区分在线/离线文件系统类型。通用原则:扩展先扩LV再扩文件系统;缩减先缩文件系统再缩LV

一、原理草图:LV与文件系统伸缩关系#

文章图片

二、环境准备与工具安装#

适用发行版:CentOS/RHEL/Alma/Rocky/Ubuntu
若系统未安装LVM工具:

# RHEL/CentOS/Alma/Rocky
yum -y install lvm2

# Ubuntu/Debian
apt -y install lvm2

三、扩展逻辑卷(在线推荐)#

场景:/dev/vg0/lv_data 从 50G 扩到 70G,挂载点 /data

1)检查VG剩余空间

vgs
vgdisplay vg0

2)扩展LV并自动扩文件系统

# 推荐一体化扩展(自动扩文件系统)
lvextend -r -L +20G /dev/vg0/lv_data

# 预期输出示例(关键行)
# Size of logical volume vg0/lv_data changed from 50.00 GiB to 70.00 GiB
# Filesystem on /dev/vg0/lv_data is now 70.00 GiB

3)手动扩文件系统(可选)

# ext4
resize2fs /dev/vg0/lv_data

# xfs(必须使用挂载点)
xfs_growfs /data

4)验证结果

df -h /data
lvs -a -o +devices /dev/vg0/lv_data

命令解释
- lvextend -L +20G:在原有基础上增加20G。
- -r:自动执行文件系统扩容。
- xfs_growfs:XFS只能扩展,不支持缩减。

四、缩减逻辑卷(高风险,需离线)#

前提:文件系统为ext4;XFS不支持缩减。

示例:将 /dev/vg0/lv_data 缩到 40G

# 1. 业务停机并卸载
umount /data

# 2. 强制检查文件系统(必须)
e2fsck -f /dev/vg0/lv_data

# 3. 先缩文件系统
resize2fs /dev/vg0/lv_data 40G

# 4. 再缩LV
lvreduce -L 40G /dev/vg0/lv_data

# 5. 重新挂载并确认
mount /dev/vg0/lv_data /data
df -h /data

命令解释
- e2fsck -f:强制检查并修复ext4,缩减前必须执行。
- resize2fs 40G:把文件系统缩到目标大小或更小。
- lvreduce -L 40G:缩减逻辑卷到40G。

五、常见报错与排查#

1)扩容后容量不变

# 可能忘记扩文件系统
lsblk -f
df -h /data

解决:执行 resize2fsxfs_growfs

2)缩减失败提示“Device is busy”

lsof /data
fuser -m /data

解决:停止占用进程并卸载挂载点。

3)VG空间不足

vgs
# 若VFree为0,需要新增PV并扩VG
pvcreate /dev/sdb
vgextend vg0 /dev/sdb

六、完整演练:新增磁盘扩容LV#

# 1. 新增磁盘 /dev/sdb 并初始化为PV
pvcreate /dev/sdb

# 2. 扩VG
vgextend vg0 /dev/sdb

# 3. 扩LV并自动扩文件系统
lvextend -r -l +100%FREE /dev/vg0/lv_data

# 4. 校验
vgs
df -h /data

七、练习#

1) 创建一个20G的LV并挂载到 /data,然后扩到30G(要求在线扩容)。
2) 在ext4文件系统上演示缩减到15G(需写出完整步骤)。
3) 通过新增磁盘扩容VG,再将LV扩大并验证。

提示:练习前可先用快照或备份验证回滚流程,避免数据丢失。