3.4.6 LVM最佳实践与常见场景

3.4.6 LVM最佳实践与常见场景#

LVM适合需要在线扩容、快照回滚、磁盘迁移与存储规划的场景。生产环境推荐遵循“容量规划优先、变更可回滚、监控可视化、操作可审计”的原则。

原理草图(LVM层次)

文章图片

安装与初始化示例(含命令解释)

适用发行版:RHEL/CentOS/Rocky/Alma

# 1) 安装LVM工具
yum -y install lvm2

# 2) 查看磁盘
lsblk

# 3) 创建PV(将 /dev/sdb /dev/sdc 变为物理卷)
pvcreate /dev/sdb /dev/sdc

# 4) 创建VG(卷组名为 vg_data)
vgcreate vg_data /dev/sdb /dev/sdc

# 5) 创建LV(逻辑卷大小 100G)
lvcreate -n lv_app -L 100G vg_data

# 6) 创建文件系统并挂载
mkfs.xfs /dev/vg_data/lv_app
mkdir -p /data
mount /dev/vg_data/lv_app /data

# 7) 开机自动挂载
echo "/dev/vg_data/lv_app /data xfs defaults 0 0" >> /etc/fstab

最佳实践与命令示例
- 卷组规划:按业务划分VG(系统/数据库/日志),避免过大VG导致管理复杂。
- PV一致性:尽量同类型磁盘构成VG,减少性能不均。
- PE大小选择:小文件、高灵活场景选小PE;大容量选大PE减少元数据。
- 命名规范:如 vg_applv_dbdatalv_logs
- 在线扩容流程(LV→FS)

# 1) 新增磁盘并加入VG
pvcreate /dev/sdd
vgextend vg_data /dev/sdd

# 2) 扩展逻辑卷 +20G
lvextend -L +20G /dev/vg_data/lv_app

# 3) 扩展文件系统(xfs)
xfs_growfs /data

# 4) 验证
df -h /data
  • 快照策略(短期回滚)
# 创建快照(10G)
lvcreate -s -n lv_app_snap -L 10G /dev/vg_data/lv_app

# 查看快照使用率
lvs -a -o +seg_monitor,devices,lv_size,data_percent,metadata_percent

# 回滚(需卸载或进入维护)
umount /data
lvconvert --merge /dev/vg_data/lv_app_snap
mount /data
  • 元数据备份
# 备份卷组元数据
vgcfgbackup vg_data

# 查看备份文件
ls -l /etc/lvm/backup/vg_data
  • 迁移与替换磁盘(无停机)
# 将 /dev/sdb 上的数据迁移到 /dev/sdd
pvmove /dev/sdb /dev/sdd

# 移除旧PV
vgreduce vg_data /dev/sdb
pvremove /dev/sdb

常见场景与做法(可执行示例)
1) 应用数据扩容

# 场景:/data 空间不足
pvcreate /dev/sde
vgextend vg_data /dev/sde
lvextend -L +50G /dev/vg_data/lv_app
xfs_growfs /data

2) 数据库存储优化(数据/日志分离)

# 创建两个LV
lvcreate -n lv_dbdata -L 200G vg_data
lvcreate -n lv_dblogs -L 50G vg_data

# 格式化并挂载
mkfs.ext4 /dev/vg_data/lv_dbdata
mkfs.ext4 /dev/vg_data/lv_dblogs
mkdir -p /data/db /data/logs
mount /dev/vg_data/lv_dbdata /data/db
mount /dev/vg_data/lv_dblogs /data/logs

3) 升级回滚(快照)

# 变更前创建快照
lvcreate -s -n lv_app_snap -L 15G /dev/vg_data/lv_app

# 验证失败后回滚
umount /data
lvconvert --merge /dev/vg_data/lv_app_snap
mount /data

排错与诊断
- VG/LV状态

vgs -o +vg_free,vg_size
lvs -a -o +devices,seg_monitor,data_percent,metadata_percent
pvs -o +pv_used,pv_free
  • 快照写满导致I/O异常
    现象:业务卡顿、I/O错误、快照data_percent≈100%
    处理:
# 立即扩快照空间
lvextend -L +5G /dev/vg_data/lv_app_snap
# 或删除快照(谨慎)
lvremove /dev/vg_data/lv_app_snap
  • PV丢失/状态不一致
# 查看PV状态
pvs
# 检查VG元数据
vgcfgrestore -l vg_data

常见误区
- 快照长期保留导致性能下降、空间不可控。
- 频繁缩容与在线缩小文件系统,风险高。
- VG空间用尽未预留扩展空间。
- 不做元数据备份导致故障难恢复。

练习
1) 使用两块虚拟磁盘创建VG和LV,挂载到 /data
2) 对LV扩容 10G,并验证文件系统容量变化。
3) 创建快照,模拟删除文件后回滚恢复。
4) 使用 pvmove 迁移一块磁盘的数据并移除旧盘。
5) 编写脚本输出VG/LV使用率与快照使用率(要求输出到日志文件)。