我正在努力提高稀疏文件的效率。我在新的Linux内核中读到了有关SEEK_HOLE功能的信息。据其他人说,这应该是内核版本3.1及更高版本。
然而,如下所示,它也必须有其他东西。 我在内核3.2+上,使用稀疏文件仍然很慢。
在这个(完全空的)稀疏文件上执行“cp”或“tar”应该不到1秒。
知道我错过了什么吗?如何检查是否支持/激活SEEK_HOLE?
他们在这里讨论同样的事情,但由于某种原因,我不能在那里发表评论它不起作用:
(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
答案 0 :(得分:2)
确保您使用的工具支持SEEK_HOLE
。
bsdtar >=3.0.4
cp >=8.13
还要确保运行支持它的文件系统。使用ext4可以正常工作。不适用于reiserfs。