У меня есть ext4
раздел на 900 ГБ на (магнитном) жестком диске, который не имеет дефектов и поврежденных секторов. Раздел полностью пустой, за исключением пустой lost+found
директории. Раздел был отформатирован с использованием параметров по умолчанию, за исключением того, что я установил количество зарезервированных блоков файловой системы равным 1%.
Я загрузил файл ~ 900MB xubuntu-15.04-desktop-amd64.iso
в каталог точки монтирования раздела, используя wget
. Когда загрузка была закончена, я обнаружил, что файл был разбит на четыре фрагмента:
filefrag -v /media/emma/red/xubuntu-15.04-desktop-amd64.iso
Filesystem type is: ef53
File size of /media/emma/red/xubuntu-15.04-desktop-amd64.iso is 1009778688 (246528 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 190463: 198656.. 229375: 30720:
6: 190464.. 223231: 231424.. 264191: 32768: 229376:
7: 223232.. 246527: 264192.. 287487: 23296: eof
/media/emma/red/xubuntu-15.04-desktop-amd64.iso: 4 extents found
Думая, что это может быть каким- wget
то образом отменено , я удалил файл ISO из раздела, снова сделав его пустым, а затем скопировал файл ~ 700 МБ v1.mp4
в раздел, используя cp
. Этот файл тоже был фрагментирован. Он был разбит на три фрагмента:
filefrag -v /media/emma/red/v1.mp4
Filesystem type is: ef53
File size of /media/emma/red/v1.mp4 is 737904458 (180153 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 180152: 198656.. 219064: 20409: eof
/media/emma/red/v1.mp4: 3 extents found
Почему это происходит? И есть ли способ предотвратить это? Я думал, что ext4
должен был быть устойчивым к фрагментации. Вместо этого я обнаружил, что он немедленно фрагментирует отдельный файл, когда весь остальной том не используется. Это кажется хуже, чем и то, FAT32
и другое NTFS
.
источник
Ответы:
3 или 4 фрагмента в файле размером 900 Мб - это очень хорошо. Фрагментация становится проблемой, когда файл такого размера имеет более 100 фрагментов. Для fat или ntfs нередко разбивать такой файл на несколько сотен частей.
Как правило, вы не увидите ничего лучше, по крайней мере, в старых файловых системах ext4, поскольку максимальный размер группы блоков составляет 128 МБ, и поэтому каждые 128 МБ непрерывного пространства разбиваются на несколько блоков для битовых карт распределения и таблиц inode для следующая группа блоков. Более поздняя функция ext4, называемая flex_bg, позволяет объединять эти таблицы в несколько (обычно 16) групп блоков, оставляя более длинные прогоны выделяемых блоков, но в зависимости от вашего дистрибутива и того, какая версия e2fsprogs использовалась для его форматирования, эта опция может не были использованы.
Вы можете использовать,
tune2fs -l
чтобы проверить, включены ли функции, когда ваша файловая система была отформатирована.источник
Я не могу действительно ответить, но я думаю, что это может помочь:
Обратите внимание, что каждый фрагмент имеет максимальный размер 32768 блоков (степень 2, которая должна поднять флаг, указывающий, что что-то происходит, а также подсказку для поиска).
Также стоит отметить, что эти физические смещения между экстентами довольно близки друг к другу.
От: Ext4 Расположение диска
И дальше вниз:
Поэтому я бы сказал, что распределитель заботится только о локальности данных в группе блоков (эти блоки по 32 КБ), но не о том, что группы блоков являются смежными друг с другом.
источник