Структура файловой системы в Linux VPS

Если вы новичок в Linux и Unix-подобных операционных системах, основные способы взаимодействия с операционной системой и навигации по ней могут показаться вам сложными и запутанными. Также сначала не совсем понятно, как структурирована файловая система.

Данная статья поможет разобраться с основными аспектами стандартной файловой системы Linux, ознакомит с некоторыми из наиболее интересных каталогов и подскажет, где искать важные компоненты в серверной среде.

Краткая история развития файловой системы Linux

Linux наследует многие принципы организации файловой системы от Unix. Еще в 1979 году Unix установила стандарты для контроля того, как совместимые системы будут организовывать свои файлы.

Стандарт иерархии файловых систем Linux (Filesystem Hierarchy Standard, сокращенно FHS) – это базовый стандарт, поддерживаемый Linux Foundation, он определяет организационную структуру, которую должны поддерживать дистрибутивы Linux для операционной совместимости, простоты администрирования и обеспечения надежной работы межсетевых приложений.

При использовании этих систем важно отметить, что практически все Linux реализует через файлы: текстовый файл – это файл, каталог – это тоже файл (просто список других файлов), принтер представлен файлом (драйверы устройства могут отправлять все, что записано в файл принтера, на физический принтер) и т.д.

Конечно, не всегда все так просто, но такой пример позволяет продемонстрировать подход, который выбрали разработчики системы – это передача текста и байтов и возможность применять аналогичные стратегии для редактирования и доступа к различным компонентам.

В этой статье мы не будем точно следовать спецификации, потому что дистрибутивы часто отклоняются от реального стандарта. Вместо этого мы рассмотрим фактическую структуру каталогов сервера Ubuntu,. Это намного более полезно.

Простая навигация

Прежде чем приступить к работе со структурой файловой системы, нужно ознакомиться с базовой навигацией по файловой системе.

Для начала нужно понимать, в какой точке системы вы находитесь. Существует несколько способов узнать это. Один из простейших – команда pwd:

pwd
/root

Она просто выводит текущий каталог.

Затем нужно осмотреться вокруг и узнать, какие файлы находятся в текущем каталоге. Для этого существует команда ls:

ls
bin   etc         lib         mnt   root  selinux  tmp  vmlinuz
boot  home        lost+found  opt   run   srv      usr
dev   initrd.img  media       proc  sbin  sys      var

Эта команда выводит файлы и каталоги, которые вы можете найти в текущем каталоге.

Команда ls принимает дополнительные флаги. Флаги изменяют стандартное поведение команды или отображают данные другим способом.

К примеру, чтобы было легче различать файлы и каталоги, вы можете отобразить символ / после имени каталога с помощью флага –F.

ls -F
bin/   home/        media/  root/     srv/  var/
boot/  initrd.img@  mnt/    run/      sys/  vmlinuz@
dev/   lib/         opt/    sbin/     tmp/
etc/   lost+found/  proc/   selinux/  usr/

Наиболее популярными являются флаги -l и –a. Первый выводит расширенный результат:

ls -l
total 76
drwxr-xr-x  2 root root  4096 Apr 26  2012 bin
drwxr-xr-x  3 root root  4096 Apr 26  2012 boot
drwxr-xr-x 13 root root  3900 Dec  4 18:03 dev
drwxr-xr-x 78 root root  4096 Dec  4 19:29 etc
drwxr-xr-x  3 root root  4096 Dec  4 19:28 home
lrwxrwxrwx  1 root root    33 Apr 26  2012 initrd.img -> /boot/initrd.img-3.2.0-24-virtual
drwxr-xr-x 16 root root  4096 Apr 26  2012 lib
. . .

Это создает вывод, где каждый файл или каталог помещен в отдельную строку (имя находится справа). Здесь есть много информации, которая сейчас вам не понадобится. В первую очередь сейчас важен самый первый символ – он указывает на тип файла. Три наиболее распространенных типа:

  • -: обычный файл.
  • d: каталог (файл определенного формата, в котором перечислены другие файлы).
  • l: жесткая или гибкая ссылка (в основном это ярлык для другого файла в системе).

Флаг –а выводит все файлы, включая скрытые. Linux автоматически скрывает файлы, чье имя начинается с точки.

ls -a
.  ..  .bash_logout  .bashrc  .profile

В этом примере все файлы скрыты. Первые две записи (. и ..) очень важны. Каталог . – это сокращение, которое означает текущий каталог. Каталог .. – это сокращение, которое означает родительский каталог текущего каталога.

Чтобы перейти в другой каталог, используйте команду cd :

cd /bin

Вы можете указать в команде абсолютный или относительный путь.

Абсолютным путем является путь к файлу, определяющий расположение каталога в верхней части дерева каталогов. Абсолютные пути начинаются с «/», как вы видите выше.

Относительный путь – это путь к файлу, который относится к текущему рабочему каталогу. То есть, вместо того чтобы определять местоположение файла относительно верхушки структуры каталога, вы можете определить его по отношению к тому, где вы находитесь сейчас.

Например, чтобы перейти в каталог, который находится в текущем каталоге и называется documents, нужно выполнить эту команду:

cd documents

Если перед именем каталога нет символа /, команда использует текущий каталог как отправную точку поиска пути.

Тут будут полезны сокращения, о которых говорилось выше: чтобы перейти в родительский каталог текущего каталога, достаточно ввести:

cd ..

Общий обзор структуры файловой системы Linux

Первое, что вам нужно знать при просмотре файловой системы Linux, — это то, что файловая система содержится в одном дереве независимо от того, сколько подключено устройств.

Это означает, что в основной файловой системе представлены все компоненты, доступные в операционной системе. Если вы используете Windows в качестве основной операционной системы, для вас это будет непривычно. В Windows каждый жесткий диск или пространство для хранения представлены в виде собственной файловой системы, которая обозначается буквенно (C: является стандартным каталогом верхнего уровня иерархии системных файлов, а дополнительные диски или пространства хранения получают другие буквенные обозначения).

В Linux каждый файл или устройство в системе находится в корневом каталоге, который отмечен символом /.

Таким образом, чтобы перейти в каталог верхнего уровня всей операционной системы и посмотреть, что там есть, можно ввести:

cd /
ls
bin   etc         lib         mnt   root  selinux  tmp  vmlinuz
boot  home        lost+found  opt   run   srv      usr
dev   initrd.img  media       proc  sbin  sys      var

Каждый файл, устройство, каталог или приложение находится в этом каталоге. Здесь вы можете увидеть начало остальной структуры каталогов. Ниже мы рассмотрим эти каталоги подробнее.

Каталог /bin

Этот каталог содержит основные команды и программы, которые необходимы для получения минимальной рабочей среды при загрузке. Они хранятся отдельно от других программ в системе, чтобы вы могли поддерживать систему, даже если другие части файловой системы повреждены или недоступны.

В этом каталоге находятся ls и pwd. Команда cd фактически встроена в оболочку (bash), которая также находится в этом каталоге.

Каталог /boot

Этот каталог хранит файлы, изображения и ядра, необходимые для загрузки системы. В то время как каталог /bin содержит базовые компоненты, /boot содержит основные утилиты, которые фактически позволяют системе загружаться.

Здесь вы найдете текущие файлы ядра.

Каталог /dev

В этом каталоге хранятся файлы, которые представляют собой устройства в системе. Каждый жесткий диск, терминал, устройство ввода или вывода, доступное в системе, представлено здесь. В зависимости от устройства вы можете работать здесь по-разному.

Например, устройство, представляющее жесткий диск (/dev/sda), можно подключить к файловой системе, чтобы получить доступ к нему. С другой стороны, если у вас есть файл, представляющий линейный принтер типа /dev/lpr, вы можете напрямую написать информацию в этот файл, чтобы отправить ее на принтер.

Каталог /etc

Это одна из точек файловой системы, где вы будете проводит много времени, если работаете системным администратором. Этот каталог в основном хранит конфигурации для различных общесистемных сервисов.

По умолчанию этот каталог содержит много файлов и подкаталогов. Он содержит файлы конфигурации для большинства задач в системе, независимо от их функции. Если приложению нужно несколько конфигурационных файлов, для него создается подкаталог. Если вы хотите настроить сервис или программу для всей системы, скорее всего, здесь вы найдете необходимый конфигурационный файл.

Каталог /home

Этот каталог содержит домашние каталоги всех пользователей в системе (кроме административного пользователя, root). При создании других пользователей в этом каталоге обычно создается одноименный каталог.

Каждый пользователь имеет право на запись в своем домашнем каталоге. Как правило, у обычных пользователей есть только право на запись в их собственном домашнем каталоге. Это помогает сохранить файловую систему в чистоте и защищает конфигурации от посторонних пользователей.

В домашнем каталоге часто встречаются скрытые файлы и каталоги (их имена начинаются с точки), которые позволяют настраивать инструменты конкретных пользователей. Установить общесистемные значения по умолчанию можно в каталоге /etc; затем каждый пользователь может переопределить их по мере необходимости в своем домашнем каталоге.

Каталог /lib

Этот каталог используется для хранения всех общесистемных библиотек, которые нужны каталогам /bin и /sbin. Эти файлы в основном обеспечивают функциональность других программ в системе. Это один из каталогов, к которым вам не придется часто обращаться.

Каталог /lost+found

Это специальный каталог, содержащий файлы, восстановленные /fsck, программой восстановления файловой системы Linux. Если файловая система повреждена и требует восстановления, иногда система может обнаружить файлы, но потерять ссылку на их местоположение. В этом случае система разместит их в этом каталоге.

В большинстве случаев этот каталог остается пустым. Если ваша система была взломана или случилось что-либо подобное, после восстановления всегда полезно проверить этот каталог.

Каталог /media

Этот каталог обычно пуст при загрузке. Его реальная цель – предоставить место для установки съемных носителей. В серверной среде этот каталог в большинстве случаев не будет использоваться. Но если в вашей операционной системе Linux когда-либо будет монтироваться мультимедийный диск, и вы не знаете, где он находится, обязательно проверьте этот каталог.

Каталог /mnt

Этот каталог похож на каталог /media, поскольку он существует только для того, чтобы служить точкой подключения для устройств. Этот каталог обычно используется для монтирования файловых систем, таких как внешние жесткие диски и т. д.

Этот каталог часто используется в среде VPS для установки сетевых дисков. Если у вас в удаленной системе есть файловая система, которую вы хотите установить на свой сервер, этот каталог отлично подходит для этого.

Каталог /opt

Роль этого каталога довольно неоднозначна. Он используется некоторыми дистрибутивами, но игнорируется другими. Как правило, он используется для хранения дополнительных пакетов. В мире Linux это обычно пакеты и приложения, которые не были установлены из репозиториев.

Например, если ваш дистрибутив предоставляет пакеты через диспетчер пакетов, но вы установили одну программу из исходного кода, этот каталог будет хорошим местом для хранения такой программы. Еще один каталог для хранения программного обеспечения такого рода – /usr/local.

Каталог /proc

/proc на самом деле больше, чем обычный каталог. В этом каталоге фактически установлена псевдо-файловая система. Файловая система proc не содержит реальных файлов, но динамически генерируется для отражения внутреннего состояния ядра Linux.

Это означает, что вы можете проверять и изменять различные данные из самого ядра в реальном времени. Например, вы можете получить подробную информацию об использовании памяти с помощью команды:

cat /proc/meminfo

Каталог /root

Это домашний каталог администратора (это пользователь root). Он функционирует точно так же, как и обычные домашние каталоги.

Каталог /run

Этот каталог предназначен для того, чтобы операционная система записывала информацию о времени выполнения на ранних этапах загрузки. В общем, большая часть информации в этом каталоге вам не понадобится.

Каталог /sbin

Этот каталог очень похож на каталог /bin, поскольку он содержит программы, которые считаются необходимыми для работы операционной системы. Различие состоит в том, что /sbin содержит команды, доступные только системному администратору, а /bin содержит программы для всех пользователей системы.

Каталог /selinux

В этом каталоге содержится информация о безопасности Linux. Это модуль ядра, который используется для обеспечения контроля доступа к операционной системе. По большей части вы можете игнорировать этот каталог.

Каталог /srv

Этот каталог используется для хранения файлов данных для сервисов, предоставляемых компьютером. Этот каталог используется редко, поскольку его функциональность можно реализовать в других точках файловой системы.

Каталог /tmp

Этот каталог используется для хранения временных файлов в системе. Он доступен для записи любому пользователю на компьютере и не сохраняется при перезагрузке. Это означает, что все файлы, которые вам нужны только для временной работы, можно поместить здесь. Они будут автоматически удалены, как только система выключится.

Каталог /usr

Этот каталог является одним из крупнейших каталогов в системе. В основном это набор папок, которые похожи на файлы в корневом каталоге / (типа /usr/bin и /usr/lib). Это место в основном используется для хранения всех несущественных программ, их документации, библиотек и других данных, которые не требуются в базовой среде системы.

Здесь будет храниться большинство файлов в системе. Здесь есть важный подкаталог /usr/local (альтернатива каталогу /opt для хранения локально скомпилированных программ). Еще одна интересная точка – каталог /usr/share, который содержит документацию, файлы конфигурации и другие полезные файлы.

Каталог /var

Этот каталог должен содержать переменные данные. На практике это означает, что он используется для хранения информации или каталогов, которые будут расти по мере использования системы.

Например, здесь хранятся системные логи и резервные копии. Также в этом каталоге хранится контент, обслуживаемый веб-сервером.

Заключение

Конечно, каждый дистрибутив имеет свои нюансы, но в общем цели всех перечисленных каталогов будут везде одинаковыми.

Попробуйте поработать с файловой системой самостоятельно – переместите пару каталогов, выясните, для чего нужны те или иные файлы.

Со временем вы начнете связывать разные каталоги с различными функциями и догадываться, куда идти для решения конкретной задачи. Если вам нужна краткая справка по какому-либо каталогу, вы можете использовать мануал:

man hier

Это предоставит вам общую информацию о каталоге.

Tags: ,