Внутрішня структура каталогів залежить від використовуваної файлової системи. Якщо ви хочете точно знати, що відбувається, ознайомтеся з реалізаціями файлової системи.
В основному, у більшості файлових систем каталог - це асоціативний масив між назви файлів (клавіш) та номерами inodes (значеннями). Щось подібне¹:
1167010 .
1158721 ..
1167626 subdir
132651 barfile
132650 bazfile
Цей список кодується деяким - більш-менш ефективним способом всередині ланцюга (зазвичай) блоків 4 КБ. Зауважте, що вміст звичайних файлів зберігається аналогічно. Що стосується каталогів, немає сенсу дізнатися, який розмір використовується в цих блоках. Ось чому розміри каталогів, про du
які повідомляє , кратні 4 КБ.
Inodes є для того, щоб зв'язати блоки разом, утворюючи єдине ціле, а саме "файл" у загальному розумінні. Вони ідентифікуються за номером, який є якоюсь адресою, і кожен з них зазвичай зберігається як єдиний спеціальний блок.
Управління всім цим відбувається в режимі ядра. Програмне забезпечення просто вимагає створити каталог з функцією, названою що int mkdir(const char *pathname, mode_t mode);
веде до системного виклику, а все інше виконується за кадром.
Про структуру посилань:
Жорстке посилання - це не файл, це лише новий запис у каталозі (тобто ім'я - асоціація номерів inode ), що стосується попередньо існуючого об'єкта inode². Це означає, що один і той же індед можна отримати з різних імен. Зокрема, оскільки метадані (дозволи, право власності, часові позначки ...) зберігаються в inode, вони унікальні і не залежать від імені шляху, обраного для доступу до файлу.
Символічне посилання - це файл, який відрізняється від його цілі. Це означає, що у нього є своя інеда. З цим раніше оброблялося як звичайний файл: цільовий шлях зберігався в блоці даних. Але тепер, з метою ефективності в останніх файлових системах ext , шляхи довжиною менше 60 байт зберігаються всередині самої inode (використовуючи поля, які зазвичай використовуються для зберігання покажчиків у блоки даних).
-
1. це було отримано за допомогою ls -ai1 testdir
.
2. тип якого в даний час повинен відрізнятися від «каталогу».