Файловая система Linux
Главный принцип
В Linux все находится внутри одного дерева, которое начинается с /
| Путь | Для чего используется |
|---|---|
/ |
корень файловой системы Linux. С него все начинается. |
/etc |
конфигурационные файлы |
/bin |
основные команды (ls, cp, mv...) |
/sbin |
системные утилиты (fsck, reboot...) |
/usr |
программы, библиотеки и ресурсы |
/var |
переменные данные: логи, кэши, спулы, базы данных |
/var/log |
логи (syslog, nginx, auth.log, …) |
/usr/bin, /usr/sbin |
системные исполняемые файлы |
/usr/local |
софт, установленный руками, не через пакетный менеджер |
/opt |
дополнительное ПО (обычно вендорное ПО) |
/home/<user> |
домашняя директория пользователя <user> |
/root |
домашняя директория администратора root |
/tmp |
временные файлы, чистится при перезагрузке (tmpfs) или по таймеру |
/proc |
виртуальная файловая система о процессах и ядре |
/sys |
виртуальная файловая система об устройствах и ядре |
/boot |
Ядро Linux и загрузчик |
/lib |
системные библиотеки |
/dev |
интерфейсы устройств |
/run |
данные текущего запуска системы |
Ежедневные каталоги для DevOps
- /etc - конфиги
- /var/log - поиск ошибок
- /usr/bin - исполнемые файлы
- /opt - установка приложений (GitLab Runner, Nexus, SonarQube...)
- /tmp - временные файлы скриптов
- /home - проекты пользователей
- /dev - работа с устройствами
- /proc и /sys - диагностика системы
Что за /var
var (variable) - изменяемые данные.
Что за /proc
Описание
Виртуальная файловая система procfs. Она не хранится на диске. Ядро Linux создает ее при загрузке и динамически генерирует содержимое файлов при обращении к ним.
Описывает то, что сейчас происходит. Здесь находится состояние системы и процессов.
Напрмер когда вы вводите команду cat /proc/meminfo происходит следующее:
1) cat просит открыть /proc/meminfo
2) Ядро понимает, что это procfs
3) Собирает актуальную информацию о памяти прямо сейча
4) Отдает ее cat
5) cat выводит текст
То есть каждый вызов - это генерация данных "на лету"
Что за /sys
Описание
Виртуальная файловая система sysfs, через которую ядро предоставляет информацию об устройствах, драйверах, шинах и некоторых параметрах работы обороудования. В отличии от /proc, она описывает не процессы, а объекты ядра и аппаратное обеспечение. Многие параметры можно не только читать, но и изменять.
Отвечает на вопрос: "Из чего состоит компьютер?"
Например при вводе команды lspci она обращается к дереву: sys/class/net/eth0
Вопрос: Откуда ip link или ethtool знают о существовании карт?
Ответ: Потому что после обнаружения устройства ядро создает объект устройства, регистрирует его в свеой модели устройств (device model) и экспортирует информацию через sysfs. Утилиты вроде ip, ethtool,udevadm и многие другие используют информцаию из ядра, в том числе через /sys, а не читают какие-то конфигурационные файлы.
Что за /dev
Описание
каталог, в котором находятся файлы устройств (device nodes)
/dev/sda
/dev/nvme0n1
/dev/null
/dev/zero
...
Но внутри них нет данных.
/dev/nvme0n1 - это интерфейс общения с устройством, а не само устройство
Как это работает?
Например мы установили nvme накопитель
1) Ядро находит устройство на PCIe
2) Создает объект устройства в /sys
3) Загружает драйвер
4) Создает файл устройства в /dev
Ремарка о dev и sys
- /dev - работа с самим устройством (работаю с тем, для чего устройство существует: читать сектора, записывать....)
- /sys - управление устройством и получение информации о нем. (работа с поведением устройства или драйвера)
Что за /bin;/sbin;/usr/bin;/usr/sbin
- /bin - основные полозовательские утилиты
- /sbin - системные утилиты для администрирования. Многие из них требуют привилегий
root. В современных дистрибутивах эти каталоги обычно являются симолическими ссылками на/usr/binи/usr/sbin
Большинство дистрибутивов используют символические ссылки
Зачем ядро представляет каждый процесс как отдельный каталог.
Это удобная модель представления сложных объектов.
- Процесс -> каталог
- Внутри свойства процесса -> файлы
- Некоторые свойства -> подкаталоги (fd, task...)
Например есть процесс /proc/1234
у него есть следующие элементы:
- cmdline (как был запущен процесс)
- status (состояние процесса)
- environ (переменные окружения)
- maps (карта памяти)
- fd/ (открытые файловые дескрипторы)
- exe (ссылка на исполняемый файл)
- и многие другие
Монтирование устройств
Что будет с содержимым директории /mnt/backup если поверх нее смонтировать диск?
После монтирования устройства ты увидишь только содержимое этого устройства.
Никакие файлы которые были в директории до монтирования не удаляются а просто становятся невидимыми до тех пор, пока не рузмонтируется устройство.
Точка монтирования - это не объединение содержимого, а замена отображаемого содержимого каталога содержимым файловой системы.
Директория /mnt предназначена для временного ручного монтирования.
Если диск будет использоваться постоянно, тогда обычно создают каталог:
и прописывают его в /etc/fstab
Последняя проверка 18.09.2026