快照差异传输后 btrfs 会做什么?(buttersink)

快照差异传输后 btrfs 会做什么?(buttersink)

我不确定我的问题应该有多具体,所以我会首先根据标题提出一个一般性问题,针对我认为问题出在哪里,然后描述总体情况,以防有人有其他想法:

我正在同步两组 btrfs ro 快照黄油槽通过 ssh 连接。2 个快照包含单个非常大的文件 (1.5TB) 的略微不同的版本。传输非常快,差异只有 5MB,但由于数据是在几个小时前传输的,因此 buttersink 正在执行某些操作,但尚未完成该过程。那是什么?这种行为是预期的吗?在远程端,处理能力(vserver)和磁盘 IO(CIFS 安装上的 btrfs 格式的容器文件)可能都不是很棒。

背景:我想通过相对较慢的连接进行加密的差异备份(25MBit,但与 1.5TB 的卷相比,这相当慢)。备份转到远程虚拟服务器,然后通过 CIFS 在数据中心安装备份空间。虚拟服务器不是受信任的站点,就加密而言,所有加密都必须在本地完成。所以我想出了以下计划:
1. 本地生产:BTRFS 文件系统
2. 本地备份:BTRFS 文件系统上的加密、BTRFS 格式的容器文件
3. 远程:CIFS 安装上未加密、BTRFS 格式的文件系统中的加密、BTRFS 格式的容器文件

a. 内部 BTRFS 文件系统用于从 1. 到 2 的高效本地备份:1. 已经知道更改了什么,并且可以直接将更改传输到 2.,而无需遍历巨大的 Maildir 和诸如此类的东西。b
. 外部 BTRFS 文件系统用于将容器文件高效备份到远程存储:2. 已经知道容器的哪些部分发生了更改,并且可以直接将更改传输到 3.,而无需从 1.5TB 文件中计算一堆 rsync 校验和。

现在,我在本地和远程拥有一个随机数据文件的快照,以及在本地使用加密和 btrfs 的同一个文件的快照。大约 5MB 的增量几乎立即传输(因此预期的优势得以实现),但此后,一切都停滞了。知道为什么吗?

一些预期的问答:
- “你为什么不直接使用 rsync?” - 如果我将文件 rsync 到远程位置,它们将不会被远程加密。如果我重新同步加密容器,它将计算校验和以查找不同之处。对于 1.5TB,这需要相当多的时间和处理能力。对于 CIFS 挂载和小型 vserver 的远程端来说,这尤其困难。BTRFS 已经知道有什么不同。
- “你为什么不使用 duplicity?” - Duplicity 给我留下了完整备份 + 增量。我不想保留很多增量。我了解到 duplicity 需要定期进行完整更新。我不想定期上传 1.5TB。BTRFS 将始终保持干净的状态,其中我当前的快照与我的第一个快照一样好,并且我总是可以删除中间或从头开始的任何快照。
- “你为什么不使用 encfs?” - 似乎并不完全安全:https://en.wikipedia.org/wiki/EncFS#General_security_concerns 此外,还有很多与 rsync 相同的原因。

相关内容