Глава 3. Обзор дерева каталогов

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

Обзор

Глава основана на Linux filesystem standard, FSSTND, версии 1.2 (см. библиографию), который пытается установить стандарт на организацию дерева каталогов в Linux-системе. Такой стандарт имеет то преимущество, что будет проще писать или портировать программное обеспечение для Linux и управлять Linux-машинами, так как все будет находиться в строго определенных местах. Никто не заставляет следовать данному свободному стандарту, но стандарт имеет поддержку большинства, если не всех, дистрибутивов Linux. Не следует без крайне важных причин отказываться от поддержки FSSTND. FSSTND пытается следовать за традициями Unix и текущими тенденциями, делая тем самым Linux системы совместимыми с другими Unix системами, и наоборот.

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

Эта глава не не объясняет подробно все файлы. Здесь дается краткий обзор с точки зрения файловой системы. Дальнейшая информация относительно каждого файла доступна в другом месте этого руководстве или на man страницах.

Полное дерево каталогов разделено на части, каждая из которых может располагаться на своем диске или в своем разделе в интересах упрощения системного администрирования и резервирования. Это позволяет работать в случае недостатка места на дисках. Главные части дерева каталогов: файловые системы root, /usr, /var и /home (см. рисунок 3-1 ). Каждая часть имеет свою цель. Дерево каталогов было разработано так, чтобы оно хорошо работало в сети Linux машин, которые могут совместно использовать некоторые части файловых систем устройств только для чтения (например, CD-ROM), или сети с NFS.

Рисунок 3-1. Части дерева каталогов Unix. Подчеркнутые штриховкой линии указывают ограничения раздела.

Роли различных частей дерева каталогов описаны ниже.

  • Корневая файловая система специфична для каждой машины (обычно она хранится на локальном диске, хотя это мог бы быть ramdisk или сетевой диск) и содержит файлы, которые являются необходимыми для загрузки системы. Содержимого корневой файловой системы достаточно для загрузки в однопользовательском режиме. Именно эта файловая система используется при загрузке до тех пор, пока не будут смонтированы другие файловые системы. Она также содержит инструментальные средства для ремонта поврежденной системы и для восстановления потерянных файлов из резервных копий.

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

  • Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п.), файлы протоколов, форматированных man страниц и временные файлы.

  • Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).

Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если система является маленьким сервером небольшой организации (автор имеет дело именно с таким случаем) или личным однопользовательским компьютером. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей. Linux является очень гибкой системой, с ней приятно работать. Тем не менее важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.

Структура файловой системы в Unix группирует файлы по их назначению, то есть, все команды находятся в одном месте, все файлы данных в другом, документация в третьем и так далее. Альтернативный вариант группировал файлы согласно программе, которой они принадлежат, то есть, все Emacs файлы были бы в одном каталоге, весь TeX в другом, и так далее. Проблема с последним подходом состоит в том, что это делает трудным совместно использовать файлы (каталог программ часто содержит статические, общие, изменяющиеся и личные файлы), и иногда даже находить файлы (например, man страницы в огромном числе мест, благодаря чему поиск их программой просмотра превращается в кошмар.