由于需要备份许多大型 Xen 稀疏映像文件,我正在寻找一种既节省磁盘空间(使用 duplicity、bup、rsync、womble 的 lvmsync 等差异工具节省空间)又节省磁盘/网络带宽的方法。不幸的是,空间和带宽要求使我刚才提到的工具无法使用,因为它们将扫描文件的整个内容以查找源和目标之间的差异。
因此,我想避免以下陷阱:
盲目复制整个文件
对整个文件进行密集扫描以生成校验和以供比较
同一卷上的数据的冗余副本(由于 COW 或其他特性)——并且这必须同时适用于源卷和目标卷。
系统正常使用期间性能显著下降
搜索确实让我找到了一个很酷的例子,它满足了上述所有条件……OS X Time Machine 使用时稀疏束作为源卷。哦,好吧,这在 Linux 上行不通。但有趣的是,sparsebundle 中各个“band”文件的 mtime 可以多么简单地告诉您自上次备份以来哪些位已被修改 - 几乎无需任何努力即可立即完成。由于 band 长度为 4MB,因此空间节省并不完美,但仍然非常好。
最后,在使用精简配置逻辑卷时,我遇到了精简配置测试套件,其中包括使用 Thinp 分配数据的示例用于快速差异备份。我以为我找到了解决方案……只需将图像放在薄 LV 上并使用快照!
但后来我意识到这会占用源卷的太多空间并降低其速度。普通 LV 仅供短期使用。
我仍然想知道是否有一些脚本或巧妙的配置选项可以使快照逻辑卷像“幻影”快照一样运行:它只会记录与已修改块相关的块分配数据,而不会对数据块本身进行写时复制。备份脚本可以读取此幻影快照,并立即找出给定 LV 的已修改块。(我猜有些人会称之为日志。)备份成功完成后,它可以删除现有的幻影快照并创建一个新的快照来保存下一次差异备份的修改信息。
解决方案不一定需要 LVM,但以这种方式思考解决方案可以让我以更可靠的形式呈现所需的解决方案。一定有某种方法可以在 Linux 上达到这种级别的备份效率。