3.4.5 LVM监控、维护与故障排查
3.4.5 LVM监控、维护与故障排查#
本节聚焦LVM运行状态的观测、维护与故障修复,提供可执行命令、排错步骤与练习。
一、原理草图:LVM监控与事件流
二、环境与安装检查
- 适用软件:lvm2、device-mapper
# 检查安装
rpm -q lvm2 device-mapper
# 未安装则安装(以RHEL/CentOS为例)
yum -y install lvm2 device-mapper
# 启动并确认服务
systemctl enable --now lvm2-lvmetad
systemctl status lvm2-lvmetad
三、监控与状态查看(带命令解释)
# 资产与结构:显示PV/VG/LV的基础信息
pvs
vgs
lvs
# 自定义字段:查看设备、段类型、LV属性
lvs -a -o lv_name,vg_name,lv_size,lv_attr,segtype,devices
# 详细信息:显示元数据、UUID、PE分布
pvdisplay /dev/sdb1
vgdisplay vg_data
lvdisplay /dev/vg_data/lv_app
# 设备映射与树形结构
dmsetup ls --tree
lsblk -f
# 启用事件监控:空间不足或设备异常触发
lvchange --monitor y /dev/vg_data/lv_app
四、日常维护操作(完整流程示例)
# 1) 扫描并刷新所有LVM对象
pvscan
vgscan
lvscan
# 2) 临时将LV设置为只读(用于维护或排错)
lvchange -pr /dev/vg_data/lv_app
# 3) 恢复为可读写并激活
lvchange -ay -prw /dev/vg_data/lv_app
# 4) 迁移数据:将PE从sdb迁移到sdc(不停机)
pvmove /dev/sdb1 /dev/sdc1
# 5) 元数据备份查看
ls -l /etc/lvm/backup/
ls -l /etc/lvm/archive/
五、常见故障排查与修复(带步骤与命令)
1)PV缺失/标记为missing
- 现象:vgs中Attr包含p,LV不可用
# 查看缺失PV
vgs -o vg_name,vg_attr,vg_size,vg_free,pv_count,lv_count
pvs -o pv_name,vg_name,pv_attr,pv_size,pv_free
# 临时激活部分卷组
vgchange -ay --partial vg_data
# 更换磁盘后修复(示例)
pvcreate /dev/sdc1
vgextend vg_data /dev/sdc1
vgreduce --removemissing --force vg_data
2)VG无法激活(元数据损坏/设备路径变化)
# 尝试激活
vgchange -ay vg_data
# 从archive恢复元数据(选择最新备份)
ls /etc/lvm/archive/vg_data_*.vg
vgcfgrestore -f /etc/lvm/archive/vg_data_00012.vg vg_data
vgchange -ay vg_data
# 若设备名变化,检查lvm.conf过滤
grep -n "filter" /etc/lvm/lvm.conf
3)LV只读或挂载失败
# 检查LV状态
lvs -o lv_name,lv_attr,lv_size,vg_name
# 文件系统检查(需卸载或使用救援模式)
umount /dev/vg_data/lv_app
fsck -f /dev/vg_data/lv_app
# 重新挂载
mount /dev/vg_data/lv_app /data/app
4)快照写满导致IO异常
# 查看快照使用率
lvs -o lv_name,lv_size,origin,data_percent,vg_name
# 扩容快照(示例增加5G)
lvextend -L +5G /dev/vg_data/lv_app_snap
# 或删除快照
lvremove -y /dev/vg_data/lv_app_snap
5)扩容后文件系统未生效
# 确认LV已扩容
lvs /dev/vg_data/lv_app
# ext4在线扩容
resize2fs /dev/vg_data/lv_app
# xfs在线扩容(挂载点必须已挂载)
xfs_growfs /data/app
六、日志与诊断路径
# 常用日志
journalctl -u lvm2-lvmetad
journalctl -u lvm2-monitor
# 系统日志(适用于RHEL/CentOS)
grep -i lvm /var/log/messages
七、排障流程(步骤清单)
1. 设备层确认:lsblk -f、blkid
2. LVM层状态:pvs/vgs/lvs -a -o +devices
3. 日志与事件:journalctl -u lvm2-lvmetad
4. 激活尝试:vgchange -ay、lvchange -ay
5. 元数据恢复:vgcfgrestore
6. 文件系统检查:fsck或xfs_repair(注意挂载状态)
八、练习与验证
# 练习1:模拟PV缺失(仅在测试机)
# 停用一块PV(示例)
pvchange -an /dev/sdb1
vgs
# 恢复
pvchange -ay /dev/sdb1
vgchange -ay vg_data
# 练习2:监控快照告警
lvcreate -s -L 1G -n lv_app_snap /dev/vg_data/lv_app
lvs -o lv_name,data_percent
# 生成写入以增加快照使用率
dd if=/dev/zero of=/data/app/testfile bs=1M count=800
lvs -o lv_name,data_percent
lvremove -y /dev/vg_data/lv_app_snap
# 练习3:元数据恢复
# 在测试环境备份并模拟修改
vgcfgbackup vg_data
# 恢复到备份文件
vgcfgrestore -f /etc/lvm/backup/vg_data vg_data
九、运维规范与风险控制
- 生产变更前必须做快照或全量备份;写清回滚步骤。
- 禁止在PV底层直接格式化或更改分区表。
- lvm.conf设置合理filter,避免误识别外部存储。
- 定期清理无用快照,控制data_percent阈值告警。
- 对关键LV启用lvchange --monitor y并纳入监控系统。