возможность создания больших файлов при создании файловой системы

17

Полезно ли использовать флаг -T largefile при создании файловой системы для раздела с большими файлами, такими как видео и аудио в формате flac?

Я протестировал один и тот же раздел с этим флагом и без него, и, используя tune2fs -l [partition] , я проверил в разделе «Функции файловой системы», в обоих случаях включен «large_file». Итак, не обязательно ли использовать флаг -T largefile ?

Марк
источник
1
Обратите внимание, что я был сбит с толку между large_file (полученным в tune2fs) и largefile; похоже, что они аргументы для разных вещей.
Марк

Ответы:

24

-T largefileФлаг регулирует количество дескрипторов, которые выделяются при создании файловой системы. После распределения их число не может быть изменено (по крайней мере, для ext2 / 3, не совсем уверено в ext4). По умолчанию используется один индекс на каждые 16 КБ дискового пространства. -T largefileделает это одним индексом на каждый мегабайт.

Каждый файл требует один индекс. Если у вас не осталось никаких инодов, вы не сможете создавать новые файлы. Но эти статически расположенные inode тоже занимают место. Вы можете сэкономить около 1,5 гигабайт на каждые 100 ГБ диска-T largefile , в отличие от настроек по умолчанию. -T largefile4(один индекс на 4 МБ) не имеет такого драматического эффекта.

Если вы уверены, что средний размер файлов, хранящихся на устройстве, будет больше 1 мегабайта, то непременно установите -T largefile. Я с радостью использую его на своих разделах хранения и думаю, что это не слишком радикально для настройки.

Однако, если вы распакуете в этот раздел очень большой архив с исходным кодом из множества файлов (например, сотни тысяч), у вас будет шанс исчерпать inode для этого раздела. В этой ситуации мало что можно сделать, кроме выбора другого раздела для разархивирования.

Вы можете проверить, сколько inode у вас есть в действующей файловой системе с помощью dumpe2fsкоманды:

# dumpe2fs /dev/hda5
[...]
Inode count:              98784
Block count:              1574362
Reserved block count:     78718
Free blocks:              395001
Free inodes:              34750

Здесь я все еще могу создать 34 тысячи файлов.

Вот что я получил после того, как сделал mkfs.ext3 -T largefile -m 0раздел размером 100 ГБ:

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/loop1              102369       188    102181   1% /mnt/largefile
/dev/loop2              100794       188    100606   1% /mnt/normal

Версия для большого файла имеет 102 400 inode, тогда как обычная версия создала 6 553 600 inode и сэкономила при этом 1,5 ГБ.

Если у вас есть четкое представление о том, какой размер файлов вы собираетесь поместить в файловую систему, вы можете точно настроить количество inode непосредственно с помощью -iпереключателя. Устанавливает соотношение байтов на индекс. Вы получите 75% экономии места, если будете использовать, -i 65536сохраняя при этом возможность создавать более миллиона файлов. Я обычно рассчитываю сохранить как минимум 100 000 инодов в запасе.

hhaamu
источник
хороший ответ, но там, где вы сказали, «и сэкономили 1,5 ГБ в процессе». Вы должны сказать «но использовали 1,5 ГБ места для дополнительных inode». Вы заставляете это звучать как обычный режим, создаете больше инодов, а также оставляете больше свободного места на диске.
localhost
«Я обычно рассчитываю сохранить как минимум 100 000 инодов в запасе». - Почему? Наверняка 0 запасных (и еще 0 необходимых) оптимально? Вы действительно беспокоитесь о том, что у вас может быть меньше 100К на количество файлов или каталогов, которые у вас будут?
OJFord
4

Я думаю, что вы смешиваете две совершенно разные и независимые концепции.

large_fileФункция, которую можно увидеть на выходе dumpe2fs означает , что эта файловая система может содержать файлы размером более 2 Гб, я думаю , он автоматически устанавливается современными ядрами. Это не имеет ничего общего с -Tопцией mke2fs.

задирать
источник