LVM(Logical Volume Manager)是Linux服务器运维中管理磁盘存储的核心工具。相比传统分区,LVM支持卷的在线动态扩容、跨物理磁盘整合、快照备份等功能,在云服务器和物理机架设场景中几乎成为标准配置。生产环境中数据库存储、日志分区、Docker数据目录等经常需要动态扩容,LVM可以在不中断服务的情况下完成扩容操作。
LVM三层架构:物理卷PV、卷组VG、逻辑卷LV
LVM将物理磁盘抽象为三层结构。物理卷(PV)是底层物理分区或整块磁盘的封装,卷组(VG)将多个PV组成一个存储池,逻辑卷(LV)从VG中分配空间创建可挂载的卷。这种架构使得空间分配不受物理磁盘边界限制。
# 查看当前磁盘和分区情况
lsblk
fdisk -l
# 场景:新增一块100GB磁盘/dev/sdb,创建LVM并挂载到/data
# 第一步:创建物理卷
pvcreate /dev/sdb
pvdisplay
# 第二步:创建卷组
vgcreate vg_data /dev/sdb
vgdisplay
# 第三步:创建逻辑卷,分配全部空间
lvcreate -l 100%FREE -n lv_data vg_data
lvdisplay
逻辑卷格式化与挂载配置
创建LV后需要格式化文件系统并挂载:
# 格式化为ext4
mkfs.ext4 /dev/vg_data/lv_data
# 格式化为xfs(CentOS/RHEL默认,支持在线扩容)
mkfs.xfs /dev/vg_data/lv_data
# 创建挂载点并挂载
mkdir -p /data
mount /dev/vg_data/lv_data /data
# 写入fstab实现开机自动挂载
# 获取LV的UUID
blkid /dev/vg_data/lv_data
# 编辑/etc/fstab
# UUID=xxxx-xxxx-xxxx /data xfs defaults 0 0
逻辑卷在线扩容:不停服务增加存储空间
场景一:VG内剩余空间充足,直接扩展LV
# 查看VG剩余空间
vgs
# 假设vg_data还有50GB剩余空间,给lv_data增加30GB
lvextend -L +30G /dev/vg_data/lv_data
# ext4文件系统在线扩容
resize2fs /dev/vg_data/lv_data
# xfs文件系统在线扩容
xfs_growfs /data
场景二:VG空间不足,新增磁盘加入VG后扩展LV
# 新增磁盘/dev/sdc,先创建PV
pvcreate /dev/sdc
# 将新PV加入现有VG
vgextend vg_data /dev/sdc
# 确认VG空间已增加
vgs
# 扩展LV使用全部新增空间
lvextend -l 100%FREE /dev/vg_data/lv_data
# 扩展文件系统
xfs_growfs /data
# 验证扩容结果
df -h /data
lvs
LVM快照:零停机数据备份方案
LVM快照创建时只记录元数据,不立即拷贝数据。当原始卷数据变更时,变更前的块通过写时复制(Copy-On-Write)保存到快照卷。这种方式下创建快照几乎瞬时完成,适合数据库热备份:
# 创建快照卷,大小为原LV的10%-20%(取决于备份期间预计变更量)
lvcreate -L 10G -s -n lv_data_snapshot /dev/vg_data/lv_data
# 挂载快照进行备份
mkdir -p /mnt/snapshot
mount /dev/vg_data/lv_data_snapshot /mnt/snapshot
# 使用rsync或tar备份快照数据
rsync -avz /mnt/snapshot/ /backup/data_$(date +%Y%m%d)/
# 备份完成后移除快照
umount /mnt/snapshot
lvremove -f /dev/vg_data/lv_data_snapshot
LVM条带化与镜像:性能与冗余配置
多个物理磁盘组成的VG可以配置条带化(striping)提升I/O性能,或配置镜像(mirroring)提升数据冗余:
# 条带化创建LV(跨2个PV,条带大小64KB)
lvcreate -i 2 -I 64 -L 100G -n lv_striped vg_data
# 镜像创建LV(2副本,类似RAID1)
lvcreate -m 1 -L 50G -n lv_mirrored vg_data
# 查看LV详细布局
lvs -a -o name,devices,stripes,segtype
LVM运维常见故障排查
VG丢失或PV失效恢复
磁盘故障或UUID变更可能导致PV丢失。恢复流程:
# 查看VG状态
vgscan
vgdisplay
# 如果VG显示为partial,尝试恢复
vgreduce --removemissing vg_data
# 如果PV的UUID变更(如磁盘克隆后),修复
pvdisplay
# 找到冲突的PV,重新设置UUID
pvchange -u /dev/sdb
逻辑卷无法激活排查
# 尝试激活LV
lvchange -ay /dev/vg_data/lv_data
# 查看详细错误
lvchange -ay -v /dev/vg_data/lv_data
# 如果快照空间耗尽导致LV不可用
# 快照使用率100%时自动失效,需删除后重建
lvs -a
lvremove -f /dev/vg_data/lv_data_snapshot
LVM与文件系统扩容注意事项
ext4和xfs都支持在线扩容,但只有ext4支持在线缩容(需卸载后操作)。xfs不支持缩容,如需减小LV空间需先备份、删除LV、重建。
扩容操作顺序固定为:先扩展LV(lvextend),再扩展文件系统(resize2fs/xfs_growfs)。反向操作会导致文件系统数据损坏。
生产环境中建议为VG预留10%-15%的未分配空间,用于快照和紧急扩容。监控VG剩余空间的脚本可以集成到Prometheus或Zabbix告警体系中,当剩余空间低于阈值时自动通知运维人员处理。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-lvm-luo-ji-juan-guan-li-yu-ci-pan-dong-tai/