小编mat*_*pen的帖子

btrfs 上的 Rsync 备份非常慢

我的环境是 Ubuntu 15.04,内核为 3.19.0-28-generic 和 Btrfs v3.17。

我有两个相同的外部 USB 硬盘,用于我的备份脚本。其中一个格式为btrfs,另一个格式为ext4. 源文件系统始终是ext4. 该rsync命令如下所示:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"
Run Code Online (Sandbox Code Playgroud)

我刚刚意识到执行备份btrfs需要非常长的时间:略多于一个小时,相比之下执行相同的复制到ext4.

为了排除磁盘故障,我dd使用 Ubuntu 附带的“磁盘实用程序”进行了一些基准测试,但我在两个磁盘上都获得了相同的性能。缓慢的部分似乎是针对先前备份的硬链接。即使经过碎片整理和清理,以下命令在 上也需要大约 53 分钟btrfs,但在 上仅需要 1 分钟ext4

cp -arl "$previousBackup" "$destDir"
Run Code Online (Sandbox Code Playgroud)

通过在互联网上的研究,我发现btrfs了硬链接的性能会受到影响的迹象,但我没想到会有如此巨大的差异。我发现这个命令更快,但仍然需要 30 多分钟才能完成:

cp -ar --reflink "$previousBackup" "$destDir"
Run Code Online (Sandbox Code Playgroud)

有没有人有这种行为的经验并且可以确认?有没有简单的方法来纠正它(例如不同的挂载选项),或者我应该尝试删除尽可能多的硬链接并只使用引用链接?

编辑

我刚刚发现即使删除一个目录也btrfs需要一个多小时。同样的操作在“孪生”ext4磁盘上是即时的。这里的元数据显然存在问题。

linux backup rsync hardlink btrfs

5
推荐指数
1
解决办法
2521
查看次数

标签 统计

backup ×1

btrfs ×1

hardlink ×1

linux ×1

rsync ×1