Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.
🎯 Понимаем, что такое 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