Что такое inode
Inode (индексный дескриптор) — это структура данных в файловой системе UNIX и UNIX-подобных операционных систем, которая хранит метаданные о файле, кроме его имени и содержимого. Каждый файл или каталог имеет уникальный inode, описывающий его атрибуты и расположение данных на диске. Inode играет ключевую роль в управлении файлами, определяя права доступа, владельца, размер и физическое размещение блоков данных.
Как это работает
Когда операционная система обращается к файлу, она выполняет следующие шаги:
- Каталог, в котором находится файл, содержит записи, связывающие имя файла с номером inode.
- Система получает номер inode из каталога и находит соответствующий inode в таблице inode файловой системы.
- Из inode система извлекает метаданные и указатели на блоки данных, где хранится содержимое файла.
- Далее выполняются операции чтения, записи или изменения на основе этой информации.
Таким образом, имя файла — это всего лишь ссылка на inode, а сам inode содержит всю необходимую информацию для доступа к данным.
Что хранится в inode
Inode содержит следующие метаданные:
- Тип файла: обычный файл, каталог, символическая ссылка, устройство и т.д.
- Права доступа: разрешения на чтение, запись и выполнение для владельца, группы и остальных пользователей.
- UID и GID: идентификаторы владельца файла и группы.
- Размер файла: в байтах.
- Временные метки: время последнего доступа (atime), модификации (mtime) и изменения inode (ctime).
- Счётчик ссылок: количество жёстких ссылок на inode.
- Указатели на блоки данных: адреса блоков на диске, где хранится содержимое файла.
Важно отметить, что имя файла не хранится в inode — оно находится в записи каталога. Это позволяет нескольким жёстким ссылкам указывать на один и тот же inode.
Практическое значение и ограничения
Количество inode в файловой системе фиксируется при её создании. Это означает, что максимальное число файлов ограничено числом inode, даже если на диске ещё есть свободное место. Например, если inode исчерпаны, создание новых файлов станет невозможным, хотя место для данных останется.
Для диагностики и администрирования используются команды:
ls -i— показывает номер inode для каждого файла.df -i— отображает использование inode в файловых системах.
Пример вывода df -i:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 6553600 123456 6430144 2% /Подводные камни
- Исчерпание inode: часто встречается на файловых системах с множеством мелких файлов (например, кэши, очереди сообщений). Решение — пересоздание файловой системы с большим количеством inode или использование
xfsс динамическим выделением. - Жёсткие ссылки: не могут указывать на файлы на других файловых системах, так как inode уникален только в пределах одной ФС.
- Символические ссылки: хранят путь к целевому файлу, а не inode, поэтому могут ссылаться на файлы на других ФС.
Коротко
- Inode — структура данных с метаданными файла: тип, права, владелец, размер, временные метки, счётчик ссылок и указатели на блоки данных.
- Имя файла хранится в каталоге и связано с номером inode; содержимое файла находится по указателям из inode.
- Количество inode ограничено при создании ФС, что может привести к невозможности создавать новые файлы при свободном месте.
- Для проверки inode используйте
ls -iиdf -i; понимание inode помогает диагностировать проблемы с диском и оптимизировать хранение.