Разработка стандарта FHS (Filesystem Hierarchy Standard, иерархии файловой системы) была начата в августе 1993 года с попыток привести в порядок архитектуру каталогов и файлов в ОС GNU/Linux. 14 февраля 1994 года вышла первая версия стандарта именуемая как Filesystem Standard (FSSTND, стандарт файловой системы), свойственной для операционной системы GNU/Linux. Дальнейшие версии вышли в свет 9 октября 1994 года и 28 марта 1995 года.
С начала 1996 года к разработке новой версии FSSTND примкнула ассоциация разработчиков BSD, целью которой было изобрести стандарт, пригодный для всех unix-подобных ОС. Именно тогда название стандарта поменяли на FHS (Filesystem Hierarchy Standard, иерархии файловой системы).
Разработкой FHS занимается некоммерческое учреждение Free Standards Group, в состав которого входят такие большие разработчики аппаратного и программного обеспечения, как Red Hat, HP, Dell и IBM. Впрочем главная часть разработчиков Linux дистрибутивов, включая тех, кто входит и в состав FSG (Free Standards Group), не придерживаются стандарта на полные 100%. К примеру, такие пути как /srv, которые специально были созданы группой, почти нигде и никем не используются. Кое-кто из разработчиков Linux-систем и вовсе отвергает стандарт FHS и следует своему собственному, к примеру, GoboLinux.
Так как разработка стандарта FHS началась с предложения Linux-сообщества, иные разработчики UNIX и UNIX-like операционных систем всецело игнорируют его в пользу своих стандартов, которые время от времени получают довольно широкое распространение. К примеру, Mac OS X (макось:) совместно с традиционными именами UNIX-иерархии использует имена директорий такие, как /applications/, /library/ и /users/.
Каталоги и точки монтирования
В ОС семейства Windows каждому разделу диска назначается определённая буква (С: для системного (корневого) раздела), а в UNIX-like ОС вместо букв разделам назначаются так называемые точки монтирования, где / является корневой точкой монтирования (файловой системой). Обычно, когда говорят «точка монтирования» подразумевают «каталог» (директория).
Все файловые системы (устройства, разделы) и назначенные им точки монтирования указаны в файле /etc/fstab, в формате:
# <file system> <mount point> <type> <options> <dump> <pass> /dev/XXX / ext3 defaults 0 1 /dev/XXX /boot ext3 ro,nosuid,nodev 0 2 /dev/XXX none swap sw 0 0 /dev/fd0 /media/floppy auto noauto,rw,sync,user,exec 0 0 /dev/cdrom /media/cdrom iso9660 noauto,ro,user,exec 0 0 /dev/XXX /tmp ext3 rw,nosuid,nodev 0 2 /dev/XXX /var ext3 rw,nosuid,nodev 0 2 /dev/XXX /usr ext3 rw,nodev 0 2 /dev/XXX /home ext3 rw,nosuid,nodev 0 2
В первой колонке указано монтируемое устройство, а поэтому называть его «файловая система» немного не корректно, но поскольку оно содержит в себе и некую файловую систему, то говоря «устройство» (раздел, или даже каталог например /usr или /var) мы будем подразумевать «файловая система» и наоборот.
В системе в обязательном порядке существует как минимум одна точка монтирования, корневая (системная) / - это если в ходе установки ОС был выбран вариант установки с использованием всего доступного пространства без автоматического или ручного разбиения/деления диска на разделы. Однако такой подход крайне не рекомендуется, ибо риск повреждения корневой файловой системы / в этом случае сильно возрастает.
Отдельными точками монтирования, на отдельных устройствах/разделах/файловых системах, могут быть /home, /opt, /tmp, /usr, /var (ещё и /boot, но нежелательно), остальные файлы и директории должны быть представлены в корневой файловой системе /
Структура и назначение каталогов Unix-подобных файловых систем
Согласно стандарта FHS все каталоги и файлы расположены в середине корневого каталога / (точка монтирования), даже в том случае если они размещены на разных физических накопителях. Впрочем стоит отметить, что кое-какие из каталогов могут быть в системе лишь в том случае, если конкретное ПО было установлено, - к примеру X Window System, которая, в отличии от рабочих станций, может не устанавливаться на серверах, а следовательно директория /usr/X11R6 не будет представлена в системе.
Домашние каталоги обычных пользователей расположены в директории /home, которая может быть расположена на отдельном физическом носителе, а домашний каталог суперюзера root расположен в /root, а не в /home/root, ибо учётная запись суперюзера предназначается только для выполнения административных задач и её хранение на иных физических носителях не предусмотрено ибо /root, как правило, должен располагаться на том же разделе, на котором расположена и система, что даёт возможность настраивать и обслуживать операционную систему смонтировав только корневой / раздел.
Если для каталогов /home, /opt, /tmp, /usr, /var не отведён отдельный раздел и не назначена соответствующая точка монтирования, то они будут представлены в корневой файловой системе обычными директориями, а не файловыми системами с определёнными точками монтирования /home, /opt, /tmp, /usr и /var (ака буква диска в Windows).
ОПИСАНИЕ ДИРЕКТОРИЙ СТАНДАРТА FHS 2.3 | |
ДИРЕКТОРИЯ | ОПИСАНИЕ |
/ | Корневая файловая система, является основной точкой монтирования в которую входят все остальные. Включает в себя утилиты, библиотеки, настройки, информацию загрузчика, и другие необходимые стартовые данные. /home/, /opt/, /tmp/, /usr/, /var/ разработаны таким образом, что они могут быть расположены на других физических накопителях или файловых системах. В корневой файловой системе рекомендуется держать только основные системные файлы и каталоги, а под остальные директории отводить отдельные разделы либо физические накопители. Под корневую файловую систему обычно с головой хватает 256-512 МБ. |
/bin/ | /bin/ содержит команды, которые могут быть использованы как системным администратором так и обычным пользователем, но которые необходимы по умолчанию, например когда никакие другие файловые системы не смонтированы (к примеру, в однопользовательском режиме). Также может содержать символические ссылки на другие программы или сценарии. Должен быть представлен в корневой файловой системе / |
/boot/ | Этот каталог содержит всё необходимое для процесса загрузки, кроме конфигурационных файлов. К примеру временный виртуальный диск (initrd.img-х.х.х-х-ххх-pae), содержащий корневую файловую систему (по всей видимости, тоже временную), с помощью которой осуществляется запуск на выполнение ядра операционной системы. Таким образом, директория /boot/ содержит данные, которые используются в ходе загрузки прежде чем реальное ядро начнёт выполнение программ в пользовательском режиме. Этот каталог может включать в себя данные о главных загрузочных секторах и файлы карт секторов. Если, что крайне не рекомендуется, под этот каталог отведён отдельный раздел, то он по идее должен поместиться на первых 1024 цилиндрах диска. Однако рекомендуется размещать его в корневой файловой системе / |
/dev/ | Файлы устройств или просто устройства системы. К примеру, физические устройства такие, как sata винчестер /dev/sda или TV-тюнер /dev/video или такие псевдоустройства, как например «чёрные дыры» /dev/zero и /dev/null. |
/etc/ | С давних пор содержит общесистемные конфигурационные файлы, которые обычно лежат в корне этой директории, а также файлы конфигурации дополнительно установленных программ. etc. — от сокращения латинского выражения «et cetera», которое дословно означает «и тому подобное», «и другие», «и так далее». Обычно такое сокращение ставится в конце неполного перечисления. |
/lib/ | Основные системные библиотеки, которые необходимы для работы программ из /bin/ и /sbin/ |
/media/ | Каталог с точками монтирования сменных носителей, таких как DVD-ROM, CD-ROM, flash диски. |
/mnt/ | Предназначен для временно монтируемых файловых систем и не должен использоваться для установки программ или хранения каких-либо файлов. |
/opt/ | Каталог для дополнительного программного обеспечения, которое не входит в официальные репозитории дистрибутива, /opt/<package> или /opt/<provider> - к примеру Eset, /opt/eset/. Конфигурационные файлы ПО установленного в /opt должны быть размещены в /etc/opt/<package>, изменяемые файлы в /var/opt/<package>. «System V Application Binary Interface [AT&T 1990]» и «Intel Binary Compatibility Standard v. 2 (iBCS2)» также поддерживают в своих системах подобную структуру каталога /opt/ |
/proc/ | Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде каталогов файлов. |
/root/ | Домашний каталог суперпользователя root. |
/sbin/ | Системные утилиты предназначенные для настройки и администрирования системы, к примеру, |
/srv/ | Точное и чёткое предназначение данного каталога и его поддиректорий толком не определены. Согласно описанию текущей спецификации в этом каталоге могут быть общедоступные файлы различных сервисов. |
/tmp/ | Каталог для временных файлов. |
/usr/ | Содержит большинство пользовательских утилит и приложений, которые используются в многопользовательском режиме. Можно смонтировать по сети в режиме только чтения и сделать общей для нескольких компьютеров. |
/var/ | Предназначен для изменяемых файлов, таких как журнальные файлы (log-файлы), файлы спулеров, временные почтовые файлы. |
Более подробнее о стандарте FHS 2.3: http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html
ОПИСАНИЕ ДИРЕКТОРИЙ СТАНДАРТА FHS 3 | |
ДИРЕКТОРИЯ | ОПИСАНИЕ |
... | Стандарт FHS 3 находится в разработке... |
Дополнительные ссылки: