Блог "Дети ОИТа"
/поиск

Файловая иерархия FHS

Файловая система в Linux организована по стандарту FHS (Filesystem Hierarchy Standard). Это правило, которое определяет, в каком каталоге что должно лежать.

Файловая система в Linux организована по стандарту FHS (Filesystem Hierarchy Standard). Это правило, которое определяет, в каком каталоге что должно лежать. Знание иерархии помогает быстро находить конфигурационные файлы, логи, программы и монтировать устройства. Ниже — основные каталоги корня (/) и их назначение.


  1. / — Корневой каталог

Основа всей иерархии. Содержит все остальные каталоги. Только root имеет права на запись.

  1. /bin (binary)

Основные системные утилиты, необходимые для работы системы в однопользовательском режиме (даже если не смонтированы другие разделы). Примеры: ls, cp, mv, bash. Раньше здесь были только статические бинарники, сейчас часто это ссылка на /usr/bin.

  1. /sbin (system binary)

Системные административные команды, которые обычно выполняются от root. Например: fdisk, mkfs, iptables, reboot. Тоже часто ссылается на /usr/sbin.

  1. /boot

Всё, что нужно для загрузки системы: ядро Linux (vmlinuz), образ initramfs, конфигурации загрузчика (GRUB). Обычно небольшой раздел (сотни мегабайт).

  1. /dev (devices)

Файлы устройств. Здесь представлены все физические и виртуальные устройства: диски (/dev/sda), терминалы, звуковые карты, псевдоустройства (/dev/null, /dev/random). Современные системы используют udev для динамического управления этими файлами.

  1. /etc (et cetera)

Главный каталог конфигурационных файлов всей системы. Почти все настройки программ и сервисов хранятся здесь (в текстовом виде). Примеры: /etc/passwd, /etc/fstab, /etc/nginx/nginx.conf, скрипты инициализации (хотя systemd перенёс многие в другие места). Администратор проводит здесь много времени.

  1. /home

Домашние каталоги обычных пользователей. Каждый пользователь имеет свою подпапку (/home/user), где хранит личные файлы, настройки (скрытые файлы, начинающиеся с точки). При переустановке системы этот раздел часто оставляют нетронутым.

  1. /lib, /lib64

Системные библиотеки, необходимые для работы программ из /bin и /sbin. /lib64 — для 64-битных версий. Модули ядра тоже могут лежать здесь (/lib/modules). Часто являются символическими ссылками на каталоги внутри /usr.

  1. /media

Точка монтирования съёмных носителей, которые подключаются автоматически (USB-флешки, CD-ROM). Современные десктопные окружения монтируют их именно сюда, в подкаталоги по метке устройства.

  1. /mnt (mount)

Исторически — временная точка ручного монтирования. Используется администратором для временного подключения файловых систем (например, для восстановления данных).

  1. /opt (optional)

Каталог для установки дополнительного (стороннего) программного обеспечения, которое не входит в стандартный репозиторий дистрибутива. Например, проприетарные программы вроде Google Chrome (хотя сейчас он ставится в /opt/google/chrome), Oracle, некоторые игры.

  1. /proc (process)

Виртуальная файловая система, предоставляющая информацию о процессах и состоянии ядра в реальном времени. Содержит файлы с данными о каждом работающем процессе (по PID), параметры ядра, статистику. Администраторы заглядывают сюда через команды типа cat /proc/cpuinfo, cat /proc/meminfo или изменяют параметры через sysctl.

  1. /root

Домашний каталог суперпользователя root. Обычно не доступен обычным пользователям. Хранит личные файлы и настройки администратора.

  1. /run

Временная файловая система (tmpfs), хранящаяся в оперативной памяти. Содержит данные о работе системы с момента загрузки: PID-файлы сервисов, сокеты, информацию о сессиях пользователей. Очищается при перезагрузке.

  1. /srv (service)

Данные для сервисов, предоставляемых системой (например, файлы веб-сервера — /srv/www, FTP — /srv/ftp). Используется не всеми дистрибутивами, но предписано стандартом.

  1. /sys

Ещё одна виртуальная файловая система (sysfs), предоставляющая интерфейс для взаимодействия с устройствами и драйверами ядра в структурированном виде (в отличие от /proc, где всё вперемешку). Используется для настройки оборудования и получения информации.

  1. /tmp (temporary)

Каталог для временных файлов, создаваемых приложениями. Обычно очищается при перезагрузке (в некоторых системах — по расписанию). Может быть размещён в tmpfs (в оперативной памяти) для ускорения.

  1. /usr (Unix System Resources)

Огромный каталог, который содержит пользовательские приложения и данные, доступные только для чтения (кроме обновлений). Раньше его часто выносили на отдельный раздел. Основные подкаталоги:

· /usr/bin — большинство исполняемых файлов (не критичных для начальной загрузки).
· /usr/sbin — системные утилиты администратора (не критичные).
· /usr/lib — библиотеки для программ из /usr/bin.
· /usr/local — место для программ, собранных вручную администратором (не из пакетного менеджера). Имеет свою структуру bin, etc, lib и т.д.
· /usr/share — архитектурно-независимые данные (документация, иконки, man-страницы, шрифты).
· /usr/src — исходные коды ядра и других программ (опционально).

  1. /var (variable)

Каталог для изменяемых данных, создаваемых во время работы системы. Наиболее важный для администратора:

· /var/log — системные логи (журналы). Здесь ищут ошибки.
· /var/spool — очереди задач (печать, почта).
· /var/cache — кэш пакетного менеджера и других приложений.
· /var/tmp — временные файлы, которые должны сохраняться между перезагрузками.
· /var/lib — базы данных и состояния сервисов (например, MySQL хранит данные здесь).

В современных дистрибутивах (например, Fedora, Ubuntu) многое унифицировано, но стандарт FHS соблюдается, поэтому эти знания универсальны для любой Linux-системы.