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_app、lv_dbdata、lv_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使用率与快照使用率(要求输出到日志文件)。