LVM快照本身不是备份,但能实现零停机、强一致的备份窗口;需确保目标目录挂载于LVM逻辑卷、卷组有足够空闲PE、已安装lvm2包,并配合数据库锁表(如MySQL执行FLUSH TABLES WITH READ LOCK)保障一致性。

确认系统是否支持快照
不是所有逻辑卷都能打快照,得先看底层结构是否就位:
- 目标数据目录(如 /var/lib/mysql)必须挂载在 LVM 逻辑卷上,运行
df -h /path查设备名,输出应类似/dev/mapper/vgdata-mysql_lv - 该逻辑卷所属的卷组(VG)要有空闲 PE,执行
vgdisplay vgname | grep "Free PE",至少预留 512 个 PE(约 2GB) - 确保已安装
lvm2包,内核启用 LVM 支持(主流发行版默认满足,但精简镜像或容器宿主机可能需手动检查)
数据库写入必须协调
LVM 只冻结块设备状态,不感知事务。直接打快照,很可能捕获到半写入的页或未刷盘的 WAL。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
MySQL:用
FLUSH TABLES WITH READ LOCK→ 立即创建快照 →UNLOCK TABLES,锁表时间通常 -
PostgreSQL:调用
pg_start_backup('label')→ 创建快照 →pg_stop_backup(),确保归档日志同步完成 - 静态文件(如网站代码、配置目录):可短暂停服务,或用
rsync --delete-after配合快照,避免长时中断
快照空间要算准,不能靠感觉
空间不足不会报错,而是快照自动变为 inactive,备份立刻失效。
- 公式:快照大小 =(每秒平均写入量 × 备份耗时)× 1.5
- 举例:MySQL 每秒写 3MB,
rsync拷贝预计 6 分钟(360 秒),则最小需 3 × 360 × 1.5 ≈ 1620MB → 建议设为 2G - 冷备场景也要考虑后台写(audit 日志、socket 文件、临时表),最低按源 LV 容量的 3%~5% 配置,且不小于 1G
- 创建后立即运行
lvs -o +data_percent监控,占用超 85% 就得处理(删快照或扩容)
挂载、备份、清理必须闭环
快照是只读指针,不挂载就无法读取;不清理就会持续占用空间并拖慢 I/O。
- 新建挂载点:
mkdir -p /mnt/snap_mysql - 强制只读挂载(防 UUID 冲突):
mount -o ro,nouuid /dev/vgdata/mysql_snap_20260708 /mnt/snap_mysql - 执行备份(保留权限与扩展属性):
tar --acls --xattrs -cf /backup/mysql_full_$(date +\%F_\%H%M).tar -C /mnt/snap_mysql . - 备份完成后立刻卸载:
umount /mnt/snap_mysql - 验证 tar 包可用后再删除:
lvremove /dev/vgdata/mysql_snap_20260708(此操作不可逆)

















