使用 btrfs cow 功能快速高效地对大文件进行子集划分

使用 btrfs cow 功能快速高效地对大文件进行子集划分

[我的目标是使用 btrfs cow 功能将 30GB 到 300GB 的文件分成几个 10GB 的文件,而不会产生大量 i/o,也不会使用额外的磁盘空间。即:

300GB   dna_original.fastq
10GB    dna_subset-a.fastq
10GB    dna_subset-b.fastq
10GB    dna_subset-c.fastq

有问题的文件是常用于 DNA 测序的 fastq 或 fasta 文件,它们是人类可读的文本文件。通常我会使用

head -n x file_original | tail -n y > file_subset-1

从而产生大量 i/o 并使用额外的磁盘空间。duperemove 等工具(也是 i/o 密集型工具)似乎无法识别不是源自原始文件开头的子集。

我想应该可以使用cp --reflink=always file_original file_subset-1并随后删除文件开头和结尾的 x 行,而无需写入新文件。

我们能否想出某种方法使用 btrfs 以这种方式执行子集作业?

感谢您的考虑

相关内容