🎯 Понимаем, что такое Inode в Unix/Linux

🎯 Понимаем, что такое Inode в Unix/Linux
Если вы работаете с Linux или администрируете серверы — понимание inode’ов обязательно. Без этого не разобраться в том, как устроена файловая система.
📦 Файл = данные + метаданные
Метаданные (информация о файле) хранятся в inode. Что в нём есть:
-
🔢 Номер inode
-
👤 UID (владелец)
-
🧑🤝🧑 GID (группа)
-
📏 Размер
-
🕐 Atime — время последнего доступа
-
🛠 Mtime — время последнего изменения данных
-
🧾 Ctime — время изменения метаданных
-
🧱 Размер блока
-
🔐 Права и тип (mode)
-
🔗 Кол-во жёстких ссылок
-
📜 ACL (списки контроля доступа)
❗ Имена файлов в inode не хранятся!
Они записываются в структуре директории. В обычных случаях — линейно, поэтому поиск может быть медленным.
👉 Ext4 и XFS используют B-деревья для быстрого (O(1)) поиска по имени.
📁 Dentry (Directory Entry)
Это структура, которая связывает имя файла с inode внутри директории.
📂 Как inode указывает на данные файла?
-
🧭 Direct block — inode содержит номер блока с реальными данными
-
🧩 Indirect block — inode содержит номер блока, в котором лежат номера других блоков с данными
🛠 Ext vs XFS: как создаются inode’ы?
-
Ext — фиксированное количество inode’ов при форматировании. Закончились? Только форматировать заново.
-
XFS — inode’ы создаются по мере необходимости. Гораздо гибче.
🗑 Удаление файла
Вызов unlink() просто убирает запись из директории и помечает inode как свободный.
⚠️ Сами данные остаются на диске, пока не будут перезаписаны.
🔗 Жёсткие и символические ссылки
-
Жёсткая ссылка ➕ увеличивает счётчик ссылок в inode
-
Символическая ссылка ❌ не влияет на счётчик
📘 Что такое суперблок?
Это метаданные самой файловой системы. Их обычно несколько (на случай порчи). Что там хранится:
-
Общий размер FS
-
Размер блока
-
Кол-во свободных/занятых блоков
-
Где находится таблица inode’ов
-
Карта блоков диска
📖 Посмотреть суперблок можно так:
dumpe2fs /dev/mount | grep -i superblock
👉 @i_odmin