#inode-vs-path
Что такое inode? Чем имя файла отличается от самого файла?
Что отвечать
Inode - структура метаданных файла в ядре: владелец, права, размер, timestamps, указатели на блоки данных. Имя файла - это запись в каталоге, которая связывает строку имени с номером inode. Файл - это inode плюс его данные; имя - только ярлык. Один inode может иметь несколько имён (hard link); файл с открытым fd живёт до закрытия даже после `rm`.
Что хотят услышать
Кандидат должен: - различить три сущности: inode (хранит метаданные), data blocks (хранят содержимое), directory entry (связывает имя и inode) - объяснить почему `rm` не освобождает место сразу, если есть открытый fd: ядро декрементирует link-count, но при `i_count > 0` физическое освобождение откладывается до закрытия - назвать `ls -i` и `stat` как инструменты увидеть inode-номер - объяснить почему inode-таблица ограничена при `mkfs` (поэтому `df -i` важен на FS с миллионами мелких файлов)
Подводные камни
- ✗ Сказать «файл = имя» - нет, имя это только ссылка на inode
- ✗ Не знать про `df -i` - типичная причина «места есть, а файл не создаётся»
- ✗ Думать что `rm` освобождает место мгновенно - нет, если кто-то держит fd
Follow-up
- ? Что делает `lsof | grep deleted`? Зачем это нужно?
- ? Можно ли создать файл, если все inode исчерпаны, но место есть?
- ? Чем отличается ext4 inode-структура от XFS?
Глубина в базе знаний