📁 Inode: невидимый паспорт каждого файла в Linux
Кратко: Inode — это структура данных в файловых системах Linux (ext4, XFS, btrfs), которая хранит всю информацию о файле, кроме его имени и содержимого. Размер, права доступа, владелец, временные метки, указатели на блоки с данными — всё это в inode. Имя файла лежит отдельно, в директории, и просто ссылается на номер inode. Без inode файл не существует, но пользователь их никогда не видит.
▫️Что хранит inode · Метаданные — размер файла (в байтах), права доступа (chmod), владелец (UID) и группа (GID), временные метки (atime — последнее чтение, mtime — последнее изменение содержимого, ctime — последнее изменение метаданных) · Счётчик ссылок — сколько имён (жёстких ссылок) указывают на этот inode. Когда счётчик падает до нуля — файл удаляется · Указатели на блоки данных — адреса дисковых блоков, где лежит содержимое файла. Для больших файлов — косвенная адресация (одинарная, двойная, тройная) · Номер inode — уникальный в пределах файловой системы (повторяется только при переполнении)
▫️Что НЕ хранит inode · Имя файла — имена лежат в директориях, которые отображают «имя → номер inode» · Содержимое файла — только указатели на блоки с данными
▫️Как это работает Создание файла: 1. Ядро находит свободный inode 2. Заполняет метаданные (размер = 0, права = 644, владелец = текущий пользователь) 3. В директории создаётся запись «filename.txt → номер inode» Открытие файла: 1. Система смотрит в директории: какой inode у filename.txt 2. Читает inode: где лежат блоки данных, какие права 3. Если права совпадают — открывает Удаление файла: 1. Удаляется запись в директории 2. Счётчик ссылок в inode уменьшается на 1 3. Если счётчик стал 0 — освобождаются блоки данных и сам inode
▫️Жёсткие и символические ссылки Жёсткая ссылка (hard link) · Второе имя файла. Создаётся командой ln original.txt hardlink.txt · Оба имени указывают на один inode. Счётчик ссылок становится 2 · Удалите original.txt — hardlink.txt останется (счётчик 1). Файл удалится, когда удалите последнее имя Символическая ссылка (soft link) · Отдельный файл, который хранит путь к оригиналу. Создаётся ln -s original.txt softlink.txt · Имеет свой собственный inode. Счётчик ссылок оригинала не меняется · Если удалить оригинал — ссылка становится битой (висячей)
▫️Почему inode важен для админа Исчерпание inode — файловая система может закончить свободные inode, даже если место на диске есть. Это происходит, когда создано много маленьких файлов (например, сессионные файлы в /var/spool/postfix, кэш Docker, плохо настроенные приложения). Лечится: df -i (посмотреть inode), удалить мелкие файлы или увеличить количество inode при форматировании (опция -N в mkfs.ext4). Поиск по inode — если у вас есть номер inode, можно найти все жёсткие ссылки на него (почти невозможно, но иногда полезно). Сломанные inode — результат ошибок файловой системы. Проверяется и чинится через fsck.
▫️Культурный феномен · «Закончились inode, а место есть» — классическая задача админа, когда чистишь кэш Docker или ловушку в почтовом спаме · «Жёсткие ссылки не работают между дисками» — потому что inode уникален только в пределах одной файловой системы · «Удалил файл, но место не освободилось» — кто-то держит файл открытым, и счётчик ссылок не обнулился · Любимая шутка файловых систем — «У меня всё есть: и inode, и место. Нет только файлов»
▫️Полезные команды Команда Что делает ls -i Показать номера inode файлов df -i Показать использование inode на всех ФС stat filename Показать подробную информацию об inode файла find / -inum 123456 Найти файл по номеру inode ln original hard Создать жёсткую ссылку ln -s original soft Создать символическую ссылку
#inode #linux #файловаясистема #ext4 #администрирование #devops