# Файловая система Unix (FHS)

> Иерархия каталогов Unix и Linux с единым корнем / и стандарт FHS, определяющий назначение /etc, /usr, /var, /home, /tmp и других каталогов; а также inode, монтирование и виртуальные файловые системы.

Источник: https://llmdocs.ru/wiki/fhs/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Стандарт**: Filesystem Hierarchy Standard
- **Предшественник**: FSSTND (1994)
- **Текущая версия**: FHS 3.0 (2015)
- **Сопровождение**: Linux Foundation
- **Принцип**: единое дерево с корнем /, устройства монтируются в каталоги
- **Виртуальные ФС**: /proc, /sys, /dev, /run
- **Файловые системы**: ext4, XFS, Btrfs, ZFS, tmpfs
**Файловая система Unix** устроена как единое дерево каталогов с корнем `/`. В отличие от Windows с её дисками `C:` и `D:`, все устройства — диски, разделы, флешки, сетевые ресурсы — **монтируются** в каталоги этого дерева. Назначение стандартных каталогов в [Linux](https://llmdocs.ru/wiki/linux.md) описывает **FHS** (*Filesystem Hierarchy Standard* — стандарт иерархии файловой системы), благодаря которому администратор в любом [дистрибутиве](https://llmdocs.ru/wiki/linux-distribution.md) знает, где искать конфигурацию, логи и программы.[1]

## История стандарта

В начале 1990-х каждый дистрибутив раскладывал файлы по-своему. В 1994 году вышел первый стандарт FSSTND, в 1997 году — FHS 2.0, обобщённый на все Unix-подобные системы, а в 2015 году Linux Foundation выпустила FHS 3.0. Современные системы на [systemd](https://llmdocs.ru/wiki/systemd.md) дополнительно описывают иерархию в документе `file-hierarchy(7)`.[3]

## Основные каталоги

| Каталог | Назначение |
|---|---|
| `/` | корень всей иерархии |
| `/etc` | конфигурация системы и служб: `/etc/ssh/sshd_config`, `/etc/nginx/` |
| `/home` | домашние каталоги пользователей; `/root` — домашний каталог root |
| `/usr` | установленные программы и данные только для чтения: `/usr/bin`, `/usr/lib`, `/usr/share` |
| `/usr/local` | программы, установленные администратором вручную, вне пакетного менеджера |
| `/opt` | крупные сторонние пакеты целиком: `/opt/google/chrome` |
| `/var` | изменяющиеся данные: логи (`/var/log`), кэши, очереди, базы данных (`/var/lib/postgresql`) |
| `/tmp` | временные файлы, часто очищается при перезагрузке |
| `/srv` | данные, обслуживаемые сервером (сайты, FTP) |
| `/boot` | ядро и загрузчик |
| `/dev` | файлы устройств: `/dev/sda`, `/dev/null`, `/dev/random` |
| `/proc`, `/sys` | виртуальные ФС с информацией о процессах и ядре |
| `/run` | данные времени выполнения (PID-файлы, сокеты), в памяти |
| `/mnt`, `/media` | точки монтирования — временные и съёмные носители |

Исторически программы делились между `/bin` (необходимые для загрузки) и `/usr/bin`, потому что `/usr` мог находиться на отдельном диске. В большинстве современных дистрибутивов прошло **объединение `/usr`** (*usr merge*): `/bin`, `/sbin` и `/lib` стали символическими ссылками на соответствующие каталоги в `/usr`.[6]

## «Всё есть файл»

Философия Unix представляет как файлы не только данные, но и устройства, процессы и параметры ядра:[2]

- `/dev/sda` — диск целиком; запись в него — запись на диск напрямую.
- `/dev/null` поглощает всё записанное, `/dev/zero` выдаёт нули, `/dev/urandom` — случайные байты.
- `/proc/<PID>/` — сведения о процессе (см. [Процессы и сигналы](https://llmdocs.ru/wiki/processes-signals.md)); `/proc/cpuinfo`, `/proc/meminfo` — о системе.
- `/sys/` — устройства и параметры ядра; запись в некоторые файлы меняет настройки на лету.

## Inode и ссылки

Файл на диске описывается **inode** — структурой с метаданными: тип, владелец, [права](https://llmdocs.ru/wiki/unix-permissions.md), размер, время изменения и расположение данных. Имя файла хранится не в inode, а в каталоге — это просто запись «имя → номер inode».[4] Отсюда:

- **Жёсткая ссылка** (`ln a b`) — ещё одно имя того же inode; файл удаляется, когда исчезает последнее имя.
- **Символическая ссылка** (`ln -s target link`) — отдельный маленький файл, содержащий путь к цели; может указывать на каталоги и другие файловые системы, но «ломается», если цель удалить.
- Файловая система может закончиться не по месту, а по inode — если создано очень много мелких файлов (`df -i`).

## Монтирование

```bash
lsblk                                   # диски и разделы
df -h                                   # занятое место по точкам монтирования
sudo mount /dev/sdb1 /mnt/data          # подключить раздел
findmnt                                 # дерево смонтированных ФС
cat /etc/fstab                          # что монтируется при загрузке
du -sh /var/log/* | sort -h             # что занимает место
```

Файл `/etc/fstab` описывает, какие разделы и куда монтировать при загрузке; современные системы указывают разделы по UUID, а не по именам вроде `/dev/sda1`, которые могут меняться.[5]

## Типы файловых систем

| ФС | Особенности |
|---|---|
| ext4 | надёжный стандарт по умолчанию во многих дистрибутивах |
| XFS | хорошо масштабируется на больших дисках, по умолчанию в RHEL |
| Btrfs | копирование при записи, снимки, сжатие, подтома |
| ZFS | снимки, контрольные суммы, RAID, встроенное сжатие |
| tmpfs | ФС в оперативной памяти: `/tmp`, `/run` |
| overlayfs | слои поверх друг друга — основа образов [Docker](https://llmdocs.ru/wiki/docker.md) |

## Практические советы

- Конфигурацию служб ищите в `/etc`, логи — в `/var/log` или в журнале ([journald и логи](https://llmdocs.ru/wiki/journald-logs.md)), данные служб — в `/var/lib`.
- Не устанавливайте файлы вручную в `/usr/bin` — это территория пакетного менеджера; для своего используйте `/usr/local` или `/opt`.
- Следите за заполнением `/var`: разросшиеся логи и кэши — частая причина остановки серверов.
- Размещайте данные баз и важные каталоги на отдельных разделах или томах, чтобы переполнение не затронуло систему.

## См. также

- [Linux](https://llmdocs.ru/wiki/linux.md)
- [Права доступа в Unix](https://llmdocs.ru/wiki/unix-permissions.md)
- [journald и логи](https://llmdocs.ru/wiki/journald-logs.md)
- [Процессы и сигналы](https://llmdocs.ru/wiki/processes-signals.md)
- [find и xargs](https://llmdocs.ru/wiki/find-xargs.md)

## Источники

1. [Filesystem Hierarchy Standard 3.0](https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html)
2. [hier(7) — Linux manual page](https://man7.org/linux/man-pages/man7/hier.7.html)
3. [file-hierarchy(7) — systemd](https://www.freedesktop.org/software/systemd/man/latest/file-hierarchy.html)
4. [inode(7) — Linux manual page](https://man7.org/linux/man-pages/man7/inode.7.html)
5. [mount(8) — Linux manual page](https://man7.org/linux/man-pages/man8/mount.8.html)
6. [freedesktop.org — The Case for the /usr Merge](https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/)
