Структура файловой системы Печать
Статьи - Основы UNIX

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

Файловая система FreeBSD является ключевым моментом в понимании устройства всей системы. Самым важным понятием является, несомненно, корневой каталог, обозначаемый символом '/'. Корневой каталог монтируется самым первым на этапе загрузки и содержит все необходимое, чтобы подготовить систему к загрузке в многопользовательский режим. Корневой каталог также содержит точки монтирования всех других файловых систем.

UNIX не использует букв дисков, или других имен дисков в пути. Это значит, что не нужно писать c:/foo/bar/readme.txt в UNIX.

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

Точкой монтирования называется каталог, который будет соответствовать корню смонтированной файловой системы. Стандартные точки монтирования включают /usr, /var, /tmp, /mnt и /cdrom. Эти каталоги обычно перечислены в файле /etc/fstab, в котором указаны файловые системы и их точки монтирования. Большинство файловых систем, описанных в /etc/fstab монтируются автоматически, если только для них не указана опция noauto.

Монтирование файловых систем во FreeBSD

Для монтирования файловых используется команда mount, для размонтирования – umount. Подробную информацию об этих командах и используемых ими опциях можно найти справочной системе.

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

FreeBSD также использует дисковое пространство под раздел подкачки (swap space). Подкачка позволяет FreeBSD работать с виртуальной памятью. Ваш компьютер может работать так, как если бы у него было больше памяти, чем есть на самом деле. Когда у FreeBSD кончается память, она перемещает часть данных, не используемых в данный момент, в раздел подкачки и возвращает их обратно (перемещая в подкачку что-то другое), когда они нужны.

По некоторым разделам есть определенные соглашения:

Раздел Соглашение
a Как правило, содержит корневую файловую систему
b Как правило, содержит раздел подкачки
c Как правило, такого же размера, что и весь слайс (slice).

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

Каждый раздел, содержащий файловую систему, хранится на том, что во FreeBSD называется слайс (slice). Слайс - это термин FreeBSD, то, что обычно называют разделом в других операционных системах (например, Windows и Linux).

Слайсы нумеруются с 1 по 4. Номера слайсов следуют за именем устройства, предваряемые строчной s, начиная с 1. Так 'da0s1' это первый слайс первого SCSI устройства.

Может быть только четыре физических слайса на диске, но могут быть логические слайсы нужного типа внутри физических слайсов. Эти дополнительные слайсы нумеруются начиная с 5, так что 'ad0s5' это первый дополнительный слайс на первом IDE диске. Эти устройства используются файловыми системами, занимающими весь слайс.

Слайсы, 'эксклюзивно выделенные (dangerously dedicated)' физические устройства и другие устройства содержат разделы, представляемые буквами от a до h. Эти буквы добавляются к имени устройства. 'da0a' это раздел a на первом устройстве da, который 'эксклюзивно выделен'. 'ad1s3e' это пятый раздел в третьем слайсе второго IDE диска.

Наконец, каждый диск имеет своё имя, которое начинается с кода, обозначающего тип диска, затем идет номер диска. В отличие от слайсов, нумерация дисков начинается с 0. Основные коды указаны в таблице ниже:

Код Значение
ad ATAPI (IDE) диск
da SCSI direct access диск
acd ATAPI (IDE) CDROM
cd SCSI CDROM
fd Floppy disk

Иерархия файловой системы

Полное описание иерархии файловой системы есть в справочном руководстве (man hier). В таблице ниже перечислены наиболее важные каталоги.

Каталог Описание
/ Корневой каталог файловой системы.
/bin/ Основные утилиты, необходимые для работы как в однопользовательском, так и в многопользовательском режимах.
/boot/ Программы и конфигурационные файлы, необходимые для нормальной загрузки операционной системы.
/boot/defaults/ Конфигурационные файлы с настройками по умолчанию, используемые в процессе загрузки операционной системы
/dev/ Файлы устройств
/etc/ Основные конфигурационные файлы системы и скрипты.
/etc/defaults/ Основные конфигурационные файлы системы с настройками по умолчанию
/etc/mail/ Конфигурационные файлы для систем обработки почты
/etc/namedb/ Конфигурационные файлы для утилиты named
/etc/periodic/ Файлы сценариев, выполняемые ежедневно, еженедельно и ежемесячно
/etc/ppp/ Конфигурационные файлы для утилиты ppp
/mnt/ Пустой каталог, часто используемый системными администраторами как временная точка монтирования.
/proc/ Виртуальная файловая система, отображающая текущие процессы
/rescue/ Статически собранные программы для восстановления после сбоев.
/root/ Домашний каталог пользователя root.
/sbin/ Системные утилиты и утилиты администрирования, необходимые для работы как в однопользовательском, так и в многопользовательском режимах.
/tmp/ Временные файлы. Содержимое /tmp обычно теряется во время перезагрузки системы.
/usr/ Большинство пользовательских утилит и приложений.
/usr/bin/ Пользовательские утилиты и приложения общего назначения.
/usr/include/ Файлы стандартных библиотек.
/usr/libdata/ Файлы данных для различных утилит.
/usr/libexec/ Системные демоны и утилиты (выполняемые другими программами).
/usr/local/ Локальные пользовательские приложения, библиотеки, и т.д. Также используется по умолчанию коллекцией портов. Внутри /usr/local иерархия каталогов должна следовать стандарту иерархии для /usr. Исключение составляют каталог man, который расположен непосредственно в /usr/local, а не в /usr/local/share, и документация портов, которая расположена в share/doc/port.
/usr/obj/ Архитектурно-зависимые файлы и каталоги, образующиеся в процессе сборки системы из исходных текстов в /usr/src.
/usr/ports/ Коллекция портов FreeBSD (опционально).
/usr/sbin/ Системные утилиты и утилиты администрирования (исполняемые пользователем).
/usr/share/ Архитектурно-независимые файлы.
/usr/src/ Исходные тексты BSD и/или программ.
/usr/X11R6/ Утилиты, приложения и библиотеки X11R6 (X Window System; необязательно).
/var/ Файлы журналов общего назначения, временные, перемещаемые файлы и файлы очередей.
/var/log/ Различные файлы системных журналов.
/var/mail/ Почтовые ящики пользователей.
/var/spool/ Файлы очередей печати, почты, и пр.
/var/tmp/ Временные файлы, которые обычно сохраняются во время перезагрузки системы, если только /var не является файловой системой в памяти.

Типы и виды файлов

В отличие от ОС Windows, в UNIX расширение файла не определяет его тип и может вообще отсутствовать. Расширение обычно используется для удобства пользователя и операционной системе не требуется. Вместо этого, UNIX определяет тип файла с помощью магии (подсистемы magic), которая на основании магических чисел (magic numbers), полученных в результате анализа содержимого файла делает вывод о типе файла. Таблица магических чисел постоянно обновляется и уточняется и содержит сигнатуры различных типов файлов. Кроме того, в UNIX существуют различные виды файлов, информация о которых содержится атрибутах файловой системы для этих файлов. Всего в UNIX существует 6 различных видов файлов:

  • Обычный файл (regular file)
  • Каталог (directory)
  • Специальный файл устройства (special device file)
  • FIFO, или именованный канал (named pipe)
  • Символьная ссылка (symbol link)
  • Сокет (socket)

Файлы устройств и каталог /dev

Термин 'устройство' используется в основном по отношению к аппаратному обеспечению системы, такому как диски, принтеры, графические адаптеры, устройства ввода текста. В UNIX доступ к большинству этих устройств можно получить через специальные файлы устройств, расположенные в каталоге /dev. При добавлении в систему нового устройства или добавлении поддержки дополнительных устройств потребуется создать один или несколько файлов устройств для нового оборудования. Для устранения необходимости в этих действиях в FreeBSD используется Device filesystem, или DEVFS. Она предоставляет доступ к пространству устройств ядра через общую файловую систему. Вместо создания и модификации файлов устройств, DEVFS создает специальную файловую систему.