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


44

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

Это не inode или с фактическим содержимым файла, так как у нас есть жесткая ссылка, что два имени файла могут указывать на один и тот же inode.


4
Строго говоря, это полностью зависит от того, о какой файловой системе вы говорите. Не все из них имеют inode (или даже каталоги).
Майкл Боргвардт

NTFS или FAT12 / 16/32 и многие другие файловые системы не имеют никакого inode
phuclv

Многие файлы имеют более одного имени в нескольких каталогах. Все файлы типа directory имеют как минимум 2 имени, одно из которых находится .внутри себя.
Стефан Шазелас

@ LưuVĩnhPhúc, ntfs делает .. он просто называет это MFT-записью, но это в значительной степени инод.
psusi

Ответы:


61

Я не нашел подходящего дубликата, поэтому вот ответ на ваш вопрос.

Имена файлов и каталоги

выдержка

Имена файлов и значение каталога:

  • Иноды не содержат имен файлов, только другие метаданные файла.
  • Каталоги Unix представляют собой списки структур ассоциаций, каждая из которых содержит одно имя файла и один номер индекса.
  • Драйвер файловой системы должен найти каталог, ищущий определенное имя файла, а затем преобразовать имя файла в правильный соответствующий номер индекса.

Источник: страница Википедии на Inode

Таким образом, имя файла хранится в информационной структуре каталогов. Например:

                         сс фс

Структура каталога

выдержка

В файловой системе EXT2 каталогами являются специальные файлы, которые используются для создания и хранения путей доступа к файлам в файловой системе. На рисунке 9.3 показана схема записи каталога в памяти.

Файл каталога представляет собой список записей каталога, каждая из которых содержит следующую информацию:

  • inode - Inode для этой записи каталога. Это индекс в массиве inode, хранящихся в таблице Inode группы блоков. На рисунке 9.3 запись каталога для файла с именем file имеет ссылку на номер индекса i1,
  • длина имени - длина этой записи каталога в байтах,
  • name - имя этой записи каталога.

Первые две записи для каждого каталога всегда являются стандартом, .а ..записи означают «этот каталог» и «родительский каталог» соответственно.

Вот ссылки на рисунке 9.3 выше:

                 сс # 2

Источник: Проект документации Linux: Файловая система

Ссылки


9

Имя файла хранится в соответствующем каталоге («файл каталога»). Эта запись указывает на индекс.


1
Я не вижу, как цели символической ссылки могут попасть в записи каталога. Цель символической ссылки может быть найдена в inode символической ссылки, но не в (любой из) записи каталога, с которой связана символическая ссылка, что не имеет смысла.
Стефан Шазелас

@ StéphaneChazelas, сама символическая ссылка просто содержит другое имя, которое должно быть открыто вместо этого. Поиск имени начинается снова с нового имени, которое (если оно вообще существует) является записью каталога.
псус

1

Имя файла хранится в структуре данных «directory», которая имеет «(string) filename» и соответствующий «(int) inode». каталог отвечает за отображение имени файла -> inode. и в ode отвечает за отображение inode -> сектора на диске.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.