在备份场景中使用 btrfs 快照相对于 rsnapshot 有何优势

在备份场景中使用 btrfs 快照相对于 rsnapshot 有何优势

目前,我使用 rsnapshot 将数据从一个加密的 ext4 驱动器备份到另一个。我的系统在每个驱动器上打开一个 LUKS 容器,并根据每小时的计划运行 rsnapshot。我对 btrfs 的内置快照功能很感兴趣,我很好奇它是否可以用来代替我当前的设置(当然假设我重新格式化驱动器)。是否有任何我没有意识到的明显问题?我当前的设置可以通过使用 btrfs 进行改进吗?例如,它是否更快?

答案1

btrfs 是一种写时复制文件系统,具有许多功能(如错误检测和纠正、透明压缩、快照、子卷等),使其比传统文件系统慢。

然而,btrfs 快照非常轻量级,几乎不需要时间即可制作。使用btrfs send ... | btrfs receive(或) 比使用或或任何其他需要比较发送方和接收方文件的方法btrfs send | ssh remote_host btrfs receive要快得多。rsyncrsnapshot

发送快照时不需要进行这些文件比较,因为一个快照与另一个快照之间的确切差异是已知的(它们是快照所固有的),因此更改的块可以作为连续的二进制流发送到接收器 - 否需要比较文件时间戳或内容。

简而言之,整体文件系统性能会变慢,但备份会变慢很多快点。

我使用的zfsbtrfs,它具有非常相似的快照和发送/接收机制。当我从备份切换rsynczfs send备份时,增量备份的运行时间从几个小时缩短到几分钟。

我将本地网络上的所有计算机备份到主文件服务器上的“备份”池。rsync在 cron 触发第二天的备份之前,备份尚未完成。由于始终同时运行多个备份,服务器的性能非常糟糕,并且需要不断的手动干预(主要是杀死 rsync 进程)才能使其恢复到可用状态。切换到zfs send可用的文件服务器和不可用的文件服务器之间的区别。现在我几乎不需要去想它,它就行了。最多一两年,我就会清除备份池上的旧快照(我会积极地使正在备份的主机上的快照自动过期,但在备份池上则不太积极地自动过期),如果我允许,这可能需要很长时间备份池保留一百万或两个快照。

至于它是否可以取代您当前的设置,我建议创建一个具有两个 btrfs 池的 btrfs 测试虚拟机,并尝试制作快照并将其从一个池发送到另一个池。或者多个测试虚拟机,以便您可以btrfs send通过ssh.

在您非常熟悉并熟悉 btrfs 快照和 btrfs 发送/接收的工作方式之前,我不建议您进行切换。

事实上,也可以制作一些 ZFS VM,以便您可以感受到差异。

虚拟机非常适合在您决定是否要使用新东西之前尝试新东西。阅读文档是必不可少的,但如果您真的想了解某些东西是如何工作的,那么没有什么比亲自动手更重要的了。


顺便说一句,透明压缩可以抵消使用 btrfs 或 ZFS 等文件系统与 ext4 或 xfs 等更传统的文件系统之间的大部分性能损失,具体取决于您的工作负载。

  • 如果 fs 性能对您来说是唯一或最重要的事情,那么使用xfs- 到目前为止,它是明显的赢家。

  • 如果您需要快照、快照发送/接收、压缩、ECC、子卷等,请使用 ZFS 或 btrfs。

  • IMO,使用 btrfs 而不是 ZFS 的唯一真正原因是 btrfs 位于主线 Linux 内核中,而 ZFS 可能永远不会出现,因为 CDDL 和 GPL 之间的许可证冲突。对于 ZFS,您必须编译并安装内核模块...使用 zfs-dkms 模块这非常简单。

  • 如果您使用的是 Ubuntu,那么您可以开箱即用地使用 ZFS,他们认为许可证问题不是什么大问题 - IMO 他们在这一点上是错误的,但他们不太可能被 Oracle 起诉。

  • 另外,自从您使用 LUKS 以来,您可能会感兴趣的一件事是 ZFS 可以选择加密任何数据集(btrfs 术语中的“子卷”。有点像 LVM 术语中的组合 LV + 文件系统)。我从未使用过 LUKS 或 ZFS 的加密,因此我无法告诉您它们的比较情况。

  • 现在我确实没有看到太多使用 ext4 的理由,除了它几乎是大多数发行版的默认值。没有任何优势,也没有令人信服的理由来使用它。

  • 最后,不要被 ZFS 重复数据删除所诱惑。这在理论上听起来是一个好主意,但在实践中意味着重复数据删除表需要保存在 RAM 中,因此您可以减少对更便宜的驱动器的需求,并用更昂贵的 RAM 来取代它。对于一些特殊的用例(例如运行数百或数千个相同的虚拟机映像),这是一个糟糕的讨价还价 - RAM 最好用于运行程序或缓存磁盘。

答案2

我相信明显的问题是......

rsnapshot 如果理想配置是从一个磁盘复制到另一个磁盘,因此如果您的数据磁盘出现问题,您可以从单独的备份进行恢复。并且该备份卷(即不同的磁盘)不需要驻留在同一服务器中,rsnapshot 可以通过网络连接进行。

btrfs 全部发生在同一个磁盘或卷上,如果这一切都发生在 fubar 上,而这就是您所拥有的一切,那么您就是 sol 如果它全部都在一个磁盘上,那就糟糕了。使用 raid5 或 raid6 是一个好的开始,但您仍然很容易受到简单的文件系统损坏的影响,而 raid 无法防止这种损坏,更不用说该特定位置的火灾、水灾或任何其他“灾难”。

我怀疑 btrfs 本质上会更快,因为它的快照过程是自动发生的,而不是 rsnapshot 从数据卷读取数据所需的时间,通过任何连接方法将数据写入备份卷所需的时间,然后将数据放入备份卷上的磁盘所需的时间。如果它是单独的磁盘但在同一服务器中,那么它可能会非常快,但如果 rsnapshot 通过网络传输到其他位置,那么这可能是一个重大损失。

使用 Synology NAS,他们提供 ext4 或 btrfs 作为文件系统选择,他们基本上告诉我 ext4 更快。我相信一般来说 ext4 比 btrfs 更快,但当然重要的是您将使用什么以及如何使用文件系统,无论差异是否显着。

相关内容