# Inode _Файловая система · LinuxLab Knowledge Base_ **TL;DR:** Inode - это запись в файловой системе с метаданными и указателями на блоки данных файла. Имя файла лежит отдельно (в директории) и просто указывает на inode. ## Что такое inode Когда ты создаёшь файл в Linux, файловая система выделяет под него **inode** - фиксированную структуру в служебной области диска, которая хранит: - тип объекта (файл, директория, symlink, устройство…) - права доступа ([file-permissions](/kb/file-permissions.md)) - `rwx` бытность для u/g/o - UID и GID владельца - размер файла - времена `atime` / `mtime` / `ctime` - количество имён, ссылающихся на этот inode (link count) - указатели на блоки данных (где физически лежит содержимое) **Имя файла** - это просто строка в записи **директории**, которая сопоставлена inode-номеру. Поэтому одно содержимое может иметь несколько имён ([hard-link](/kb/hard-link.md)), а директория - это специальный тип inode со списком пар `имя → inode`. ## Почему это важно Из этого следует несколько неочевидных вещей: 1. **Файл не уничтожается пока есть хотя бы одно имя.** `rm` снимает имя из директории и уменьшает link count. Когда счётчик доходит до 0 **и** ни один процесс не держит файл открытым - освобождаются блоки данных. 2. **Inode - отдельный пул от блоков.** На ext4 их количество фиксируется при создании FS. Можно упереться в лимит inode при свободном дисковом месте - классический инцидент с миллионами мелких файлов сессий/кешей. 3. **mv внутри одной FS - это переименование** (меняется только запись в директории, inode тот же). А между разными FS - это копирование+удаление. 4. **Директория тоже занимает inode.** На сильно вложенных проектах директории могут быть третьим источником inode-расхода после кешей и логов. ## Команды ```bash ls -i ~/.bashrc ``` Посмотреть inode-номер файла ```bash stat ~/.bashrc ``` Полная карточка: Inode, Links, Size, Access/Modify/Change times ```bash df -i ``` Использование inode по файловым системам - ключевая команда для диагностики «диск full при свободных GB» ```bash find / -xdev -printf '%i\n' 2>/dev/null | sort -u | wc -l ``` Сколько inode реально использовано в одной FS (без mount points) ## См. также - [Hard link](/kb/hard-link.md) - [Symbolic link](/kb/symbolic-link.md) - [ext4 - рабочая лошадь Linux-ФС](/kb/ext4.md) - [Sparse-файлы - дыры и apparent size](/kb/sparse-files.md) - [File permissions: rwx и chmod](/kb/file-permissions.md)