2013-05-01 3 views
1

Я стараюсь работать более эффективно с разреженными файлами. Я прочитал о функциональности SEEK_HOLE в новых ядрах Linux. По словам других людей, это должно быть в версии 3.1 и более поздних версиях ядра.Что нужно, чтобы заставить SEEK_HOLE работать с разреженными файлами?

Однако, как видно ниже, в нем должно быть что-то еще. Я нахожусь на ядре 3.2+, и работа с разреженными файлами все еще медленная.

Выполнение «cp» или «tar» на этом (полностью пустом) разреженном файле занимает менее 1 секунды.

Есть идеи, что мне не хватает? Как проверить, поддерживается ли SEEK_HOLE/активирована?

Они обсуждают здесь то же самое, но по какой-то причине я не могу комментировать, что там он не работает:

Copying a 1TB sparse file

([email protected])-(/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 
([email protected])-(/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 
([email protected])-(/nbd/test)# time cp 10g.img new.img 

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

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

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

Да, я также это заметил. Я использовал reiserfs, и он отказывается работать с ним. Переход на ext4 заставляет его работать, если я на 3.5+ ядре. Тем не менее, я не работаю над своим ядром 3.2. Все еще расследует. –

+0

Хорошо, похоже, что bsdtar 3.0.3 НЕ поддерживает это вообще. Обновление до версии 3.0.4 работает для ext4, но не для reiserfs. То же самое касается и других инструментов. «cp» версия 8.5 не работает, но 8.13 делает и т. д. –

+0

Возможный дубликат [Копирование разреженного файла 1 ТБ] (http://stackoverflow.com/questions/13252682/copying-a-1tb-sparse-file) – mvp

ответ

2

Убедитесь, что вы используете инструмент, который поддерживает SEEK_HOLE.

bsdtar >=3.0.4 

cp >=8.13 

Также убедитесь, что вы запустите файловую систему, которая ее поддерживает. Прекрасно работает с ext4. Не работает с reiserfs.

Смежные вопросы