Linux服务器LVM逻辑卷管理与磁盘在线扩容实战操作指南

服务器磁盘空间不足是运维工作中最常见的告警类型之一。传统分区方案在空间耗尽后需要停机、重建分区、恢复数据,操作风险高且业务中断时间长。LVM(Logical Volume Manager)通过在物理磁盘和文件系统之间引入逻辑卷抽象层,支持在线扩容、快照备份和跨磁盘条带化,是Linux服务器存储管理的标准方案。本文以CentOS/RHEL 8+环境为例,完整演示LVM的创建、扩容、缩减和快照操作。

LVM三层架构与核心概念

LVM的存储管理分为三层:物理卷(PV, Physical Volume)、卷组(VG, Volume Group)和逻辑卷(LV, Logical Volume)。

物理卷是LVM的基础,由磁盘或磁盘分区初始化而来。创建PV后,磁盘空间被划分为固定大小的物理扩展块(PE, Physical Extent),默认4MB。PE是LVM寻址的最小单位。

卷组由一个或多个PV组成,相当于一个存储池。VG将底层的PV空间统一管理,上层的LV从VG中分配空间。VG可以动态添加或移除PV,实现存储容量的弹性伸缩。

逻辑卷从VG中分配空间,对上层文件系统提供块设备接口。LV可以在不停机的情况下动态扩展或缩减,这是LVM相比传统分区的核心优势。

创建LVM逻辑卷完整流程

以下操作以新加一块/dev/sdb磁盘(100GB)为例,创建一个50GB的逻辑卷并挂载到/data目录。

# 1. 创建物理卷
pvcreate /dev/sdb

# 2. 创建卷组datavg,PE大小设为32MB
vgcreate -s 32M datavg /dev/sdb

# 3. 创建逻辑卷datalv,分配50GB
lvcreate -L 50G -n datalv datavg

# 4. 格式化为xfs文件系统
mkfs.xfs /dev/datavg/datalv

# 5. 创建挂载点并挂载
mkdir /data
mount /dev/datavg/datalv /data

# 6. 写入fstab实现开机自动挂载
echo "/dev/datavg/datalv /data xfs defaults 0 0" >> /etc/fstab

验证各层状态:

# 查看物理卷
pvdisplay

# 查看卷组
vgdisplay

# 查看逻辑卷
lvdisplay

# 查看PE使用情况
pvdisplay -m /dev/sdb

逻辑卷在线扩容操作

当/data空间不足时,可以从VG剩余空间中追加分配,也可以先给VG添加新磁盘再扩容LV。两种方式都支持在线操作,无需卸载文件系统。

场景一:VG有剩余空间,直接扩容LV。

# 查看VG剩余空间
vgdisplay datavg | grep "Free"

# 扩容LV增加20G
lvextend -L +20G /dev/datavg/datalv

# 在线扩展xfs文件系统
xfs_growfs /data

# ext4文件系统用resize2fs
# resize2fs /dev/datavg/datalv

场景二:VG剩余空间不足,先添加新磁盘/dev/sdc到VG。

# 创建新PV
pvcreate /dev/sdc

# 将新PV加入已有VG
vgextend datavg /dev/sdc

# 扩容LV到80G(指定绝对大小)
lvextend -L 80G /dev/datavg/datalv

# 扩展文件系统
xfs_growfs /data

lvextend命令的-L参数支持+50G(增量)和50G(绝对值)两种写法。-l参数使用LE数量分配空间,如-l 100%FREE表示使用VG全部剩余空间。

LVM快照创建与数据备份

LVM快照是CoW(Copy-on-Write)机制的只读副本,创建瞬间完成,不复制原始数据,只在原始数据被修改时才将旧数据拷贝到快照区。快照适用于一致性备份、临时测试环境创建等场景。

# 创建快照,分配5G CoW空间
lvcreate -L 5G -s -n datalv_snap /dev/datavg/datalv

# 挂载快照查看数据
mkdir /mnt/snap
mount /dev/datavg/datalv_snap /mnt/snap

# 通过快照备份数据
tar -czf /backup/data_backup_$(date +%F).tar.gz -C /mnt/snap .

# 备份完成后删除快照
umount /mnt/snap
lvremove -f /dev/datavg/datalv_snap

快照CoW空间的大小取决于快照存活期间原始卷的数据变更量。如果CoW空间耗尽,快照将失效(变为INVALID状态)。生产环境建议快照CoW空间设为原始卷的10%-20%,且快照存活时间尽量短。

逻辑卷缩减与注意事项

xfs文件系统不支持在线缩减。如果需要缩减LV,必须先备份数据、重建文件系统。ext4支持在线缩减,但操作风险较高,生产环境不建议执行缩减操作。

ext4缩减操作参考(谨慎执行):

# 1. 卸载文件系统
umount /data

# 2. 强制fsck检查
e2fsck -f /dev/datavg/datalv

# 3. 缩减ext4文件系统到40G
resize2fs /dev/datavg/datalv 40G

# 4. 缩减LV到40G(必须先缩减文件系统再缩减LV)
lvreduce -L 40G /dev/datavg/datalv

# 5. 重新挂载
mount /dev/datavg/datalv /data

顺序不能颠倒:必须先缩减文件系统,再缩减LV。如果先缩减LV,文件系统的超级块会指向已被截断的区域,导致数据损坏。lvreduce命令默认会弹出确认提示,操作前务必确认目标LV路径正确。

VG迁移与PV移除操作

当某块磁盘出现坏道需要更换时,可以将该PV上的数据迁移到VG中的其他PV,然后安全移除。前提是VG中其他PV有足够的剩余空间。

# 查看各PV使用情况
pvdisplay -m

# 将/dev/sdb上的数据迁移到同VG其他PV
pvmove /dev/sdb

# 迁移完成后从VG移除PV
vgreduce datavg /dev/sdb

# 移除PV标记
pvremove /dev/sdb

pvmove过程中数据迁移是在线进行的,业务不中断。如果剩余空间不足以容纳迁移数据,需要先添加新PV到VG,再执行pvmove。迁移期间IO性能会有所下降,建议在低峰期执行。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-lvm-luo-ji-juan-guan-li-yu-ci-pan-zai-xian/

(0)
小编小编
上一篇 15小时前
下一篇 15小时前

相关推荐