inode (index node) — это базовая структура данных в файловых системах семейства Unix (включая Linux), которая хранит метаданные о файле. Каждый файл или каталог в Linux связан с одним inode, который содержит информацию о самом файле, но не о его имени.
Что хранится в inode
inode содержит:
- Тип файла (обычный файл, каталог, символьная ссылка и т. д.)
- Права доступа (mode) — кто может читать, писать, выполнять
- Владелец (UID) и группа (GID)
- Размер файла
- Временные метки:
atime— время последнего доступаmtime— время последнего изменения содержимогоctime— время последнего изменения метаданных
- Количество жёстких ссылок на файл
- Ссылки на блоки данных — указатели на реальные блоки, где лежит содержимое файла
Что не хранится в inode
- Имя файла
- Путь к файлу
Имя файла хранится в каталоге (directory), где оно связывается с номером inode.
Фактически каталог — это таблица соответствий вида:
имя_файла → номер_inode
Как это работает
Когда вы открываете файл /home/user/file.txt, система делает следующее:
- Находит каталог
/home/user, читает из него номер inode дляfile.txt. - Через этот inode получает всю нужную информацию о файле (владельца, права, адреса блоков данных и т. д.).
- Используя указатели из inode, получает содержимое файла из диска.
Практические моменты
- Узнать номер inode можно командой:
ls -i file.txt- Если удалить имя файла (
rm file.txt), но у него остаются открытые дескрипторы или другие жёсткие ссылки — сам файл не исчезает, пока не обнулится счётчик ссылок в inode. - Жёсткие ссылки (hard links) указывают на один и тот же inode, поэтому фактически являются разными именами одного файла.
- Символьные ссылки (soft links) — это отдельные файлы с собственными inode, которые содержат путь до другого файла.
Итого
inode — это «паспорт» файла: в нём описано всё, кроме имени.
Благодаря inode Linux может:
- быстро находить файлы по ссылкам,
- эффективно управлять правами и метаданными,
- безопасно удалять файлы только тогда, когда они действительно больше не используются.