使用 btrfs 功能快速高效地合并大文件

使用 btrfs 功能快速高效地合并大文件

我的目标是使用 btrfs 功能将多个 3GB 文件合并为一个 9GB 文件,而无需产生大量 I/O 或使用额外的磁盘空间。如果这对这组数据有效,我计划在我的管道中实现它并轻松节省 1TB 的磁盘空间。

我以前的尝试:

通常我会将cat这些较小的 3GB 文件合并为一个文件,这会产生大量的 i/o。在 btrfs 上,我尝试对这些文件执行 duperemove 以节省磁盘空间。这只对较大文件的第一部分有效,有效地为我节省了 9GB 中的 3GB(这很好)。

一个能达到同样效果的更好的方法是对第一个文件使用cp --reflink=always,然后附加其他文件。这将大大加快速度并跳过耗时的重复数据删除步骤,但我仍然会产生 6GB 的 i/o 和额外的磁盘空间。

我现在正在寻找一种方法来使用 btrfs 功能来组合这些文件,就好像它们相互连接但引用 b 树中的原始范围一样。(如果我对 btrfs 的理解是正确的)

感谢您的考虑

相关内容