Я стараюсь работать более эффективно с разреженными файлами. Я прочитал о функциональности SEEK_HOLE в новых ядрах Linux. По словам других людей, это должно быть в версии 3.1 и более поздних версиях ядра.Что нужно, чтобы заставить SEEK_HOLE работать с разреженными файлами?
Однако, как видно ниже, в нем должно быть что-то еще. Я нахожусь на ядре 3.2+, и работа с разреженными файлами все еще медленная.
Выполнение «cp» или «tar» на этом (полностью пустом) разреженном файле занимает менее 1 секунды.
Есть идеи, что мне не хватает? Как проверить, поддерживается ли SEEK_HOLE/активирована?
Они обсуждают здесь то же самое, но по какой-то причине я не могу комментировать, что там он не работает:
([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
Да, я также это заметил. Я использовал reiserfs, и он отказывается работать с ним. Переход на ext4 заставляет его работать, если я на 3.5+ ядре. Тем не менее, я не работаю над своим ядром 3.2. Все еще расследует. –
Хорошо, похоже, что bsdtar 3.0.3 НЕ поддерживает это вообще. Обновление до версии 3.0.4 работает для ext4, но не для reiserfs. То же самое касается и других инструментов. «cp» версия 8.5 не работает, но 8.13 делает и т. д. –
Возможный дубликат [Копирование разреженного файла 1 ТБ] (http://stackoverflow.com/questions/13252682/copying-a-1tb-sparse-file) – mvp