Стандарт иерархии файловой системы (FHS)
Тема дорожной карты · Linux & Unix Fundamentals
Стандарт иерархии файловой системы (FHS) определяет назначение каждого каталога верхнего уровня, обеспечивая согласованность путей для программного обеспечения и администраторов систем. Это делает файловую систему предсказуемой и облегчает управление файлами, что особенно важно для больших систем и распределенных окружений. Знание FHS помогает создавать скрипты и устанавливать пакеты корректно, что снижает риск ошибок и повышает производительность.
Как это работает
Стандарт иерархии файловой системы (FHS) представляет собой одно корневое дерево (/), где каждый каталог имеет определенное назначение. Точки монтирования (диски, разделы, сетевые шары) подключаются как поддиректории, что обеспечивает гибкость и масштабируемость системы. Основные каталоги включают /bin для исполняемых файлов, /sbin для системных утилит, /lib (сейчас обычно симлинки в /usr), /etc для системных конфигураций, /var/log для логов, /var/lib для состояния сервисов, /tmp для эфемерных данных, /run для runtime-сокетов и PID-файлов, /opt для самодостаточных сторонних пакетов, /srv для отдаваемых данных, /usr/local для ПО, установленного админом мимо пакетного менеджера.
Когда применять
Стандарт иерархии файловой системы (FHS) применяется при установке и управлении программным обеспечением, а также при конфигурации и обслуживании серверов. Распространенные файловые системы включают ext4 (дефолт для Linux), xfs (для больших файлов), btrfs/zfs (для снапшотов и дедупликации), tmpfs (для виртуальной памяти). При настройке сервера важно вынести /var/log на отдельный раздел, чтобы избежать затопления root логами. Использование LVM позволяет динамически менять размеры volume, что полезно для адаптации к изменяющимся требованиям.
Типичные ошибки
Ключевые ловушки при работе со стандартом иерархии файловой системы (FHS) включают кончение инодов до места на диске, что может произойти из-за большого количества мелких файлов. Также важно различать абсолютные (/etc/foo) и относительные пути (./foo), которые зависят от текущего рабочего каталога. Попытки править файлы в /proc и /sys без полного понимания их функций могут привести к непредсказуемым последствиям, так как эти изменения могут быть мгновенно применены на уровне ядра. Удаление кусков /usr/bin "для освобождения места" может привести к неработоспособности системы. Наконец, /tmp должен быть доступен для записи и выполнения, чтобы избежать вектора привилегированного доступа.