Індексний дескриптор - це

подробиці

При створенні файлової системи створюються також і структури даних, що містять інформацію про файлах. Кожен файл має свій инод, ідентифікований за номером инода (часто званий 'i-номером' або 'инодом'), в файлової системі, в якій розташовується сам файл.

Иноді зберігають інформацію про файлах, таку як приналежність власнику (користувачу і групі), режим доступу (читання, запис, запуск на виконання) і тип файлу. Існує певна кількість иноді, яке вказує максимальну кількість файлів, що допускається певної файлової системою. Зазвичай, при створенні файлової системи приблизно 1% її виділяється під инодом.

  • Номер инода заноситься в таблицю иноді в певному місці пристрою; за номером инода ядро ​​системи може вважати вміст инода, включаючи покажчики даних та інший контент файлу.
  • Номер инода файлу можна подивитися використовуючи команду ls -i. а команда ls -l покаже інформацію, що зберігається в инодом.
  • Файлові системи, що не належать до традиційних ФС UNIX, такі як stat - системним викликом. який поставляє інформацію програмами.

Імена файлів і вміст каталогів

  • Иноді не зберігають імена файлів, тільки інформацію про їх вміст.
  • Каталоги в Unix є списками 'довідкових' структур, кожна з яких містить одне ім'я файлу і один номер инода.
  • Ядро має переглядати каталог в пошуках імені файлу, потім конвертувати це ім'я в відповідний номер инода, в разі успіху.

Подання ядром цих даних в пам'яті називається struct inode (структурним инодом) (в ОС BSD система використовує терм vnode. Буква v в якому вказує на віртуальну файлову систему рівня ядра.

Опис инода в POSIX

Стандарти Unix. Постійні файли повинні мати такі атрибути:

  • Довжина файлу в байтах.
  • ID пристрої (це ідентифікує пристрій, що містить файл).
  • ID користувача. що є власником файлу.
  • ID групи файлу.
  • Режим файлу, який визначає які користувачі можуть зчитувати, записувати і запускати файл.
  • ctime. change time), останньої модифікації вмісту файлу (mtime. modification time), і останнього доступу (atime. access time).
  • Лічильник посилань вказують кількість жорстких посилань. вказують на инод.
  • Покажчики на блоки диска, що зберігають вміст файлу (дивись структура покажчика в иноді).

Системний виклик stat зчитує номер инода файлу і деяку інформацію з инода.

походження слова

Точна причина використання "і" в вузлах (нодах) невідома. У відповідь на питання про це один з піонерів Unix-систем Денніс Рітчі відповів:

Чесно кажучи, я мало про це знаю. Це був всього лише термін, який ми почали використовувати. 'Індекс', як я вважаю, використовувався через кілька незвичайної структури файлової системи, що зберігала інформацію про доступ до файлів в плоскому (двовимірному) масиві на диску, а вся інформація про ієрархію каталогів зберігалася окремо. Таким чином, і-номер був індексом в цьому масиві, і-нод - обраним елементом масиву. (Приставка 'и-' використовувалася в першій версії керівництва; згодом дефіс перестали вживати).

Тобто index node (індексний вузол, елемент) → index-node → inode → inode - поступове укорочення і злиття словосполучення index node. За іншою версією, початкова буква i в i -node походить від слова information (інформація).

Особливості файлової системи, які призводять до використання иноді, бентежать багатьох користувачів, не знайомих з цією концепцією:

  • Якщо кілька імен вказують на один і той же инод (жорсткі посилання), то всі імена вважаються еквівалентними. Перше створене ім'я ніяким особливим становищем не володіє. Це відрізняється від поведінки схожих символьних посилань. які залежать від початкового імені.
  • Инод може зовсім не мати посилань. Зазвичай такий файл повинен бути вилучений з диска (саме тому програми типу undelete в Unix не дозволяють встановити точне ім'я віддаленого файлу), а його ресурси повинні звільнитися (це нормальний процес видалення файлу), але якщо будь-які процеси тримають файл відкритим, то вони можуть утримувати доступ до нього, а файл буде остаточно видалено тільки коли буде закрито останнє звернення до нього. Це відноситься і до виконуваним копіям, які утримуються відкритими процесами, їх виконують. З цієї причини, при оновленні програми рекомендується видаляти стару копію і створювати новий инод для оновленої версії, щоб ніякі екземпляри старої версії не продовжували виконуватися.
  • Зазвичай немає можливості зіставити відкритий файл і ім'я, по якому він був відкритий. Операційна система перетворює ім'я файлу в номер инода при першому ж зручному випадку, а потім "забуває" про ім'я файлу. Таким чином, функції бібліотек getwd () починають шукати в батьківському каталозі файл з инодом, що збігається з файлом "." Каталогу. потім шукають батьківський каталог для поточного, і так далі поки не досягнуть "/" каталогу. SVR4 і
  • Раніше було можливо застосовувати жорсткі посилання на каталоги. Це робило структуру каталогів орієнтованим графом замість дерева. тобто зв'язкового графа з N-1 ребрами і N вузлами. Наприклад, каталог мав можливість бути власним батьком. Сучасні системи не допускають подібних двозначностей, за винятком кореневого каталогу, який вважається власним батьком.
  • Номер инода файлу залишається незмінним при переміщенні файлу в інший каталог на тому самому пристрої або при дефрагментації диска. Тому, переміщення або каталогу, що містить файл, або його вмісту (або і того і іншого разом) недостатньо для запобігання доступу до нього запущеного процесу, якщо у процесу є можливість обчислити номер инода. Це також обумовлює те, що повністю кероване поведінку иноді неможливо реалізувати на безліч не-Юніксових файлових систем, таких як FAT і його наступники, які не мають можливості зберігати подібну постійну 'незмінність', коли каталог файлу і його вміст переміщається.

Практичне застосування

Безліч програм. використовуваних системними адміністраторами в операційній системі жорстких дисків pfiles можуть послужити в даному випадку прикладами, так як у них є необхідність природним чином конвертувати номера иноді в дорозі файлів і назад. Це може бути доповнено використанням програми пошуку файлів -inum або командою -i).

Иноді можуть 'закінчитися'. У цьому випадку не можна записати інформацію на пристрій, навіть якщо там досить вільного місця.

проблема Y2038

Деякі файлові системи, основані на иноді, захищені від проблеми Y2038 (відомої як Unix time) з урахуванням запобігання 'переповнення' дати, але, на жаль, далеко не всі такі файлові системи захищені від подібних проблем. Під час налаштування сервера відмова від використання подібних

Схожі статті