1

我正在尝试更高效地处理稀疏文件。我已经阅读了较新的 Linux 内核中的 SEEK_HOLE 功能。根据其他人的说法,这应该在内核版本 3.1 及更高版本中。

但是,如下所示,它还必须有其他东西。我在内核 3.2+ 上,使用稀疏文件仍然很慢。

对这个(完全空的)稀疏文件执行“cp”或“tar”应该不到 1 秒。

知道我缺少什么吗?如何检查是否支持/激活 SEEK_HOLE?

他们在这里讨论同样的事情,但由于某种原因,我不能在那里发表评论说它不起作用:

复制 1TB 稀疏文件

(root@r1)-(/nbd/test)# uname -a
Linux r1.exice.com 3.2.0-33-generic #52-Ubuntu SMP Thu Oct 18 16:29:15 UTC 2012 x86_64  x86_64 x86_64 GNU/Linux
(root@r1)-(/nbd/test)# dd if=/dev/zero of=10g.img seek=10G bs=1 count=1
1+0 records in
1+0 records out
1 byte (1 B) copied, 0.000271811 s, 3.7 kB/s
(root@r1)-(/nbd/test)# time cp 10g.img new.img

real    0m15.370s
user    0m1.544s
sys     0m13.405s
(root@r1)-(/nbd/test)# time bsdtar cvfz new.tar.gz 10g.img
a 10g.img

real    1m59.898s
user    1m43.938s
sys     0m15.769s
(root@r1)-(/nbd/test)# time tar cvfz new2.tar.gz 10g.img
10g.img

real    1m58.584s
user    1m51.275s
sys     0m30.382s
4

1 回答 1

2

确保您使用的是支持SEEK_HOLE.

bsdtar >=3.0.4

cp >=8.13

还要确保您运行支持它的文件系统。与 ext4 一起工作正常。不适用于 reiserfs。

于 2013-05-01T22:53:34.390 回答