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

Прежде чем ОС сможет использовать файловую систему, она должна выполнить операцию, называемую монтированием (mount). Операция монтирования включает следующие шаги:

Многие пользователи MS/DR DOS никогда не сталкивались с понятием монтирования. Эта система, как и многие другие ДОС, выполняет упрощённую процедуру монтирования при каждом обращении к файлу. Упрощения заключаются в пропуске шагов 1 и 2 и отсутствии шага 4 (файловая система MS/DR DOS устойчива к сбоям).
ДОС помещает в пространство имен все доступные блочные устройства, не выполняя полной процедуры монтирования. Если какое-то из этих устройств не содержит файловую систему известного типа, система будет выдавать ошибки при обращении к такому устройству, но не удалит его из списка доступных файловых систем. Иногда она даже не будет выдавать ошибок — попробуйте вставить в дисковод машины под управлением MS/DR DOS диск, не содержащий файловой системы (например, созданный программой tar), и в командной строке ввести DIR A:. Скорее всего, вы увидите несколько экранов мусора, но ни одного сообщения об ошибке!

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

Рис. 11.1. Пространство имен ОС с несколькими файловыми системами

Если мы монтируем файловую систему, размещённую на удалённой машине (файловом сервере), то шаги 1 и 2 заменяются на установление соединения с этим сервером. В системах семейства CP/M при работе с файловыми серверами Novell Netware монтирование серверных файловых систем производится командой MAP, а с файловыми серверами, поддерживающими протокол SMB, — командой NET USE.
Обычно имя файла в подмонтированной файловой системе имеет вид 'ИМЯ_ФС:\имена\каталогов\имя.файла'. При этом вместо разделителей ':' и '/' могут использоваться другие символы.

Имена файловых систем в RT-11, RSX-11, VMS

В RT-11, RSX-11 и VMS в качестве имени файловой системы используется имя физического устройства, на котором размещена файловая система. Если применяется DECNet, перед именем устройства можно поместить имя узла сети, на котором это устройство находится. Полное имя файла в VMS выглядит так: DUA0:[USERS.FAT_BROTHER.WORK]test.exe. При этом DUA0 означает дисковое устройство 0, присоединённое к дисковому контроллеру A: Disk Unit, а [USERS.FAT_BROTHER.WORK] означает каталог WORK в каталоге FAT_BROTHER в каталоге USERS.

Имена файловых систем в ОС семейства CP/M

В системах семейства CP/M имена файловых систем обозначаются буквами латинского алфавита, а сами файловые системы часто называют "драйвами". При желании можно использовать в качестве имен также символы '[' и ']'. Устройства A: и B: — это всегда приводы гибких дисков, устройство C: — обычно первый жёсткий диск или первый раздел на первом жёстком диске.
Автора всегда интересовал вопрос: "Что будет делать пользователь, когда у него кончатся доступные буквы алфавита?" При использовании только локальных дисков такая ситуация кажется маловероятной, но при подключении к нескольким файловым серверам количество используемых файловых систем резко возрастает.
В OS/2 и Windows for Workgroups эта проблема решена использованием так называемых UNC-имен, задающих имя файла в виде \\NODE\SHARE\PATH\FILE.NAM (рис. 11.2), где NODE — имя сетевого узла, SHARE — имя разделяемого ресурса на этом узле (это может быть не только разделяемый каталог, но и принтер, а в OS/2 также и модем), а PATH\FILE.NAM — путь к файлу относительно разделяемого каталога. К сожалению, далеко не все старые (и даже многие не очень старые) программы понимают такие имена. Например, даже стандартный командный процессор системы Windows NT не может исполнить команду cd \\NODE\SHARE\DIR (проверялось на NT 4.0 sp4-6, 2000 sp 1 и XP).

UNC-имена

Рис. 11.2. UNC-имена

Структура пространства имен в Unix

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

Структура пространства имен в Unix

Рис. 11.3. Структура пространства имен в Unix

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

По традиции все Unix-системы имеют примерно одинаковую структуру дерева каталогов: системные утилиты находятся в каталоге /bin, системные библиотеки — в каталоге /lib, конфигурационные файлы — в каталоге /etc и т. д. Например, база данных об именах пользователей всегда находится в файле /etc/passwd.

Точки монтирования реализованы и в некоторых ОС, не относящихся к семейству Unix. Так, свободно распространяемый продукт TVFS (Toronto Virtual File System) для OS/2 позволяет объединять несколько различных файловых систем (как локальных, так и сетевых) в один логический диск, монтируя реальные файловые системы в каталоги виртуальной. Аналогичная функциональность была реализована в Windows 2000, но только в поставке Advanced Server.