Перейти к содержанию

Файловая система 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

Большинство дистрибутивов используют символические ссылки

/bin -> /usr/bin
/sbin -> /usr/sbin
/lib -> /usr/lib

Зачем ядро представляет каждый процесс как отдельный каталог.

Это удобная модель представления сложных объектов.

  • Процесс -> каталог
  • Внутри свойства процесса -> файлы
  • Некоторые свойства -> подкаталоги (fd, task...)

Например есть процесс /proc/1234

у него есть следующие элементы:

  • cmdline (как был запущен процесс)
  • status (состояние процесса)
  • environ (переменные окружения)
  • maps (карта памяти)
  • fd/ (открытые файловые дескрипторы)
  • exe (ссылка на исполняемый файл)
  • и многие другие

Монтирование устройств

Что будет с содержимым директории /mnt/backup если поверх нее смонтировать диск?

После монтирования устройства ты увидишь только содержимое этого устройства.

Никакие файлы которые были в директории до монтирования не удаляются а просто становятся невидимыми до тех пор, пока не рузмонтируется устройство.

Точка монтирования - это не объединение содержимого, а замена отображаемого содержимого каталога содержимым файловой системы.

Директория /mnt предназначена для временного ручного монтирования.

mount /dev/nvme1n1 /mnt

Если диск будет использоваться постоянно, тогда обычно создают каталог:

/data
/backup
/storage
/srv

и прописывают его в /etc/fstab


Последняя проверка 18.09.2026