I. Элементы архитектуры вычислительных систем

Вид материалаДокументы

Содержание


Драйверы файловых систем
Подобный материал:
1   ...   34   35   36   37   38   39   40   41   42

Прежде чем ОС сможет использовать файловую систему, она должна выполнить над этой системой операцию, называемую монтированием (mount). В общем случае операция монтирования включает:
  1. проверку типа монтируемой ФС;
  2. проверку целостности ФС;
  3. считывание системных структур данных и инициализация соответствующего модуля файлового менеджера (драйвера файловой системы);
  4. в некоторых случаях - модификацию ФС с тем, чтобы указать, что она уже смонтирована - устанавливается так называемый флаг загрязнения (dirty flag). Это может быть необходимо, если ФС неустойчива к сбоям В этом случае при ее размонтировании необходимо выполнить специальные операции. Если система пытается подмонтировать такую ФС и видит, что флаг загрязнения установлен, это означает, что при последнем использовании ее не размонтировали надлежащим образом. В этом случае перед монтированием необходимо запустить программу починки ФС, которая выявит все проблемы, возникшие при таком неправильном размонтировании. Чаще всего проблем нет, но они могут возникнуть;
  5. включение новой файловой системы в общее пространство имен. В различных системах это делается различными способами.

Если мы монтируем ФС, размещенную на удаленной машине (файловом сервере), то шаги 1 и 2 заменяются на установление соединения этим файловым сервером.

Многие пользователи MS/DR DOS никогда не сталкивались с понятием монтирования. Дело в том, что эта система выполняет упрощенную процедуру монтирования при каждом обращении к файлу. Упрощения состоят в пропуске шагов 1 и 2 и отсутствии шага 4 (ФС MS/DR DOS устойчива к сбоям).

При работе с файловыми серверами Novell Netware монтирование серверных файловых систем производится командой MAP (в оригинальной терминологии этот процесс называется планированием каталогов).

Обычно имя файла в подмонтированной файловой системе имеет вид ИМЯ_ФС:\имена\каталогов\имя.файла При этом вместо разделителей ':' и '\' могут использоваться другие символы.

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

В CP/M, MS/DR DOS и OS/2 имена файловых систем обозначаются буквами латинского алфавита, а сами файловые системы часто называются ``драйвами''. Устройства A: и B: - это всегда дисководы гибких дисков; устройство C: - обычно первый жесткий диск, или первый раздел на первом жестком диске.

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

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

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

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

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

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

Кроме собственно драйвера ФС, для ее полноценной поддержки нужны также следующие программы:
  • программа создания ФС - mkfs или FORMAT;
  • программа контроля и починки ФС - fsck или CHKDSK;
  • программа fstyp, для определением типа ФС на диске;
  • программа mount, которая принимает из командной строки зависящие от типа ФС параметры, проверяет их допустимость и инициализирует драйвер ФС.

Например, дистрибутив ОС UnxiWare 2.0 фирмы SCO, основанной на UNIX System V R4.2, содержит драйверы следующих файловых систем:

memfs - файловая система, размещающая файлы в оперативной памяти. Может рассматриваться как эквивалент виртуального диска в MS DOS.

dosfs - файловая система FAT.

XENIX - файловая система, используемая ОС Xenix. Эта ФС по структуре похожа на остальные ФС ОС семейства Unix, но не поддерживает символических связей и ограничивает длину имени файла 12 символами. Неустойчива к сбоям.

s5 - "классическая" ФС, сохранившаяся почти без изменений с самых ранних версий системы. Ограничивает имя файла 14 символами. Неустойчива к сбоям.

ufs - файловая система, разработанная в университете Беркли, известная также как FFS (Fast File System) и Berkley FS. Является основной ФС в большинстве версий BSD UNIX и поддерживается многими другими ОС семейства Unix. Имеет более высокую производительность, чем s5, в первую очередь за счет разбиения таблицы инодов и списка свободных блоков на участки (группы цилиндров). Такое разбиение уменьшает перемещение головки дисковода при обращении к системным и пользовательским данным. Поддерживает дисковые квоты - ограничения на объем дискового пространства, занятого файлами того или иного пользователя. Ограничивает имя файла размером блока (обычно 512 символов). Неустойчива к сбоям.

bfs - Boot File System - загрузочная файловая система. Эта ФС имеет очень простую структуру: все файлы в ней обязаны занимать непрерывное пространство. Такая структура упрощает первичный загрузчик системы, которому теперь не нужно разбираться в каталогах и инодах. bfs имеет довольно низкую производительность и требует длительной процедуры размонтирования, если в нее были записаны новые данные. Используется для хранения ядра системы, и нескольких конфигурационных файлов, используемых при загрузке. Все эти данные считываются только при загрузке системы и перезаписываются только при изменениях конфигурации ядра, поэтому высокая производительность от этой ФС не требуется.

vxfs - устойчивая к сбоям ФС Veritas с регистрацией намерений. Версия, входящая в стандартную поставку системы, журналирует только системные структуры данных. За отдельную плату можно приобрести "продвинутую" версию Veritas, которая обеспечивает журналирование пользовательских данных.

cdfs - Файловая система, используемая на CD-ROM.

nfs - Network File System - драйвер файловой системы, обеспечивающий разделение файлов с использованием сетевого протокола TCP/IP. Протокол NFS был предложен фирмой Sun Microsystems в середине 80-х гг. и в настоящее время поддерживается практически всеми членами семейства Unix. NFS-клиенты и NFS-серверы реализованы также для VMS, Windows NT, Novell Netware, OS/2, MacOS, MS/DR DOS и Windows 3.x/95.

rfs - Remote File Sharing - использование удаленной UNIX-системы в качестве файлового сервера. Этот протокол был разработан фирмой AT&T в 80-е гг. и пригоден только для соединения систем UNIX System V.

nucfs - NetWare Unix Client File System. Этот драйвер предназначен для присоединения к файловым серверам Novell Netware. Он входит в состав системы UnixWare, поставляемой фирмой SCO, но не в остальные версии UNIX SVR4.

3.7 

Файловые системы