Cтруктура файловой системы Linux: корневой каталог, директории
Во многих дистрибутивах /tmp монтируется как tmpfs (в оперативной памяти), поэтому данные гарантированно удаляются при перезагрузке.
В новых версиях популярных дистрибутивов (Fedora, Ubuntu, Debian, Arch Linux) каталоги /bin, /sbin и /lib часто являются символическими ссылками на соответствующие подкаталоги внутри /usr (/usr/bin, /usr/sbin, /usr/lib). Это называется "merged-usr" и упрощает поддержку системы. Однако логика назначения файлов остается той же — просто физически они лежат в /usr.
В отличие от Windows, где есть диски вроде "C:\", "D:\", в Linux файловая структура представляет собой дерево. Любой диск или подключенное устройство "встраиваются" внутрь.
Главный каталог Linux (корень) обозначается символом /. Это отправная точка файловой системы. Здесь хранятся каталоги, конфигурации, программы, временные файлы и данные пользователя.
Если корневой каталог недоступен, система не сможет загрузиться и работать. Чтобы не допустить такой ситуации, важно разобраться в содержимом. Вот детализированная структура корневой файловой системы Linux — она может отличаться в зависимости от дистрибутива, но логика остается одинаковой:
Рассмотрим каталоги файловой системы Linux детальнее.
/binЭто каталог с базовыми исполняемыми программами, необходимыми для работы системы на стартовых этапах загрузки и при восстановлении. Файлы в /bin доступны пользователям и применяются для выполнения "ходовых" команд в терминале.
Каталог хранит утилиты и программы, которые используются суперпользователями, например, mount, fsck и ip (ранее использовался ifconfig, который сейчас считается устаревшим). Команды из /sbin нужны для настройки Linux, управления устройствами и восстановления операционной системы (ОС) после сбоев.
/bootВ этой папке лежат файлы загрузки: ядро, файлы загрузчика ОС, например, GRUB и файлы временной файловой системы initramfs.
Изменения в /boot влияют на процесс запуска ОС, поэтому с файлами нужно аккуратно работать через специальные инструменты.
/devКаталог хранит файлы, через которые программы получают доступ к дискам, терминалам, сетевым интерфейсам и другим ресурсам. Файлы динамически создаются системой udev на основе `devtmpfs" — это позволяет ядру создавать устройства заранее, а udev — управлять правами и правилами именования.
/etcЗдесь хранятся конфигурационные файлы служб и приложений. Примеры содержимого: сетевые настройки, сервисы systemd, параметры SSH, таблица монтирования (/etc/fstab). Если собираетесь вносить в каталог изменения, сохраняйте резервные копии, поскольку при ошибке можно утратить данные.
/homeЗдесь хранятся домашние каталоги пользователей с личными файлами, настройками приложений и скриптами. Права доступа в директории разграничены — каждый пользователь видит только свой каталог, а админ имеет доступ ко всем.
/lib и /lib64Эти каталоги содержат библиотеки, которые нужны для запуска программ из /bin и /sbin, а также модули ядра в lib/modules. На 64-битных системах библиотеки изначально распределены между двумя каталогами. Если попробуете изменить расположение и случайно ошибетесь, ОС будет некорректно работать.
/media и /mntПервый каталог используется для автоматического монтирования съемных носителей. Когда вы вставляете USB-накопитель, SD-карту или CD-диск, современные графические окружения (GNOME, KDE) часто монтируют их в /run/media/имя_пользователя/, а не в /media. Однако по классическому стандарту FHS каталог /media предназначен именно для съемных носителей, и некоторые системы продолжают использовать его.
/mnt применяется, если вы самостоятельно монтируете файловые системы и не хотите создавать в корне ОС "мусорные" папки. Здесь можно подключить внешние жесткие диски, образы CD-ROM и др. Автоматики нет — все придется делать вручную.
/optСюда устанавливается сторонний софт, который не входит в стандартные репозитории дистрибутива. Например, это могут быть проприетарные драйверы, браузеры, офисные программы, "тяжелые" игры.
В отличие от стандартных Linux-программ, программное обеспечение из /opt хранит данные в собственном каталоге, не засоряя другие хранилища.
/srvЭто хранилище данных, которые компьютер показывает другим пользователям в сети. Здесь лежит контент, отдаваемый серверами. При этом сами серверные программы хранятся в других местах.
Например, вы запускаете веб-сайт. В каталоге будут отображаться скрипты страницы, файлы, картинки с этого сайта.
/tmpСюда приложения сохраняют временные файлы, которые нужны только на время работы. Например, вы открываете в программе документ, и в каталог сохраняется копия.
Содержимое каталога может исчезнуть после перезагрузки компьютера.
Если нужно сохранить данные, заранее позаботьтесь о копировании.
/usrОдин из главных каталогов в Linux. /usr содержит доступные для пользователей приложения, утилиты, библиотеки и данные, которые нужны для работы ОС. Например, там хранятся ежедневно вызываемые программы, их документация и вспомогательные файлы.
Данные распределяются по подкаталогам:
Это место, где хранятся изменяемые сведения. Например, журналы, временные файлы, кеши и сообщения, данные сервисов и другое. Сюда скидывают информацию приложения и сервисы, поэтому каталог со временем переполняется. Следите за этим и периодически очищайте хранилище.
Понимание структуры /var особенно важно при работе с виртуальными машинами — например, в среде Evolution Compute от Cloud.ru, где журналы и состояния инстансов активно пишутся в изменяемые каталоги.
/procЭто виртуальная файловая система — "окно" в ядро Linux. Место на жестком диске она не занимает, так как является псевдо-файловой системой: файлы не хранятся даже в ОЗУ постоянно, а динамически генерируются ядром в момент обращения к ним, отражая текущее состояние системы и процессов.
Содержимое файловой системы делится на две части — информацию о процессах и данные о ядре. Последние можно не только читать, но и редактировать. Например, если нужно поменять параметры работы ядра, не перезагружая сервер.
Для пользователей каталог выглядит как папка с файлами. На самом деле это интерфейс для прямого взаимодействия с ядром. Отсюда утилиты получают статистику.
/sysЭто тоже директория в формате виртуальной файловой системы. Здесь хранятся данные о состоянии ОС, устройствах и драйверах. Через нее можно получать параметры оборудования и при необходимости менять их.
Это виртуальная файловая система (sysfs), которая существует только в оперативной памяти и предоставляет интерфейс для взаимодействия с ядром, устройствами и драйверами. Данные здесь при перезагрузке полностью удаляются — система создает их заново при каждом старте на основе обнаруженного оборудования. Жесткий диск при этом не используется.
Чтобы структурировать операционную систему и облегчить себе задачу по управлению процессами, разберитесь в структуре специальных каталогов. Рассказываем о трех.
Каталоги /run и /var/run/run, расположенный в TMPFS, содержит данные, актуальные с момента последней загрузки системы. Что здесь хранится:
- PID-файлы, содержащие идентификаторы процессов запущенных демонов. Они помогают понять, какие процессы останавливать или перезагружать.
- Сокеты (.sock). Это специальные файлы с данными для межпроцессного взаимодействия.
- Файлы блокировок (lock files), которые предотвращают одновременный запуск копий одной и той же службы или одновременный доступ к ресурсу.
Если перезагрузите систему, файлы удалятся. Это нужно, чтобы неактуальная информация не мешала запуску новой сессии.
В современных Linux-системах (с systemd) каталог /var/run — это символическая ссылка на /run. А /run, в свою очередь, хранится в оперативной памяти (tmpfs). Поэтому все PID-файлы, сокеты и блокировки обязательно удаляются при перезагрузке. Это сделано специально, чтобы старые, потерявшие актуальность данные не мешали запуску новой сессии. Постоянного хранения на диске здесь нет.
/rootЭто домашний каталог суперпользователя root, то есть администратора. Здесь можно хранить настройки, скрипты и файлы, которые нужны админу для работы. Каталог недоступен для пользователей, поскольку изолирован. Даже если рядовой пользователь случайно окажется "за кулисами" ОС, то не сможет просмотреть админские файлы.
У директорий свои роли, знание которых помогает пользователям эффективнее работать в системе Linux. Разобраться несложно, поскольку файловая система структурирована. Если будете понимать, как устроены каталоги и что в них хранится, сможете осознанно управлять ОС и быстро устранять неполадки.
