我需要什么才能让SEEK_HOLE使用稀疏文件?

时间:2013-05-01 13:34:44

标签: linux file sparse-file

我正在努力提高稀疏文件的效率。我在新的Linux内核中读到了有关SEEK_HOLE功能的信息。据其他人说,这应该是内核版本3.1及更高版本。

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

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

知道我错过了什么吗?如何检查是否支持/激活SEEK_HOLE?

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

Copying a 1TB sparse file

(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

1 个答案:

答案 0 :(得分:2)

确保您使用的工具支持SEEK_HOLE

bsdtar >=3.0.4

cp >=8.13

还要确保运行支持它的文件系统。使用ext4可以正常工作。不适用于reiserfs。