Как в Linux пустые файлы могут занимать нулевые байты?

Я также задал родственный вопрос для Windows.


В Linux (я только что тестировал):

  • Размер пустой папки задан как 4 КБ (независимо от названия).
  • Размер пустого файла равен 0 байтам.

Однако файлы и папки, очевидно, имеют имена, которые необходимо где-то хранить.

  • Где они примерно хранятся?
  • Является ли максимальный объем памяти, доступный для хранения этих данных, заранее определенным или зависит от доступного места на диске?
  • Пустой файл с коротким именем занимает меньше места, чем пустой файл с большим именем? (или, возможно, структура данных, в которой хранятся эти имена, имеет фиксированное количество байтов для каждого файла, которое, возможно, заполняет оставшиеся байты с помощью ?)
  • Пустая папка с коротким именем занимает меньше места, чем пустая папка с большим именем?
  • Пустая папка называется foobar занимает меньше места, такое же пространство или больше места, чем пустой файл с именем foobar?
  • Создает пустой файл в /etc/empty.txt занимает меньше места, такое же пространство или больше места, чем пустой файл в /etc/long/nested/path/until/the/empty/file/is/reached/empty.txt?

1 ответ
1

Имена файлов хранятся в каталоге. Каталог состоит из записей каталога, и каждая запись в каталоге содержит имя файла и номер inode для этого файла. Inode содержит различные метаданные, такие как идентификатор пользователя и идентификатор группы, владеющей файлом, время последнего изменения inode и т. Д. Файл с более длинным именем файла займет больше места в каталоге. Может быть несколько записей каталога (в одном или разных каталогах), которые ссылаются на один и тот же номер inode. Когда создается дополнительная запись каталога, указывающая на тот же индексный дескриптор, это называется созданием жесткой ссылки.

В таблице индексных дескрипторов есть фиксированное количество индексных дескрипторов, поэтому, если вы создаете большое количество индексных дескрипторов, в конечном итоге вы можете исчерпать пространство в таблице индексных дескрипторов. (Вы можете увидеть, сколько inodes используется с помощью «df -i». Вы также можете создать файловую систему с большим количеством inodes, если вы ожидаете, что средний размер inodes в файловой системе будет меньше, чем по умолчанию. )

Каталоги также состоят из индексных дескрипторов и работают так же, как файлы, за следующим исключением. Во-первых, даже в «пустом» каталоге будут записи каталога для ‘.’ (сам каталог) и «..» (родительский каталог), поэтому даже «пустой» каталог займет 4 КБ места. Во-вторых, в каталоге не должно быть жестких ссылок. То есть (игнорируя записи «.» И «..»), может быть только запись каталога, ссылающаяся на индексный дескриптор каталога. Это означает, что каталоги образуют дерево, а не обобщенный граф.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *