Как длина имени файла влияет на оставшееся место для хранения на диске?

StackOverflow https://stackoverflow.com/questions/3775080

Вопрос

Как длина имени файла влияет на оставшееся место для хранения на диске?

Я понимаю, что это зависит от файловой системы. В частности, я думаю о серии файловых систем EXT. Я не полностью понимаю, как inodes влияет на дисковое пространство и как сохраняется сам файл файла. Трудно получить релевантные результаты поиска по результатам этого вопроса. Вот почему я спрашиваю здесь. На Linux максимальная длина имени файла обычно составляет 255 или 256 символов. Когда файловая система создана, это количество места «зарезервировано» для каждого и каждого имени файла? Другими словами, это дисковое хранилище не влияет на фактическое имя файла, потому что максимум уже используется? Или это сложнее, чем это?

Предположим, у меня есть файл с именем «Joe.txt» и переименовать его на «Joe2.txt». Считается ли количество доступного дискового пространства после этого? Как насчет более длинных имен, таких как "joe_version.txt" или "joe_original_version_with_bug_that_jim_seved.txt"? Я беспокоюсь о порогах на уровне 8, 16, 32, 64 и т. Д. Я буду хранить миллионы изображений. Я никогда не удосужился беспокоиться о такой проблеме, поэтому я не совсем уверен, как это работает.

Хотя Ext - единственная файловая система, которую я использую, обсуждая жир, а другие могут быть полезны для кого-то другого, что имеет аналогичный вопрос.

Это было полезно?

Решение

На Linux (или в целом файловые системы типа UNIX) хранятся в inodes ввода каталога, которые содержат список отображений (имя файла, inode) для каждого файла в каталоге. Мое понимание заключается в том, что для каждого файла имеется зарезервированное пространство для символов name_max. И действительно, на Ninux name_max 255.

Итак, чтобы ответить на вас вопрос, когда создана файловая система, нет места, зарезервированного для имени файлов, но после создания файла имена_max bytes зарезервирован для имени. Более того, для каталога INode мое понимание заключается в том, что, по крайней мере, на пространстве Ext2 / 3/4 выделяется в дисковом блоке (4 КБ, если вы не делаете что-то очень странное) детализацию по мере необходимости. IE каталог занимает минимум 4 кБ (плюс вход в inode родительский каталог), и если список пар (файл, inode) пары не вписываются в это 4 кБ (минус других накладных расходов, например, разрешения на каталог), это Выделяет новый 4 КБ блока для продолжения списка и т. Д. (Ext2 / 3 использует непрямующую схему блока, тогда как EXT4 использует экстенты).

Другие советы

FAT16 предварительно выделенные.

FAT32 использует работу, чтобы обеспечить длительные имена файлов; Поскольку имя файла становится дольше, для хранения дополнительных символов - и файл каталогов требуется дополнительные файлы каталога - и файл каталога является обычным файлом, поэтому это потребляет дополнительное место для дисков. Однако наименьшее выделение - это один кластер, поэтому, если только дополнительный магазин файла не превышает кластерную границу, никакое дополнительное дисковое пространство не потребляется из того, что вы могли бы в противном случае использовали.

Я не знаю, знаком с тем, как имена файлов FileNames обрабатываются в файловых системах типа UNIX.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top