如何逐步备份分区(而不是一堆文件)并能够挂载快照?

如何逐步备份分区(而不是一堆文件)并能够挂载快照?

是否有任何工具允许这种用例:

  1. 我有一个 LVM2 分区vg-vol
  2. 我定期创建快照,保存它们(create_new_snapshot --directory=/media/external_storage/snapshots/ --input=/dev/mapper/vg-vol_snapshot --name=qwerty),然后删除。该工具只保存更改的块。该工具不适用于 LVM,只接受单个大文件,该文件预计会与之前的此类大文件共享许多块。如果支持压缩(保留随机访问),那就太好了……
  3. 我可以挂载(使用 FUSE 或 NBD 或其他东西)任何已保存的快照,而无需在任何地方将其完全解压。

    touch /root/mountpoint
    view_external_snapshot --mountpoint=/root/mountpoint --directory=/media/external_storage/snapshots/ --name=qwerty
    mount -o loop -t reiserfs /root/mountpoint /root/tmpmnt
    

最接近的是rdiff(不是rdiff-backup),但我不确定是否可以在不先解压(rdiff patch)的情况下访问 base+delta 的内容......

其他相关的事情是。它接受大文件作为输入,压缩它,然后允许作为块设备访问。但是我不能存储增量,只能存储完整快照……

注意:问题与文件系统级备份无关(例如 duplicity、rdiff-backup、rsnapshot)。

答案1

如果您需要可靠的解决方案(而且很可能确实需要)来保护数据,请尝试 ZFS,它具有重复数据删除、透明压缩和块级镜像功能。它既有内核模块,也有适用于 Linux 的 FUSE 覆盖。

编辑:正如聊天中讨论的那样,另一种解决方案是使用 squashfs 并利​​用附加模式,使用日期目录作为基础和增量。您可以在 loopback 中挂载映像并使用 rdiff 查找实际增量。但是,我认为这会比 ZFS 方法慢得多。毕竟,像 ZFS 和 BTRFS 这样的高级文件系统就是为了填补这些空白而诞生的。

答案2

自己动手:https://github.com/vi/forsnapshotfs

它允许按顺序写入新文件(重用文件先前版本的块),使用压缩并允许挂载(使用简单的内存写时复制)此类文件。

$ fsfs-write . root_20130326          < /dev/mapper/inside-root_20130326
Completed. new: 9297920   reused: 0         hashcoll: 0     zero: 0  dblref: 0
$ fsfs-write . root_20130625 20130326 < /dev/mapper/inside-root_20130625
Completed. new: 1376582   reused: 7921338   hashcoll: 5380  zero: 0  dblref: 0

# mkdir m m2
# fsfs-mount . m
# mount -o loop,ro   m/root_20130326   m2

答案3

也可以借助布普.它似乎支持这种用例。

相关内容