inode

inode

В информатике inode (произносится а́йнод или ино́д), индексный дескриптор - это структура данных в традиционных для ОС UNIX файловых системах (ФС), таких как UFS. В этой структуре хранится метаинформация о стандартных файлах, каталогах или других объектах файловой системы, кроме непосредственно данных и имени.

Содержание

Подробности

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

Индексные дескрипторы хранят информацию о файлах, такую как принадлежность владельцу (пользователю и группе), режим доступа (чтение, запись, запуск на выполнение) и тип файла. Существует определенное число индексных дескрипторов, которое указывает максимальное количество файлов, допускаемое определенной файловой системой. Обычно, при создании файловой системы примерно 1 % её объёма выделяется под индексные дескрипторы.

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

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

Имена файлов и содержимое каталогов:

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

Представление ядром этих данных в памяти называется struct inode (структурным инодом) (в ОС Linux). В BSD системах используется термин vnode, буква v в котором указывает на виртуальную файловую систему уровня ядра.

Описание индексного дескриптора в POSIX

Стандарты POSIX описывают поведение файловой системы как потомка традиционных файловых систем UNIX — UFS. Регулярные файлы должны иметь следующие атрибуты:

  • длина файла в байтах;
  • идентификатор (ID) устройства (это идентифицирует устройство, содержащее файл);
  • ID пользователя, являющегося владельцем файла;
  • ID группы файла;
  • Timestamp указывает дату последнего изменения инода (ctime, change time), последней модификации содержимого файла (mtime, modification time), и последнего доступа (atime, access time);
  • счетчик ссылок указывают количество жестких ссылок, указывающих на индексный дескриптор;
  • указатели на блоки диска, хранящие содержимое файла (подробнее...).

Системный вызов stat считывает номер индексного дескриптора файла и некоторую информацию из него.

Этимология inode

Что в названии «и-нод» обозначает «и» - неизвестно. В ответ на вопрос об этом один из создателей Unix Деннис Ритчи ответил:

Честно говоря, я тоже не знаю. Это был всего лишь термин, который мы начали использовать. Из-за немного необычной структуры файловой системы, при которой информация о доступе к файлам хранится, в виде плоского (двумерного) массива на диске, отдельно от всей информации об иерархии каталогов, лучшее, что я могу предположить (для «и») - это «индекс». Таким образом, и-номер являлся индексом в этом массиве, и-нод - выбираемым элементом массива. (Приставка «и-» использовалась в первой версии руководства; со временем дефис перестали употреблять).

What does the "i" in inode stand for? Dennis Ritchie doesn't know either.. Архивировано из первоисточника 23 августа 2011. Проверено 3 августа 2010.

То есть index node (индексный узел, элемент) → index-nodei-nodeinode — постепенное укорочение и слияние словосочетания index node. По другим версиям, начальная буква i в i-node может происходить, в том числе, от слов information (информация), incore, indirection.

Значение

Файловые системы, использующие индексные дескрипторы имеют несколько неочевидных особенностей:

  • Если несколько имен указывают на один и тот же индексный дескриптор (жесткие ссылки), то все имена считаются эквивалентными. Первое созданное имя никаким особым положением не обладает. Это отличается от поведения похожих символьных ссылок, которые зависят от первоначального имени.
  • Индексный дескриптор может совсем не иметь ссылок. Обычно такой файл должен быть удален с диска (именно поэтому программы типа undelete в Unix не позволяют установить точное имя удалённого файла), а его ресурсы должны освободиться (это нормальный процесс удаления файла), но если какие-либо процессы еще не закрыли файл, то они могут удерживать доступ к нему, а файл будет окончательно удален только когда будет закрыто последнее обращение к нему. Это относится и к исполняемым копиям, которые удерживаются открытыми процессами, их выполняющими. По этой причине, при обновлении программы рекомендуется удалять старую копию и создавать новый индексный дескриптор для обновленной версии, чтобы никакие экземпляры старой версии не продолжали выполняться.
  • Обычно нет возможности сопоставить открытый файл и его имя, по которому он был открыт. Операционная система преобразует имя файла в номер индексного дескриптора при первом же удобном случае, а затем «забывает» про имя файла. Таким образом, функции библиотек родительском каталоге файл с индексным дескриптором, совпадающим с файлом «.» каталога; затем ищут родительский каталог для текущего, и так далее пока не достигнут «/» каталога. SVR4 и Linux используют дополнительную информацию (поля) в индексных дескрипторах для избежания подобного неудобства.
  • Ранее было возможно применять жесткие ссылки на каталоги. Это делало структуру каталогов ориентированным графом вместо дерева (то есть связного графа с N-1 ребрами и N узлами). Например, каталог имел возможность быть собственным родителем. Современные файловые системы не допускают подобных двусмысленностей, за исключением корневого каталога, который считается собственным родителем.
  • Номер индексного дескриптора файла остается неизменным при перемещении файла в другой каталог на том же устройстве или при дефрагментации диска. Поэтому, перемещение или каталога, содержащего файл, или его содержимого (или и того и другого вместе) недостаточно для предотвращения доступа к нему запущенного процесса, если у процесса есть возможность вычислить номер индексного дескриптора. Это также обусловливает то, что полностью управляемое поведение индексных дескрипторов невозможно реализовать на множестве файловых систем, не произошедших от стандартной файловой системы UNIX, таких как FAT и его преемников, которые не имеют возможности хранить подобную постоянную 'неизменность', когда каталог файла и его содержимое перемещается.

Практическое применение

Множество программ, используемых системными администраторами в операционной системе (ОС) UNIX, часто используют номера индексных дескрипторов для обозначения файлов. Популярная встроенная программа проверки жестких дисков fsck или команда pfiles могут послужить в данном случае примерами, так как у них есть необходимость естественным образом конвертировать номера индексных дескрипторов в пути файлов и обратно. Это может быть дополнено использованием программы поиска файлов find с ключом -inum или командой ls с соответствующим ключом (которым на большинстве платформ является -i).

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

Проблема Y2038

Некоторые файловые системы, основаные на индексных дескрипторах, защищены от проблемы Y2038 (известной как Unix time) с учетом предотвращения 'переполнения' даты, но далеко не все такие файловые системы защищены от подобных проблем. При настройке сервера отказ от использования подобных POSIX-несовместимых файловых систем становится более важным. Последняя версия POSIX поддерживает системное время и вызовы даты, устойчивые к проблеме Y2038.

См. также

Литература

  • 7. Inodes and Operations  (англ.) (11.1999). — Уровень виртуальной файловой системы Linux: Иноды и Действия — Иноды в Linux. Проверено 3 августа 2010.
  • Робачевский А. Н., Немнюгин С. А., Стесик О. Л. Индексные дескрипторы / Базовая файловая система System V / Глава 4. Файловая система // Операционная система UNIX. — 2-е изд. — СПб.: БХВ-Петербург, 2008. — С. 334-. — 656 с. — ISBN 978-5-94157-538-1

Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "inode" в других словарях:

  • Inode — В информатике инодом (или индексным дескриптором) (произносится айнод или инод) называют структуру данных в традиционных файловых системах Unix, таких как UFS. Инод хранит основную информацию о постоянных файлах, каталогах или других объектах… …   Википедия

  • Inode — In computing, an inode is a data structure on a traditional Unix style file system such as UFS. An inode stores basic information about a regular file, directory, or other file system object. Details When a file system is created, data structures …   Wikipedia

  • Inode — Ein Inode (auch I Node, Kurzwort aus: engl. index node) ist ein Eintrag in einem Unix Dateisystem, der Metadaten einer Datei enthält. In den meisten Unix Betriebssystemen werden Dateien nur über ihre Inodes verwaltet. Jeder Inode ist durch eine… …   Deutsch Wikipedia

  • Inode — Les inodes (contraction de « index » et « node »; en français : nœud d index) sont des structures de données contenant des informations concernant les fichiers stockés dans certains systèmes de fichiers (notamment de type …   Wikipédia en Français

  • Inode (Begriff) — Ein Inode (auch I Node, Kurzwort aus: engl. index node) ist ein Eintrag in einem Unix Dateisystem, der Metadaten einer Datei enthält. In den meisten Unix Betriebssystemen werden Dateien nur über ihre Inodes aufgerufen. Jeder Inode ist durch eine… …   Deutsch Wikipedia

  • Inode (Marke) — Logo der Marke inode inode ist eine Österreichische Marke im Besitz von UPC Austria. inode wurde von Michael Gredenberg und Peter Augustin im Jahr 1996 als eigenständiges Unternehmen gegründet. inode konzentriert sich hauptsächlich auf… …   Deutsch Wikipedia

  • Inode (Unternehmen) — Logo der Marke inode inode ist eine Österreichische Marke im Besitz von UPC Austria. inode wurde von Michael Gredenberg und Peter Augustin im Jahr 1996 als eigenständiges Unternehmen gegründet. inode konzentriert sich hauptsächlich auf… …   Deutsch Wikipedia

  • Inode pointer structure — The inode pointer structure is a structure adopted by the inode of a file in the Unix File System (UFS) or other related file systems to list the addresses of a file s data blocks. In the past, the structure may have consisted of eleven or… …   Wikipedia

  • inode — noun A data structure representing an object in a Unix (or similar) file system …   Wiktionary

  • inode — ● ►en n. m. ►UNIX Variante de l orthographe de i node …   Dictionnaire d'informatique francophone


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»