Главная » Лекции » Информатика и программирование » Лекции по операционным системам » 6.5. Особенности организации файловых систем

6.5. Особенности организации файловых систем

2021-03-09 СтудИзба

6.5. Особенности организации некоторых файловых систем

Особенности организации некоторых файловых систем


 

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

Учитывая это, рассмотрим подробнее особенности функционирования конкретных файловых систем – как традиционных (например, FAT 16 или FAT 32), так и новых, широко используемых в настоящее время (например, NTFS или UFS).


http://lcg.tpu.ru/web-ct/ru/img/shim.gif
6.5.1. FAT

FAT


 

Файловая система FAT (от англ. File Allocation Table) была разработана Биллом Гейтсом (англ. Bill Gates) и Марком МакДональдом (англ. Mark McDonald) в 1977 году и первоначально использовалась в ОС 86-DOS. Чтобы добиться переносимости программ из ОС CP/M в 86-DOS, в ней были сохранены ранее принятые ограничения на имена файлов. В дальнейшем 86-DOS была приобретена Microsoft и стала основой для ОС MS-DOS 1.0, выпущенной в августе 1981 года. Файловая система FAT была предназначена для работы с гибкими дисками размером менее 1 Мбайт, и вначале не предусматривала поддержки жестких дисков. В настоящее время FAT поддерживает файлы и разделы размером до 2 Гбайт.

Рекомендуемые файлы

В FAT применяются следующие соглашения по именам файлов:

·         имя должно начинаться с буквы или цифры и может содержать любой символ ASCII, за исключением пробела и символов « " / [ ] : ; | = , ^ * ? »;

·         длина имени не превышает 8 символов, за ним следует точка и необязательное расширение длиной до 3 символов;

·         регистр символов в именах файлов не различается и не сохраняется.

Логический раздел, отформатированный под файловую систему FAT, имеет следующую структуру (на рис. 45).

 

Загрузочный сектор

Блок параметров BIOS (BPB)

FAT

FAT (копия)

Корневой каталог

Область файлов

http://lcg.tpu.ru/OPSYS_0961/img/5_5_1-1.gif

Рисунок 45 – Структура раздела FAT

 

В блоке параметров BIOS содержится необходимая BIOS информация о физических характеристиках жесткого диска.

Таблица FAT (как основная копия, так и резервная) состоит из массива индексных указателей, количество которых равно количеству кластеров области данных (рис. 46).

http://lcg.tpu.ru/OPSYS_0961/img/5_5_1-2.gif

Рисунок 46 – Таблица FAT для связи данных индексных указателей и блоков данных файлов

Между кластерами и индексными указателями имеется взаимно однозначное соответствие – нулевой указатель соответствует нулевому кластеру и т.д. Индексный указатель может принимать следующие значения, характеризующие состояние связанного с ним кластера:

·         кластер свободен (не используется);

·         кластер используется файлом и не является последним кластером файла (в этом случае индексный указатель содержит номер следующего кластера файла);

·         последний кластер файла;

·         дефектный кластер;

·         резервный кластер.

Файловая система FAT не может контролировать отдельно каждый сектор, поэтому она объединяет смежные секторы в кластеры (англ. clusters), тем самым уменьшая общее количество единиц хранения, за которыми должна следить файловая система. Размер кластера в FAT является степенью двойки и определяется размером тома при форматировании диска (табл. 2).

 

Таблица 2. Размеры разделов и кластеров в FAT

Размер раздела

Размер кластера

Тип FAT

< 16 Мб

4 Кб

FAT12

16 Мб – 127 Мб

2 Кб

FAT16

128 Мб – 255 Мб

4 Кб

FAT16

256 Мб – 511 Мб

8 Кб

FAT16

512 Мб – 1023 Мб

16 Кб

FAT16

1 Гб – 2 Гб

32 Кб

FAT16

 

Таблица FAT является общей для всех файлов раздела. В исходном состоянии (после форматирования) все кластеры раздела свободны и все индексные указатели (кроме тех, которые соответствуют резервным и дефектным блокам) принимают значение «свободен». При размещении файла ОС просматривает FAT, начиная с начала, и ищет первый свободный индексный указатель. После его обнаружения в поле записи каталога «номер первого кластера» фиксируется номер этого указателя. В кластер с этим номером записываются данные файла, он становится первым кластером файла. Если файл умещается в одном кластере, то в указатель, соответствующий данному кластеру, заносится специальное значение «последний кластер файла». Если же размер файла больше одного кластера, то ОС продолжает просмотр FAT и ищет следующий указатель на свободный кластер. После его обнаружения в предыдущий указатель заносится номер этого кластера, который теперь становится следующим кластером файла. Процесс повторяется до тех нор, пока не будут размещены все данные файла. Таким образом создается связный список всех кластеров файла. Из-за этого FAT называют файловой системой со связанными списками (пример представлен выше на рис. 39).

Оригинальная версия FAT, разработанная для DOS 1.00, использовала 12-битную таблицу размещения файлов и поддерживала разделы объемом до 16 Мб (в DOS можно создать не более двух разделов FAT). Для поддержки жестких дисков размером более 32 Мб разрядность FAT была увеличена до 16 бит (при этом старая система получила название FAT 12 , а новая – FAT 16 ), а размер кластера – до 64 секторов (32 Кб). В связи с тем, что каждому кластеру может быть присвоен уникальный 16-разрядный номер, то FAT поддерживает максимально 216, или 65536 кластеров на одном томе.

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

Каждому файлу и подкаталогу в FAT соответствует 32-байтный элемент каталога (англ. directory entry), содержащий ряд параметров и атрибутов (табл. 3).

 

Таблица 3. Характеристики элемента каталога в FAT

Содержание

Размер (байт)

Имя файла

8

Расширение

3

Байт атрибутов

1

Зарезервировано

10

Время

2

Дата

2

Номер начального кластера с данными

2

Размер файла

4

 

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

Еще один недостаток FAT заключается в том, что ее производительность сильно зависит от количества файлов, хранящихся в одном каталоге. При большом количестве файлов (~1000), выполнение операции считывания списка файлов в каталоге может занять несколько минут. Это обусловлено тем, что в FAT каталог имеет линейную неупорядоченную структуру, и имена файлов в каталогах идут в порядке их создания. В результате, чем больше в каталоге записей, тем медленнее работают программы, так как при поиске файла требуется просмотреть последовательно все записи в каталоге.

Кроме того, следует отметить, что в FAT отсутствуют средства разграничения доступа, а также существует возможность потери информации о размещении всех файлов после разрушения таблицы FAT и ее копии.

Поскольку FAT изначально проектировалась для однопользовательской ОС DOS, то она не предусматривает хранения такой информации, как сведения о владельце или полномочия доступа к файлу/каталогу.

Система FAT является наиболее распространенной файловой системой и ее в той или иной степени поддерживают большинство современных ОС. Благодаря своей универсальности FAT может применяться на томах, с которыми работают разные ОС.

Хотя нет никаких препятствий для использования любой другой файловой системы при форматировании дискет, большинство ОС для совместимости используют FAT. Отчасти это можно объяснить тем, что простая структура FAT требует меньше места для хранения служебных данных, чем другие системы, преимущества которых заметны только при использовании их на носителях объемом более 100 Мб.

Очередное поколение жестких дисков характеризовалось бoльшими объемами дискового пространства, в то время как возможности FAT уже достигли своего предела (FAT может поддерживать разделы размером до 2 Гб).

Ответом на подобное увеличение стала система FAT 32 – усовершенствованная версия файловой системы VFAT, поддерживающая жесткие диски объемом до 2 терабайт. Впервые файловая система FAT 32 была включена в состав ОС Windows 95 OSR 2. В FAT 32 были расширены атрибуты файлов, позволяющие теперь хранить время и дату создания, модификации и последнего доступа к файлу или каталогу.

Из-за требования совместимости с ранее созданными программами структура FAT 32 содержит минимальные изменения. Главные отличия от предыдущих версий FAT состоят в следующем. Блок начальной загрузки на разделах с FAT 32 был увеличен до 2 секторов и включает в себя резервную копию загрузочного сектора, что позволяет системе быть более устойчивой к возможным сбоям на диске. Объем, занимаемый таблицей размещения файлов, увеличился, поскольку теперь каждая запись в ней занимает 32 байта, и общее число кластеров на разделе FAT 32 больше, чем на разделах FAT. Соответственно, выросло и количество зарезервированных секторов.

Необходимо отметить, что официально Microsoft не поддерживает разделы FAT 32 объемом менее 512 Мб. Однако в версии утилиты FDISK, поставляемой вместе с OSR2, был представлен недокументированный флаг /FPRMT, позволяющий отформатировать под FAT 32 разделы объемом менее 512 Мб. Microsoft также не поддерживает FAT 32 разделы с размером кластера меньше 4 Кб. Размеры кластера, предлагаемые по умолчанию при форматировании FAT 32 дисков, приведены в табл. 4. Параметр /Z утилиты FORMAT позволяет самостоятельно установить размер кластера на разделе FAT 32:

FORMAT /Z:n,


где n – число секторов в кластере.

 

Таблица 4. Структура размеров раздела и кластера в FAT 32

Размер раздела

Размер кластера

< 260 Мб

512 байт

260 Мб – 8 Гб

4 Кб

8 Гб – 16 Гб

8 Кб

16 Гб – 32 Гб

16 Кб

> 32 Гб

32 Кб

 

Корневой каталог в FAT 32 больше не располагается в определенном месте, вместо этого в блоке BPB хранится указатель на начальный кластер корневого каталога. В результате снимается ранее существовавшее ограничение на число записей в корневом каталоге.

Кроме того, для учета свободных кластеров, в зарезервированной области на разделе FAT 32 имеется сектор, содержащий число свободных кластеров и номер самого последнего использованного кластера. Это позволяет системе при выделении следующего кластера не перечитывать заново всю таблицу размещения файла.

Распространение файловая система FAT 32 получила в следующих ОС: Windows 95 OSR2, Windows 98 и Windows NT 5.0.


http://lcg.tpu.ru/web-ct/ru/img/shim.gif
6.5.2. VFAT

VFAT


 

Файловая система Virtual FAT (VFAT), реализованная в Windows NT 3.5, Windows 95 (DOS 7.0) – это файловая система FAT, включающая поддержку длинных имен файлов (Long File Name, LFN) в кодировке UNICODE (каждый символ имени кодируется 2 байтами). Система VFAT использует ту же самую схему распределения дискового пространства, что и файловая система FAT, поэтому размер кластера определяется величиной раздела. В VFAT ослаблены ограничения, устанавливаемые соглашениями по именам файлов FAT:

·         имя может быть длиной до 255 символов;

·         в имя можно включать несколько пробелов и точек, однако, текст после последней точки рассматривается как расширение;

·         регистр символов в именах не различается, но сохраняется.

Основной задачей при разработке VFAT была необходимость корректной работы старых программ, не поддерживающих длинные имена файлов. Как правило, прикладные программы для доступа к файлам используют функции ОС. Если у элемента каталога установить комбинацию битов атрибутов «только для чтения», «скрытый», «системный», «метка тома» – то любые файловые функции старых версий ОС DOS и Windows не заметят такого элемента каталога. Поэтому для каждого файла и подкаталога в VFAT хранится два имени: длинное и короткое в формате 8.3 для совместимости со старыми приложениями. Длинные имена хранятся в специальных записях каталога, байт атрибутов, у которых равен 0Fh. Для любого файла или подкаталога непосредственно перед единственной записью каталога с его именем в формате 8.3 находится группа из одной или нескольких записей, представляющих длинное имя. Каждая такая запись содержит часть длинного имени файла не более 13 символов, из всех таких записей ОС составляет полное имя файла. Поскольку одно длинное имя файла может занимать до 21 записи, а корневой каталог FAT ограничен 512 записями, желательно ограничить использование длинных имен в корневом каталоге. Структура элемента каталога для длинного имени файла представлена в табл. 5.

 

Таблица 5. Пример элемента каталога для длинного имени в VFAT

Содержание

Размер (байт)

Порядок следования

1

Первые пять символов LFN

10

Байт атрибутов (0Fh)

1

Указатель типа (всегда 0)

1

Контрольная сумма части имени

1

Следующие шесть символов LFN

12

Номер начального кластера (всегда 0)

2

Следующие два символа LFN

4

 

Короткое имя генерируется файловой системой автоматически в формате 8.3. Для создания коротких имен (псевдонимов) файлов используется следующий алгоритм:

1.      Из длинного имени удалить все не допустимые в именах FAT символы. Удалить точки в конце и начале имени. Затем удалить все точки, находящиеся внутри имени, кроме последней.

2.      Обрезать строку, расположенную перед точкой, до 6 символов и добавить в ее конец «~1». Обрезать строку за точкой до 3 символов.

3.      Полученные буквы преобразовать в прописные. Если сгенерированное имя совпадает с уже существующим, то увеличить число в строке «~1».

Данный алгоритм зависит от версии ОС и в будущих версиях может быть модифицирован.

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


http://lcg.tpu.ru/web-ct/ru/img/shim.gif
6.5.3. NTFS

NTFS


 

Файловая система NTFS (New Technology File System) – наиболее предпочтительная файловая система при работе с ОС Windows NT, поскольку она была специально для нее разработана.

Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону (Master File Table или главная файловая таблица) – пространство, в котором происходит рост метафайла MFT.

 

Заголовок

Стандартная информация

Имя файла или каталога

Дескриптор безопасности

Данные или указатели на них

...

 

http://lcg.tpu.ru/OPSYS_0961/img/5_5_3.gif

Рисунок 47 – Структура таблицы MFT в файловой системе NTFS

 

Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой – это делается для того, чтобы самый главный, служебный файл не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов, причем свободное место диска включает в себя всё физически свободное место, включая незаполненные фрагменты MFT-зоны.

В случае, если свободное пространство для записи файлов отсутствует, MFT-зона просто сокращается (как правило, в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расшириться. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы. В этом случае метафайл MFT все-таки будет фрагментирован.

Каждый файл на томе NTFS представлен записью в MFT. Система NTFS резервирует первые 16 записей таблицы размером около 1 Мб для специальной информации. Первая запись таблицы описывает непосредственно саму главную файловую таблицу. За ней следует зеркальная запись MFT. Если первая запись MFT разрушена, NTFS считывает вторую запись, чтобы отыскать зеркальный файл MFT, первая запись которого идентична первой записи MFT. Местоположение сегментов данных MFT и зеркального файла MFT хранится в секторе начальной загрузки. Копия сектора начальной загрузки находится в логическом центре диска. Третья запись MFT содержит файл регистрации, применяемый для восстановления файлов. Семнадцатая и последующие записи главной файловой таблицы используются собственно файлами и каталогами на томе.

В NTFS значительно расширены возможности по управлению доступом к отдельным файлам и каталогам, введено большое число атрибутов, реализована отказоустойчивость, средства динамического сжатия файлов, поддержка требований стандарта POSIX. Система NTFS позволяет использовать имена файлов длиной до 255 символов, при этом она использует тот же алгоритм для генерации короткого имени, что и VFAT (п. 5.5.2).

В случае сбоя ОС или оборудования NTFS обладает возможностью самостоятельного восстановления так, что дисковый том остается доступным, а структура каталогов не нарушается. Эта возможность реализована путем использования журнала транзакций (содержащегося в специальном файле – log file), в котором регистрируются все операции, влияющие на структуру тома, включая создание файла и любые команды, изменяющие структуру каталогов. Каждая операция ввода-вывода, изменяющая файл на томе NTFS, рассматривается системой как транзакция и может выполняться как неделимый блок. При модификации файла пользователем сервис файла регистрации фиксирует всю информацию необходимую для повторения или отката транзакции. Если транзакция завершена успешно, производится модификация файла, а если нет, NTFS производит откат транзакции.

Схема распределения пространства на томе хранится в файле битовой карты (англ. bitmap file). Атрибут данных этого файла содержит битовую карту, каждый бит которой представляет один кластер тома и указывает, свободен ли данный кластер или занят некоторым файлом. В загрузочном файле (англ. boot file) хранится код начального загрузчика Windows NT. Кроме того, существует поддержка файлов «плохих» кластеров (англ. bad cluster file) для регистрации поврежденных участков на томе и файл тома (англ. volume file), содержащий имя тома, версию NTFS и бит, который устанавливается при повреждении тома. Наконец, имеется файл, содержащий таблицу определения атрибутов (англ. attribute definition table), которая задает типы атрибутов, поддерживаемые на томе, и указывает можно ли их индексировать, восстанавливать операцией восстановления системы и т.д.

Система NTFS распределяет пространство кластерами и использует для их нумерации 64 разряда, что дает возможность иметь 264 кластеров, каждый размером до 64 Кбайт. Как и в FAT размер кластера может меняться, но необязательно возрастает пропорционально размеру диска (табл. 6).

 

Таблица 6. Размеры разделов и кластеров, устанавливаемые при форматировании раздела

Размер раздела

Размер кластера

< 512 Мб

512 байт

513 Мб - 1024 Мб (1 Гб)

1 Кб

1 Гб - 2 Гб

2 Кб

2 Гб - 4 Гб

4 Кб

8 Гб - 16 Гб

16 Кб

16 Гб - 32 Гб

32 Кб

> 32 Гб

64 Кб

 

Система NTFS позволяет хранить файлы размером до 16 эксабайт (264 байт) и располагает встроенным средством уплотнения файлов в реальном времени. Сжатие является одним из атрибутов файла или каталога и подобно любому атрибуту может быть снято или установлено в любой момент (сжатие возможно на разделах с размером кластера не более 4 Кб). При уплотнении файла, в отличие от схем уплотнения, используемых в FAT, применяется пофайловое уплотнение. Это позволяет избежать при порче небольшого участка диска, в котором расположен некоторый файл, потери информации в прочих файлах.

Для уменьшения фрагментации NTFS всегда пытается сохранить файлы в непрерывных блоках. Эта система использует структуру каталогов в виде B-дерева, аналогичную высокопроизводительной файловой системе HPFS (п. 5.5.4), а не структуре со связанным списком, применяемой в FAT. Благодаря этому поиск файлов в каталоге осуществляется быстрее, поскольку имена файлов хранятся отсортированными в лексикографическом порядке.

Несмотря на наличие защиты от несанкционированного доступа к данным NTFS не обеспечивает необходимую конфиденциальность хранимой информации. Для получения доступа к файлам достаточно загрузить компьютер в DOS с дискеты и воспользоваться каким-нибудь сторонним драйвером NTFS для этой системы.

Начиная с версии Windows NT 5.0 (новое название Windows 2000) Microsoft поддерживает новую файловую систему NTFS 5.0. В новой версии NTFS были введены дополнительные атрибуты файлов, наряду с правом доступа введено понятие запрета доступа, позволяющее, например, при наследовании пользователем прав группы на какой-нибудь файл, запретить ему возможность изменять его содержимое. Новая система также позволяет:

·         вводить ограничения (квоты) на размер дискового пространства, предоставленного пользователям;

·         проецировать любой каталог (как на локальном, так и на удаленном компьютере) в подкаталог на локальном диске.

Интересной возможностью новой версии файловой системы является динамическое шифрование файлов и каталогов, повышающее надежность хранения информации. В состав Windows NT 5.0 входит файловая система с шифрованием (Encrypting File System, EFS), использующая алгоритмы шифрования с общим ключом. Если для файла установлен атрибут шифрования, то при обращении пользовательской программы к файлу для записи или чтения происходит прозрачное для программы кодирование и декодирование файла.


http://lcg.tpu.ru/web-ct/ru/img/shim.gif
6.5.4. HPFS

HPFS


 

Высокопроизводительная файловая система (англ. High Performance File System – HPFS) была представлена фирмой IBM в 1989 году вместе с ОС OS/2 1.20. Файловая система HPFS также поддерживалась ОС Windows NT до версии 3.51 включительно. По производительности эта система существенно опережает FAT. Система HPFS позволяет использовать жесткие диски объемом до 2 Терабайт (первоначально до 4 Гбайт). Кроме того, она поддерживает разделы диска размером до 512 Гб и позволяет использовать имена файлов длиной до 255 символов (на каждый символ отводится 2 байта). В HPFS по сравнению с FAT уменьшено время доступа к файлам в больших каталогах.

Файловая система HPFS распределяет пространство на диске не кластерами как в FAT, а физическими секторами по 512 байт, что не позволяет ее использовать на жестких дисках, имеющих другой размер сектора (блока). Чтобы уменьшить фрагментацию диска, при распределении пространства под файл система HPFS стремится, по возможности, размещать файлы в последовательных смежных секторах. Фрагмент файла, располагающийся в смежных секторах, называется экстентом.

Для нумерации единиц распределения пространства диска HPFS использует 32 разряда, что дает 232, или более 4 миллиардов номеров. Однако HPFS использует числа со знаком, что сокращает число возможных номеров блоков до 2 миллиардов. Помимо стандартных атрибутов файла, HPFS поддерживает расширенные атрибуты файла (англ. Extended Attributes – EA), которые могут содержать до 64 Кб различных дополнительных сведений о файле.

Диск HPFS имеет следующие три базовые структуры (рис. 48): загрузочный блок (англ. BootBlock), дополнительный блок (англ. SuperBlock) и резервный блок (англ. SpareBlock).

 

Загрузочный блок

Дополнительный блок

Резервный блок

Группа 1

Битовая карта группы 1

Битовая карта группы 2

Группа 2

Группа 3

Битовая карта группы 3

Битовая карта группы 4

Группа 4

 

http://lcg.tpu.ru/OPSYS_0961/img/5_5_4.gif

Рисунок 48 – Структура дискового раздела HPFS

 

Загрузочный блок в HPFS аналогичен загрузочному блоку в FAT. Он располагается в секторах с 0 по 15 и занимает на диске 8 Кб. Системные файлы, также как и в FAT, располагаются в корневом каталоге, но при этом физически могут находиться в любом месте на диске.

Дополнительный блок размещается в 16 секторе и содержит указатель на список блоков битовых карт (англ. bitmap block list). В этом списке перечислены все блоки на диске, в которых расположены битовые карты, используемые для обнаружения свободных секторов. Также в дополнительном блоке хранится указатель на список дефектных блоков (англ. bad block list), указатель на группу каталогов (англ. directory band), указатель на файловый узел корневого каталога и дата последней проверки диска. Файловый узел (англ. fnode) – это структура диска HPFS, которая содержит информацию о расположении файла и о его расширенных атрибутах.

Резервный блок размещен в следующем секторе и содержит карту аварийного замещения (англ. hotfix map), указатель на список свободных запасных блоков (англ. directory emergency free block list) и ряд системных флагов. Резервный блок обеспечивает высокую отказоустойчивость HPFS и позволяет восстанавливать поврежденные данные на диске.

Остальное пространство диска разделено на группы (англ. band) хранения данных. Каждая группа занимает 8 Мб и имеет свою собственную битовую карту свободного пространства, которая похожа на таблицу размещения файлов FAT. Каждому сектору группы соответствует один бит к ее битовой карте, показывающий занят ли соответствующий сектор. Битовые карты двух групп располагаются на диске рядом, также как располагаются и сами группы. Это дает возможность непрерывно разместить на жестком диске файл размером до 16 Мб.

Одна из групп данных размером 8 Мб, расположенная в середине жесткого диска и называемая группой каталогов, хранит информацию о каталогах диска. В ней наряду с остальными каталогами располагается и корневой каталог. Расположение группы каталогов в центре диска значительно сокращает время позиционирования головок чтения/записи.

В отличие от линейной структуры FAT, структура каталога в HPFS представляет собой сбалансированное дерево (так называемое B-дерево) с записями, расположенными в алфавитном порядке. Сбалансированное дерево состоит из корневого (англ. root block) и оконечных блоков (англ. leaf block). Блоки занимают 4 последовательных сектора и в среднем могут содержать 40 записей. Каждая запись корневого блока указывает на один из оконечных блоков (если только в каталоге не меньше 40 файлов). В свою очередь, каждая запись в оконечном блоке указывает на файловый узел файла или на оконечный блок следующего уровня. Таким образом, двухуровневая структура может содержать 40 оконечных блоков по 40 записей в каждом и описывать до 1600 файлов. При поиске файловая система HPFS просматривает только необходимые ветви дерева.

Файловый узел имеет размер 512 байт и всегда по возможности располагается непосредственно перед первым блоком своего файла. Каждый файл и каталог диска HPFS имеет свой файловый узел. Информация, хранящаяся в файловом узле, включает в себя расширенные атрибуты файла, если они достаточно малы, чтобы поместится в один сектор диска, и сокращенное имя файла в формате 8.3. Если расширенные атрибуты не помещаются в файловый узел, то в него записывается указатель на атрибуты.

Положение файла на диске описывается в файловом узле двумя 32-битными числами. Первое из чисел представляет собой указатель на первый блок файла, а второе – длину экстента. Если файл фрагментирован, то его размещение описывается дополнительными парами 32-битных чисел. В файловом узле можно хранить информацию максимум о 8 экстентах файла. Если файл имеет большее число экстентов, то в его файловый узел записывается указатель на блок размещения (англ. allocation block), который может содержать до 40 указателей на экстенты или на другие блоки размещения.


http://lcg.tpu.ru/web-ct/ru/img/shim.gif
6.5.5. UFS

UFS


 

Рассмотрим особенности организации файловой системы для ОС Unix – Unix file system (UFS).

Файл в ОС Unix представляет собой множество символов с произвольным доступом. В файле могут содержаться любые данные, помещенные туда пользователем, и файл не имеет никакой иной структуры, кроме той, какую создаст в нем пользователь.

Информация на дисках размещается блоками. В первой версии файловой системы размер блока – 512 байт. Во многих современных файловых системах, разработанных для конкретной версии Unix-подобных систем, размер блока больше. Это позволяет повысить быстродействие файловых операций. Например, в системе FFS (Fast File System – быстродействующая файловая система) размер блока равен 8192 байт.

Раздел диска файловой системы в ОС Unix разбивается на следующие области (рис. 49):

·         неиспользуемый блок;

·         управляющий блок, или суперблок, в котором хранится размер логического диска и границы других областей;

·         i-список, состоящий из описаний файлов, называемых i-узлами;

·         область для хранения содержимого файлов.

 

http://lcg.tpu.ru/OPSYS_0961/img/5_5_5-1.gif

Рисунок 49 – Принцип организация файловой системы в ОС Unix

 

Каждый i-узел содержит:

·         идентификатор владельца;

·         идентификатор группы владельца;

·         биты защиты;

·         физические адреса на диске или ленте, где находится содержимое файла;

·         размер файла;

·         время создания файла;

·         время последнего изменения (modification time) файла;

·         время последнего изменения атрибутов (change time) файла;

·         число связей-ссылок, указывающих на файл;

·         индикатор типа файла (каталог, обычный файл или специальный файл).

Следом за i-списком идут блоки, предназначенные для хранения содержимого файлов. Пространство на диске, оставшееся свободным от файлов, образует связанный список свободных блоков.

Таким образом, UFS представляет собой структуру данных, размещенную на диске и содержащую управляющий суперблок с описанием файловой системы в целом, массив i-узлов, в котором определены все файлы в файловой системе, сами файлы и, наконец, совокупность свободных блоков. Выделение пространства под данные осуществляется блоками фиксированного размера.

Каждый файл однозначно идентифицируется старшим номером устройства, младшим номером устройства и i-номером (индексом i-узла данного файла в массиве i-узлов). Когда вызывается драйвер устройства, по старшему номеру индексируется массив входных точек в драйверы. По младшему номеру драйвер выбирает одно устройство из группы идентичных физических устройств.

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

Большое число системных каталогов Unix использует для собственных нужд. Один из них, корневой каталог, является базой для всей структуры каталогов, и, «отталкиваясь» от него, можно найти все файлы. В других системных каталогах содержатся программы и команды, предоставляемые пользователям, а также файлы устройств.

Имена файлов задаются последовательностью имен каталогов, разделенных косой чертой (/) и приводящих к концевому узлу (листу) некоторого дерева. Если имя файла начинается с косой черты, то поиск по дереву начинается в корневом каталоге. Если же имя файла не имеет в начале косой черты, то поиск начинается с текущего каталога. Имена файлов, начинающиеся с группы символов «../» (две точки и косая черта), подразумевают начало поиска в каталоге, родительском по отношению к текущему.

Файл, не являющийся каталогом, может встречаться в различных каталогах, возможно, под разными именами. Это называется связыванием. Элемент в каталоге, относящийся к одному файлу, называется связью. В Unix-системах все такие связи имеют равный статус. Файлы не принадлежат каталогам. Скорее, файлы существуют независимо от элементов каталогов, а связи в каталогах указывают на реальные (физические) файлы. Файл «исчезает», когда удаляется последняя связь, указывающая на него. Биты защиты, заданные в связях, могут отличаться от битов в исходном файле. Так решается проблема избирательного ограничения на доступ к файлам.

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

Монтирование. В случае необходимости объединения файловых систем, находящихся на разных устройствах (например, как в случае, представленном на рис. 43), в единую файловую систему и описания единым деревом каталогов, ОС Unix применяет операцию монтирования.

 

http://lcg.tpu.ru/OPSYS_0961/img/5_5_5-2.gif

Рисунок 50 – Две файловые системы до монтирования

 

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

Файловая система, расположенная на системном диске, назначается корневой. Для связи иерархий файлов в корневой файловой системе выбирается некоторый существующий каталог, в данном примере – каталог man. После выполнения монтирования выбранный каталог man становится корневым каталогом второй файловой системы. Через этот каталог монтируемая файловая система подсоединяется как поддерево к общему дереву (рис. 51).

 

http://lcg.tpu.ru/OPSYS_0961/img/5_5_5-3.gif

Вам также может быть полезна лекция "16. Бюджет редакции печатного издания".

Рисунок 51 – Общая файловая система после монтирования

 

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

От файловой системы не требуется, чтобы она целиком размещалась на том устройстве, где находится корень. Запрос от системы mount (на установку носителей и т.п.) позволяет встраивать в иерархию файлов файлы на сменных томах. Команда mount имеет несколько аргументов, но обязательных аргументов у стандартного варианта ее использования два: имя файла блочного устройства и имя каталога. В результате выполнения этой команды файловая подсистема, расположенная на указанном устройстве, подключается к системе таким образом, что ее содержимое заменяет собой содержимое заданного в команде каталога. Поэтому для монтирования соответствующего тома обычно используют пустой каталог. Команда umount выполняет обратную операцию – «отсоединяет» файловую систему, после чего диск с данными можно физически извлечь из системы. Например, для записи данных на дискету необходимо ее «подмонтировать», а после работы – «размонтировать».

Монтирование файловых систем позволяет получить единое логическое файловое пространство, в то время как реально отдельные каталоги с файлами могут находиться в разных разделах одного жесткого диска и даже на разных жестких дисках. Причем, как отмечено выше, сами файловые системы для монтируемых разделов могут быть разными. Например, при работе в ОС Linux можно иметь часть разделов с файловой системой EXT2FS, а часть разделов – с файловой системой EXT3FS.



Свежие статьи
Популярно сейчас