LVM 逻辑卷动态扩容与缩容

2026-01-06 17:27:59 397

LVM 逻辑卷动态扩容与缩容

欢迎来到8455线路检测中心技术小课堂,每天分享一个技术小知识。传统硬盘分区创建后无法灵活调整大小,给服务器后期存储扩容带来诸多不便。而 LVM(逻辑卷管理)技术通过 “物理卷 - 卷组 - 逻辑卷” 的分层架构,实现了存储空间的动态扩容、缩容与合并,无需停机即可调整分区大小,完美解决存储扩容痛点。本文聚焦 LVM 核心操作,从基础创建到扩容缩容,步骤详细可直接落地,适用于 CentOS、Ubuntu 等主流 Linux 系统。


一、核心组件概念

  • PV(物理卷):底层物理存储载体,可是整块硬盘(如 /dev/sdb)、硬盘分区(如 /dev/sdb1)或 RAID 阵列,是 LVM 的存储基础。

  • VG(卷组):将多个 PV 整合为一个 “存储池”,统一管理物理空间,逻辑卷从卷组中划分资源,屏蔽底层物理设备差异。

  • LV(逻辑卷):从 VG 中分配的可用 “虚拟分区”,可格式化后挂载使用,后续可根据需求动态调整大小。

  • PE(物理扩展):LVM 最小存储单元,默认大小为 4MB,卷组的所有物理卷都以 PE 为单位划分,逻辑卷的扩容 / 缩容本质是增减 PE 数量。


二、基础环境准备(新增一块空白硬盘 /dev/sdb)

1. 确认新硬盘状态

fdisk -l  # 查看系统识别的硬盘,确认 /dev/sdb 存在且无分区

lsblk     # 辅助查看硬盘及分区结构

2. 创建物理卷(PV)

# 初始化 /dev/sdb 为物理卷(整块硬盘直接使用,无需分区)

pvcreate /dev/sdb

# 查看 PV 状态,确认创建成功(显示 PV 名称、容量、状态等)

pvdisplay

pvs  # 简洁查看 PV 列表

3. 创建卷组(VG)

# 创建名为 vg_data 的卷组,将 /dev/sdb 加入卷组

vgcreate vg_data /dev/sdb

# 查看卷组信息(含总容量、空闲容量、PE 数量等)

vgdisplay vg_data

vgs  # 简洁查看 VG 列表

4. 创建逻辑卷(LV)并挂载使用

# 从 vg_data 卷组中划分 20G 逻辑卷,命名为 lv_data

lvcreate -L 20G -n lv_data vg_data

# 格式化逻辑卷为 ext4 文件系统(常用文件系统,支持扩容缩容)

mkfs.ext4 /dev/vg_data/lv_data

# 创建挂载点并挂载逻辑卷

mkdir -p /data

mount /dev/vg_data/lv_data /data

# 设置开机自动挂载(写入 /etc/fstab,避免重启后失效)

echo "/dev/vg_data/lv_data /data ext4 defaults 0 0" >> /etc/fstab

# 验证挂载结果(查看 /data 目录容量及挂载状态)

df -h /data

mount | grep /data


三、逻辑卷在线扩容(无需卸载)

当 /data 目录空间不足时,可通过新增硬盘或利用卷组空闲空间扩容,全程不影响业务运行。

1. 场景 1:利用卷组空闲空间扩容(卷组有未分配空间)

# 1. 查看卷组空闲容量(确认有足够空间)

vgdisplay vg_data | grep "Free  PE / Size"

# 2. 扩容逻辑卷(例:扩容到 30G,或用 +10G 表示增加 10G)

lvextend -L 30G /dev/vg_data/lv_data  # 直接指定目标容量

# lvextend -L +10G /dev/vg_data/lv_data  # 增量扩容

# 3. 同步扩容文件系统(关键步骤,让系统识别新容量)

resize2fs /dev/vg_data/lv_data  # ext4 文件系统使用该命令

# xfs_growfs /data  # 若为 xfs 文件系统,需用此命令(xfs 不支持缩容)

# 4. 验证扩容结果

df -h /data


2. 场景 2:新增硬盘扩容(卷组无空闲空间,新增 /dev/sdc 硬盘)

# 1. 初始化新硬盘为 PV

pvcreate /dev/sdc

# 2. 将新 PV 加入现有卷组 vg_data

vgextend vg_data /dev/sdc

# 3. 后续步骤同场景 1(扩容 LV + 同步文件系统)

lvextend -L 50G /dev/vg_data/lv_data

resize2fs /dev/vg_data/lv_data

df -h /data


四、逻辑卷安全缩容(需卸载,谨慎操作)

缩容风险高于扩容,必须提前备份数据,且仅支持 ext4 等文件系统(xfs 不支持缩容),操作顺序不可颠倒。

1. 备份数据(关键前置步骤)

# 示例:用 tar 备份 /data 目录数据到 /backup

mkdir -p /backup

tar -zcvf /backup/data_backup.tar.gz /data

2. 卸载逻辑卷

umount /data  # 若提示“设备正忙”,先关闭占用进程(fuser -m /data 查看进程,kill 进程号)

3. 检查文件系统完整性(避免缩容损坏数据)

e2fsck -f /dev/vg_data/lv_data  # 强制检查,必须无错误

4. 缩容文件系统(先缩文件系统,再缩 LV)

resize2fs /dev/vg_data/lv_data 10G  # 将文件系统缩容到 10G

5. 缩容逻辑卷(LV 容量需不小于文件系统实际占用容量)

lvreduce -L 10G /dev/vg_data/lv_data

6. 重新挂载并验证

mount /data

df -h /data  # 确认容量已缩为 10G

ls /data     # 验证数据未丢失


五、关键操作注意事项与故障规避

  1. 扩容顺序不可颠倒:必须先扩展逻辑卷(lvextend),再同步扩展文件系统(resize2fs),否则会导致文件系统损坏。

2.   缩容核心禁忌:xfs 文件系统仅支持扩容,不支持缩容;ext4 缩容前必须卸载并检查文件系统,且 LV 目标容量不能小于数据实际占用容量。

3.   数据安全优先:缩容前务必备份数据,避免操作失误导致数据丢失;在线扩容虽无需卸载,但建议在业务低峰期操作。

4.   设备占用处理:卸载 LV 时若提示 “设备正忙”,用 fuser -m /data 查看占用进程,通过 kill -9 进程号 关闭后再卸载,禁止强制卸载。

5.   卷组空间检查:扩容前通过 vgdisplay 确认卷组有足够空闲空间,新增硬盘需先初始化 PV 再加入卷组,避免直接扩容 LV 失败。

 

8455线路检测中心官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,8455线路检测中心整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,8455线路检测中心期待与你一起探索。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题:
XML 地图