3.4.4 快照与备份恢复

LVM快照用于在不停机情况下冻结某一时间点的逻辑卷状态,适合短期备份与一致性校验。快照采用写时复制(COW),源卷发生写入时,原数据块会先复制到快照卷,快照空间耗尽会导致快照失效甚至影响业务写入,因此需评估写入量并监控使用率。

原理草图(COW流程与快照空间):

文章图片

安装与准备:
- 发行版可能默认已包含lvm2,若缺失需安装。

# 安装lvm2(RHEL/CentOS)
yum install -y lvm2

# 安装lvm2(Ubuntu/Debian)
apt-get update && apt-get install -y lvm2

# 查看现有LV
lvs -a -o+devices

快照创建与查看(示例含命令解释):

# 1) 创建快照:-s 表示快照,-L 预留快照空间,-n 快照名
lvcreate -s -L 5G -n data_snap /dev/vg0/data

# 2) 查看快照状态:关注 Data% / Snap%
lvs -a -o lv_name,lv_size,origin,data_percent,metadata_percent,lv_attr

# 3) 详细信息:显示快照归属与使用率
lvdisplay /dev/vg0/data_snap

预期效果:
- Origin 显示源卷名称
- Data%/Snap% 接近 100% 表示快照即将耗尽

一致性与备份流程(以文件系统/数据库为例):

# 1) 业务一致性(示例:MySQL)
# 建议使用锁表或停写窗口,避免不一致备份
mysql -uroot -p -e "FLUSH TABLES WITH READ LOCK;"

# 2) 创建快照
lvcreate -s -L 5G -n data_snap /dev/vg0/data

# 3) 解锁业务
mysql -uroot -p -e "UNLOCK TABLES;"

# 4) 挂载快照并备份
mkdir -p /mnt/data_snap
mount -o ro /dev/vg0/data_snap /mnt/data_snap

# 5) 执行备份(示例:tar)
tar -czf /backup/data_$(date +%F).tar.gz -C /mnt/data_snap .

# 6) 卸载并删除快照
umount /mnt/data_snap
lvremove -y /dev/vg0/data_snap

卷级回滚(merge)恢复示例:

# 1) 确保源卷未挂载(或进入维护模式)
umount /dev/vg0/data

# 2) 合并快照到源卷(回滚至快照时间点)
lvconvert --merge /dev/vg0/data_snap

# 3) 重新激活并挂载
lvchange -ay /dev/vg0/data
mount /dev/vg0/data /data

灾难恢复(在新卷上恢复备份):

# 1) 创建新LV并格式化
lvcreate -L 100G -n data_new /dev/vg0
mkfs.xfs /dev/vg0/data_new

# 2) 挂载并恢复备份
mkdir -p /data_new
mount /dev/vg0/data_new /data_new
tar -xzf /backup/data_2024-01-01.tar.gz -C /data_new

# 3) 更新/etc/fstab并重启相关服务
echo "/dev/vg0/data_new /data xfs defaults 0 0" >> /etc/fstab

排错与诊断:

# 快照耗尽:查看使用率
lvs -a -o lv_name,data_percent,metadata_percent,lv_attr

# 快照空间不足:扩容快照(需要VG有可用空间)
lvextend -L +2G /dev/vg0/data_snap

# 快照失效:查看内核日志
dmesg | tail -n 50

# 发现快照导致性能下降:缩短快照生命周期/避开高峰

命令解释速查:
- lvcreate -s:创建快照
- -L 5G:指定快照空间大小(与写入变化量相关)
- lvconvert --merge:将快照合并回源卷
- lvs -o data_percent:查看快照数据占用率

最佳实践要点:
- 快照仅用于短期备份或一致性校验,避免长期保存。
- 高写入场景需要更大快照空间并缩短保留时间。
- 快照期间I/O性能下降,建议在低峰期执行。

练习:
1. 创建一个5G的LV并写入随机数据,创建2G快照,观察Data%变化。
2. 在快照挂载点修改文件后验证源卷不变(只读快照)。
3. 模拟误删除文件,使用备份恢复到新卷并切换挂载。