Inodes и жесткие/мягкие ссылки

Тема дорожной карты · Linux & Unix Fundamentals

Inode хранит все метаданные файла (режим, владельца, размер, временные метки, указатели на блоки), кроме имени — имена находятся в записях каталогов и связаны с номером inode. Жёсткая ссылка — просто ещё одна запись каталога, указывающая на тот же inode (поэтому она должна быть на той же файловой системе и не может ссылаться на каталог). Символьная ссылка — это маленький файл со строкой пути; она может пересекать файловые системы, но ломается, если цель переместить. Смотрите inode через ls -li, stat и df -i (исчерпание inode — частая причина «No space left» при свободном диске).

Как это работает

Inodes и жесткие/мягкие ссылки — это одно корневое дерево (/). Точки монтирования (диски, разделы, сетевые шары) подключаются как поддиректории — нет C:/D:. Стандартная раскладка (Filesystem Hierarchy Standard, FHS): /etc (конфиг), /var (изменяемое состояние — логи, очереди), /usr (read-only программы), /opt (third-party), /home (пользовательские данные), /tmp (волатильно), /proc и /sys (псевдо-FS ядра). Распространённые FS: ext4 (Linux-дефолт), xfs (большие файлы), btrfs/zfs (снапшоты, дедуп), tmpfs (in-memory).

Когда применять

ext4 для boot/root — кроме случаев конкретной нужды (xfs для очень больших данных, btrfs/zfs для снапшотов). На production-серверах вынесите /var/log на отдельный раздел против затопления root логами. LVM — когда может понадобиться рост/сжатие volume. Mount с noexec, nosuid, nodev где уместно (/tmp, /home) — defence in depth.

Типичные ошибки

Ловушки Inodes и жесткие/мягкие ссылки: кончились inodes до места на диске (много мелких файлов — df -i покажет); путаница абсолютных (/etc/foo) и относительных путей (./foo зависит от pwd); правка /proc и /sys без понимания (мгновенно, на уровне ядра); удаление кусков /usr/bin "для освобождения места" (ОС перестаёт работать); /tmp writable + executable (вектор privilege escalation).

Связанные понятия

Полезные ресурсы