LVM快照结合文件系统特性可实现原子级一致备份:一、创建只读快照并校验挂载;二、冻结文件系统后创建快照;三、用dmsetup直接映射块设备备份;四、rsync增量同步至远程存储。

如果您希望在Linux系统中实现快速、一致的备份,LVM快照结合文件系统特性可提供原子级的一致性视图。以下是基于LVM逻辑卷管理器与底层文件系统协同工作的快照备份操作思路:
一、创建LVM快照并挂载为只读备份源
LVM快照利用写时复制(COW)机制,在原始逻辑卷数据未被修改前保留其某一时刻的块级状态,配合文件系统一致性(如ext4的journal已提交、XFS的log已刷盘),可确保快照内文件系统结构完整可用。
1、确认目标逻辑卷处于活动状态且所属卷组有足够剩余空间(建议预留≥20%原始LV大小的空间用于快照写入)。
2、执行命令创建只读快照逻辑卷:lvcreate -L 5G -s -n snap_backup /dev/vg0/lv_root(其中5G为快照大小,vg0为卷组名,lv_root为原逻辑卷名)。
3、使用e2fsck -f /dev/vg0/snap_backup(ext4)或xfs_repair -n /dev/vg0/snap_backup(XFS)验证快照内文件系统无结构性错误。
4、创建挂载点并以只读方式挂载快照:mkdir /mnt/snap && mount -o ro /dev/vg0/snap_backup /mnt/snap。
二、冻结文件系统后创建LVM快照
对于不支持在线一致性校验或存在高IO写入风险的场景,可先暂停文件系统写入,再创建快照,从而规避COW期间元数据变更导致的潜在不一致。
1、对ext4文件系统执行冻结:tune2fs -O journal=none /dev/vg0/lv_root && e2fsck -f /dev/vg0/lv_root(仅限离线操作,需提前卸载)。
2、若为XFS文件系统且运行于已挂载状态,执行:xfs_freeze -f /mount/point(冻结用户空间写入)。
3、立即执行LVM快照创建:lvcreate -L 3G -s -n frozen_snap /dev/vg0/lv_root。
4、解冻文件系统:xfs_freeze -u /mount/point(XFS);ext4无需解冻,但需重新启用日志:tune2fs -j /dev/vg0/lv_root。
三、使用dmsetup直接映射快照设备进行裸设备备份
绕过文件系统挂载层,通过device-mapper接口直接访问快照设备,适用于需要块级镜像、加密导出或跨平台恢复的场景,避免挂载引发的权限与编码解析干扰。
1、查询快照设备主次设备号:dmsetup info -c | grep snap_backup。
2、获取对应/dev/mapper路径:ls -l /dev/mapper/ | grep snap_backup。
3、使用dd执行零压缩块拷贝:dd if=/dev/mapper/vg0-snap_backup of=/backup/lv_root.snap bs=1M conv=noerror,sync。
4、校验快照设备完整性:md5sum /dev/mapper/vg0-snap_backup 与 md5sum /backup/lv_root.snap 比对。
四、结合rsync同步快照挂载内容至远程存储
在快照挂载后,利用rsync增量同步能力,将只读文件树高效传输至NFS、SSH或S3兼容存储,兼顾一致性与带宽利用率,适合周期性备份策略。
1、确保远程目标目录可写且SSH密钥已配置免密登录(若使用ssh协议)。
2、执行归档同步命令:rsync -aHAX --delete-after --numeric-ids /mnt/snap/ user@backup-server:/backup/linux-root-$(date +\%Y\%m\%d)/。
3、添加--exclude参数跳过临时文件与缓存目录:--exclude='/tmp/' --exclude='/var/cache/' --exclude='/proc/' --exclude='/sys/'。
4、同步完成后卸载快照:umount /mnt/snap,随后删除快照卷:lvremove -f /dev/vg0/snap_backup。










