Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



Одной из важнейших характеристик исходной FAT было использование имён файлов формата «8.3», в котором 8 символов отводится на указание имени фай­ла и 3 символа – для расширения имени. К стандартной FAT (имеется в виду прежде всего реализация FAT16) добавились ещё две разновидности, используе­мые в широко распространенных операционных системах Microsoft (конкретно – в Windows 95 и Windows NT): VFAT (виртуальная FAT) и FAT32, используемая в одной из редакций ОС Windows 95 и Windows 98. Ныне эта файловая система (FAT32) поддерживается и такими ОС, как Windows Millennium Edition, и все­ми ОС семейства Windows 2000. Имеются реализации систем управления фай­лами для FAT32, Windows NT и ОС Linux.

Файловая система VFAT впервые появилась в Windows for Workgroups 3.11 и была предназначена для выполнения файлового ввода/вывода в защищённом режиме (см. раздел «Реальный и защищенный режимы работы процессора», глава 3). С выходом Windows 95 в VFAT добавилась поддержка длинных имён файлов (long file name, LFN). Тем не менее, VFAT сохраняет совместимость с ис­ходным вариантом FAT; это означает, что наряду с длинными именами в ней поддерживаются имена формата «8.3», а также существует специальный меха­низм для преобразования имен «8.3» в длинные имена, и наоборот. Именно фай­ловая система VFAT поддерживается исходными версиями Windows 95, Win­dows NT 4. При работе с VFAT крайне важно использовать файловые утилиты, поддерживающие VFAT вообще и длинные имена в частности. Дело в том, что более ранние файловые утилиты DOS запросто модифицируют то, что кажется им исходной структурой FAT. Это может привести к потере или порче длинных имен из таблицы FAT, поддерживаемой VFAT (или FAT32). Следовательно, для томов VFAT необходимо пользоваться файловыми утилитами, которые понима­ют и сохраняют файловую структуру VFAT.

В исходной версии Windows 95 основной файловой системой была 32–разрядная VFAT. VFAT может использовать 32-разрядные драйверы защищённого режима или 16-разрядные драйверы реального режима. При этом элементы FAT остают­ся 12- или 16-разрядными, поэтому на диске используется та же структура дан­ных, что и в предыдущих реализациях FAT. VFAT обрабатывает все обращения к жёсткому диску и использует 32-разрядный код для всех файловых операций с дисковыми томами.

Основными недостатками файловых систем FAT и VFAT являются большие по­тери на кластеризацию при больших размерах логического диска и ограничения на сам размер логического диска. Это привело к разработке новой реализации файловой системы с использованием той же идеи использования таблицы FAT. Поэтому в Microsoft Windows 95 OEM Service Release 2 (эта версия Windows 95 часто называется Windows 95 OSR2) на смену системе VFAT пришла файловая система FAT32. FAT32 является полностью самостоятельной 32-разрядной файловой системой и содержит многочисленные усовершенствования и дополнения по сравнению с предыдущими реализациями FAT.

Принципиальное отличие заключается в том, что FAT32 намного эффективнее расходует дисковое пространство. Прежде всего, система FAT32 использует кластеры меньшего размера по сравнению с предыдущими версиями, которые ограничивались 65 535 кластерами на том (соответственно, с увеличением размера диска приходилось увеличивать и размер кластеров). Следовательно, даже для дисков размером до 8 Гбайт FAT32 может использовать 4-килобайтные класте­ры. В результате по сравнению с дисками FAT 16 экономится значительное дис­ковое пространство (в среднем 10-15 %) [53].

FAT32 также может перемещать корневой каталог и использовать резервную ко­пию FAT вместо стандартной. Расширенная загрузочная запись FAT32 позволя­ет создавать копии критических структур данных; это повышает устойчивость дисков FAT32 к нарушениям структуры FAT по сравнению с предыдущими вер­сиями. Корневой каталог в FAT32 представлен в виде обычной цепочки класте­ров. Следовательно, корневой каталог может находиться в произвольном месте диска, что снимает действовавшее ранее ограничение на размер корневого ката­лога (512 элементов). Windows 95 OSR2 и Windows 98 могут работать и с разделами VFAT, созданны­ми Windows NT. То, что говорилось ранее об использовании файловых утилит VFAT с томами VFAT, относится и к FAT32. Поскольку прежние утилиты FAT (для FAT32 в эту категорию входят обе файловые системы, FAT и VFAT) могут повредить или уничтожить важную служебную информацию, для томов FAT32 нельзя пользоваться никакими файловыми утилитами, кроме утилит FAT32.

Кроме повышения ёмкости FAT до величины в 4 Тбайт, файловая система FAT32 вносит ряд необходимых усовершенствований в структуру корневого каталога. Предыдущие реализации требовали, чтобы вся информация корневого каталога FAT находилась в одном дисковом кластере. При этом корневой каталог мог содержать не более 512 файлов. Необходимость представлять длинные имена и обеспечить совместимость с прежними версиями FAT привела разработчиков компании Microsoft к компромиссному решению: для представления длинного имени они стали использовать элементы каталога, в том числе и корневого. Рас­смотрим способ представления в VFAT длинного имени файла (рис. 4.9).

Первые одиннадцать байтов элемента каталога DOS используются для хранения имени файла. Каждое такое имя разделяется на две части: в первых восьми бай­тах хранятся символы собственно имени, а в последних трех – символы так называемого расширения, с помощью которого реализуются механизмы предопределенных типов. Были введены соответствующие системные соглашения, и файлы определенного типа необходимо (желательно) именовать с оговоренным расширением. Например, исполняемые файлы с расширением СОМ определяют исполняемую двоичную программу с простейшей односегментной структурой1. Более сложные программы имеют расширение ЕХЕ. Определенны расширения для боль­шого количества типов файлов, и эти расширения используются для ассоцииро­ванного запуска обрабатывающих файлы программ.


Рис.4.9. Элементы каталогов для FAT, VFAT и FAT32

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

В двенадцатом байте элемента каталога хранятся атрибуты файла. Шесть из восьми указанных разрядов используются DOS1. К атрибутам DOS относятся следующие:

¨ атрибут «архивный» (А – archive). Показывает, что файл был открыт про­граммой таким образом, чтобы у неё была возможность изменить содержимое этого файла. DOS устанавливает этот разряд атрибута в состояние ON (вклю­чено) при открытии файла. Программы резервного копирования нередко ус­танавливают его в OFF (выключено) при выполнении резервного копирования файла. Если применяется подобная методика, то в следующую создаваемую по порядку резервную копию будут добавлены только файлы с данным раз­рядом, установленным в состояние ON;

¨ атрибут каталога (D – directory). Показывает, что данный элемент каталога указывает на подкаталог, а не на файл;

¨ атрибут тома (V – volume). Применяется только к одному элементу каталога в корневом каталоге. В нём, собственно, и хранится имя дискового тома. Этот атрибут также применяется в случае длинных имён файлов, о чём можно бу­дет узнать из следующего раздела;

¨ атрибут «системный» (S – system). Показывает, что файл является частью операционной системы или специально отмечен подобным образом прикладной программой, что иногда делается в качестве составной части метода за­щиты от копирования;

¨ атрибут «скрытый» (Н – hidden). Сюда относятся, в частности, файлы с уста­новленным в состояние ON атрибутом «системный» (S), которые не отобража­ются в обычном списке, выводимом по команде DIR;

¨ атрибут «только для чтения» (R – read only). Показывает, что данный файл не подлежит изменению. Разумеется, поскольку это лишь разряд байта, хра­нящегося на диске, то любая программа может изменить этот разряд, после чего DOS свободно разрешила бы изменение данного файла. Этот атрибут в основном используется для примитивной защиты от пользовательских оши­бок, то есть он позволяет избежать неумышленного удаления или изменения ключевых файлов.

Следует отметить, что наличие файла, помеченного одним или более из указан­ных выше атрибутов, может иметь вполне определенный смысл. Например, боль­шинство файлов, отмечаемых в качестве системных, отмечаются также призна­ками скрытых файлов и «только для чтения».

На дисках FAT12 или FAT16 следующие за именем десять байтов не используют­ся. Обыкновенно они заполняются нулями и считаются резервными значения­ми. А на диске с файловой системой FAT32 эти 10 байт содержат самую разную информацию о файле. При этом байт, отмеченный как «зарезервировано для NT», представляет собой, как подразумевает его название, поле, не используемое в DOS или Windows 9x, но применяемое в Windows NT.

Из соображений совместимости поля, которые встречаются в элементах катало­га для коротких имен формата FAT12 и FAT16, находятся на тех же местах и в элементах каталога для коротких имен формата FAT32. Остальные поля, кото­рые встречаются только в элементах каталога для коротких имен формата FAT32, соответствуют зарезервированной области длиной в десять байт в элементах ка­талога для коротких имен форматов FAT12 и FAT16.

Как видно из рис.4.9, для длинного имени файла используется несколько эле­ментов каталога. Таким образом, появление длинных имён фактически приве­ло к дальнейшему уменьшению количества файлов, которые могут находиться в корневом каталоге. Поскольку длинное имя может содержать до 256 символов, всего один файл с полным длинным именем занимает до 25 элементов FAT, (1 для имени 8.3 и ещё 24 для самого длинного имени). Количество элементов корневого каталога VFAT уменьшается до 21. Очевидно, что это не самое изящ­ное решение, поэтому компания Microsoft советует избегать длинных имен в корневых каталогах FAT при отсутствии FAT32, у которой количество элемен­тов каталога соответственно просто увеличено. Помните и о том, что длина пол­ной файловой спецификации, включающей путь и имя файла (длинное или в формате 8.3), тоже ограничивается 260 символами. FAT32 успешно справляется с проблемой длинных имён в корневом каталоге, но проблема с ограничением длины полной файловой спецификации остаётся. По этой причине Microsoft ре­комендует ограничивать длинные имена 75–80 символами, чтобы оставить дос­таточно места для пути (180–185 символов).

Файловая система HPFS

Сокращение HPFS расшифровывается как «High Performance File System» – вы­сокопроизводительная файловая система. HPFS впервые появилась в OS/2 1.2 и LAN Manager. HPFS была разработана совместными усилиями лучших специалистов компании IBM и Microsoft на основе опыта IBM по созданию файло­вых систем MVS, VM/CMS и виртуального метода доступа1. Архитектура HPFS начала создаваться как файловая система, которая сможет использовать преиму­щества многозадачного режима и обеспечит в будущем более эффективную и надёжную работу с файлами на дисках большого объёма.

HPFS была первой файловой системой для ПК, в которой была реализована поддержка длинных имен [96]. HPFS, как FAT и многие другие файловые систе­мы, обладает структурой каталогов, но в ней также предусмотрены автоматиче­ская сортировка каталогов и специальные расширенные атрибуты2, упрощающие реализацию безопасности файлового уровня и создание множественных имен. HPFS поддерживает те же самые атрибуты, что и файловая система FAT, по историческим причинам, но также поддерживает и новую форму file-associated, то есть информацию, называемую расширенными атрибутами (EAs3). Каждый ЕА концептуально подобен переменной окружения. Но самым главным отличием всё же являются базовые принципы хранения информации о местоположении файлов.

Принципы размещения файлов на диске, положенные в основу HPFS, увеличи­вают как производительность файловой системы, так и её надёжность и отказоустойчивость. Для достижения этих целей предложено несколько способов: размещение каталогов в середине дискового пространства, использование методов бинарных сбалансированных деревьев для ускорения поиска информации о файле, рассредоточение информации о местоположении записей файлов по всему дис­ку, при том, что записи каждого конкретного файла размещаются (по возможно­сти) в смежных секторах и поблизости от данных об их местоположении. Дейст­вительно, система HPFS стремится, прежде всего, к тому, чтобы расположить файл в смежных кластерах, или, если такой возможности нет, разместить его на диске таким образом, чтобы экстенты4 (фрагменты) файла физически были как можно ближе друг к другу. Такой подход существенно уменьшает время позиционирова­ния головок записи/чтения жёсткого диска и время ожидания (rotational laten­cy) – задержку между установкой головки чтения/записи на нужную дорожку диска и началом чтения данных с диска5. Можно сказать, что файловая система HPFS имеет, по сравнению с FAT, следующие основные преимущества:

¨ высокая производительность;

¨ надёжность;

¨ работа с расширенными атрибутами, что позволяет управлять доступом к фай­лам и каталогам;

¨ эффективное использование дискового пространства.

Все эти преимущества обусловлены структурой диска HPFS. Рассмотрим её бо­лее подробно (рис. 4.10).


Рис.4.10. Структура раздела HPFS

В начале диска расположено несколько управляющих блоков. Всё остальное дис­ковое пространство в HPFS разбито на части («полосы», «ленты» из смежных секторов, в оригинале – band). Каждая такая группа данных занимает на диске пространство в 8 Мбайт и имеет свою собственную битовую карту распределе­ния секторов. Эти битовые карты показывают, какие секторы данной полосы за­няты, а какие – свободны. Каждому сектору ленты данных соответствует один бит в её битовой карте. Если бит имеет значение 1, то соответствующий сектор занят, а если 0 – свободен.

Битовые карты двух полос располагаются на диске рядом, так же располагаются и сами полосы. То есть последовательность полос и карт выглядит следующим образом: битовая карта, битовая карта, лента с данными, лента с данными, бито­вая карта, битовая карта и т. д. Такое расположение «лент» позволяет непрерыв­но разместить на жёстком диске файл размером до 16 Мбайт и в то же время не удалять от самих файлов информацию об их местонахождении. Это иллюстрируется рис. 4.10.

Очевидно, что если бы на весь диск была только одна битовая1 карта, как это сделано в FAT, то для работы с ней приходилось бы перемещать головки чте­ния/записи в среднем через половину диска. Именно для того, чтобы избежать этих потерь, в HPFS и разбит диск на «полосы». Получается своего рода распре­деленная структура данных об используемых и свободных блоках.

Дисковое пространство в HPFS выделяется не кластерами, как в FAT, а блоками. В современной реализации размер блока взят разным одному сектору, но в принципе он мог бы быть и иного размера. По сути дела, блок – это и есть кластер. Размещение файлов в таких небольших блоках позволяет более эффектив­но использовать пространство диска, так как непроизводительные потери сво­бодного места составляют в среднем всего 256 байт на каждый файл. Вспомните, что чем больше размер кластера, тем больше места на диске расходуется напрас­но. Например, кластер на отформатированном под FAT диске объёмом от 512 до 1024 Мбайт имеет размер 16 Кбайт. Следовательно, непродуктивные потери сво­бодного пространства на таком разделе в среднем составляют 8 Кбайт (8192 байт) на один файл, в то время как на разделе HPFS эти потери всегда будут состав­лять всего 256 байт на файл. Таким образом, на каждый файл экономится почти 8Кбайт.

На рис. 4.10 показано, что помимо «лент» с записями файлов и битовых карт в томе1с HPFS имеются ещё три информационные структуры. Это так называе­мый загрузочный блок (boot block), дополнительный блок (super block) и запас­ной (резервный) блок (spare block). Загрузочный блок (boot block) располагается в секторах с 0 по 15; он содержит имя тома, его серийный номер, блок парамет­ров BIOS2 и программу начальной загрузки. Программа начальной загрузки на­ходит файл OS2LDR, считывает его в память и передаёт управление этой про­грамме загрузки ОС, которая, в свою очередь, загружает с диска в память ядро OS/2 - OS2KRNL. И уже OS2KRNL с помощью сведений из файла CONFIG.SYS за­гружает в память все остальные необходимые программные модули и блоки дан­ных.

В блоке (super block) содержится указатель на список битовых карт (bitmap block list). В этом списке перечислены все блоки на диске, в которых расположены би­товые карты, используемые для обнаружения свободных секторов. Также в дополнительном блоке хранится указатель на список дефектных блоков (bad block list), указатель на группу каталогов (directory b and), указатель на файловый узел (F-node) корневого каталога, а также дата последней проверки раздела програм­мой CHKDSK. В списке дефектных блоков перечислены все поврежденные секто­ры (блоки) диска. Когда система обнаруживает повреждённый блок, он вносится в этот список и для хранения информации больше не используется. Кроме этого, в структуре super block содержится информация о размере «полосы». Напомним, что в текущей реализации HPFS размер «полосы» взят равным 8 Мбайт. Блок super block размещается в секторе с номером 16 логического диска, на котором установлена файловая система HPFS.

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

Файлы и каталоги в HPFS базируются на фундаментальном объекте, называе­мом F-Node1. Эта структура характерна для HPFS и аналога в файловой системе FAT не имеет. Каждый файл и каталог диска имеет свой файловый узел F-Node. Каждый объект F-Node занимает один сектор и всегда располагается поблизости от своего файла или каталога (обычно – непосредственно перед файлом или ка­талогом). Объект F-Node содержит длину и первые 15 символов имени файла, специальную служебную информацию, статистику по доступу к файлу, расши­ренные атрибуты файла и список прав доступа2 (или только часть этого списка, если он очень большой), ассоциативную информацию о расположении и подчине­нии файла и т. д. Структура распределения в F-node может принимать несколь­ко форм в зависимости от размера каталога или файлов. HPFS просматривает файл как совокупность одного или более секторов. Из прикладной программы это не видно; файл появляется как непрерывный поток байтов. Если расширен­ные атрибуты слишком велики для файлового узла, то в него записывается ука­затель на них.

Сокращенное имя файла (в формате 8.3) используется, когда файл с длинным именем копируется или перемещается на диск с системой FAT, не допускающей подобных имён. Сокращенное имя образуется из первых 8 символов оригинального имени файла, точки и первых трех символов расширения имени, если расширение имеется. Если в имени файла присутствует несколько точек, что не противоречит правилам именования файлов в HPFS, то для расширения сокра­щенного имени используются три символа после самой последней из этих точек.

Так как HPFS при размещении файла на диске стремится избежать его фрагмен­тации, то структура информации, содержащаяся в файловом узле, достаточно проста. Если файл непрерывен, то его размещение на диске описывается двумя 32–битными числами. Первое число представляет собой указатель на первый блок файла, а второе – длину экстента, то есть число следующих друг за другом бло­ков, принадлежащих файлу1. Если файл фрагментирован, то размещение его экс­тентов описывается в файловом узле дополнительными парами 32-битных чисел. Фрагментация происходит, когда на диске нет непрерывного свободного участ­ка, достаточно большого, чтобы разместить файл целиком. В этом случае файл приходится разбивать на несколько экстентов и располагать их на диске раз­дельно. Файловая система HPFS старается разместить экстенты фрагментированного файла как можно ближе друг к другу, чтобы сократить время позицио­нирования головок чтения/записи жесткого диска. Для этого HPFS использует статистику, а также старается условно резервировать хотя бы 4 килобайта места в конце файлов, которые растут. Ещё один способ уменьшения фрагментирования файлов – это расположение файлов, растущих навстречу друг другу, или файлов, открытых разными тредами или процессами, в разных полосах диска.

В файловом узле можно разместить информацию максимум о восьми экстентах файла. Если файл имеет больше экстентов, то в его файловый узел записывается указатель на блок размещения (allocation block), который может содержать до 40 указателей на экстенты или, по аналогии с блоком дерева каталогов, на другие блоки размещения. Таким образом, двухуровневая структура блоков размеще­ния может хранить информацию о 480 секторах, что позволяет работать с файлами размером до 7, 68 Гбайт. На практике размер файла не может превышать 2 Гбайт, но это обусловлено текущей реализацией интерфейса прикладного программи­рования [96].

«Полоса», находящаяся в центре диска, используется для хранения каталогов. Эта полоса называется directory band. Как и все остальные «полосы», она имеет размер 8 Мбайт. Однако, если она будет полностью заполнена, HPFS начинает располагать каталоги файлов в других полосах. Расположение этой информаци­онной структуры в середине диска значительно сокращает среднее время пози­ционирования головок чтения/записи. Действительно, для перемещения голо­вок чтения/записи из произвольного места диска в его центр требуется в два раза меньше времени, чем для перемещения к краю диска, где находится корне­вой каталог в случае файловой системы FAT. Уже только одно это обеспечивает более высокую производительность файловой системы HPFS по сравнению с FAT. Аналогичное замечание справедливо и для NTFS, которая тоже располага­ет свой master file table в начале дискового пространства, а не в его середине.

Однако существенно больший (по сравнению с размещением Directory Band в середине логического диска) вклад в производительность HPFS дает использо­вание метода сбалансированных двоичных деревьев для хранения и поиска ин­формации о местонахождении файлов. Как известно, в файловой системе FAT каталог имеет линейную структуру, специальным образом не упорядоченную, поэтому при поиске файла требуется последовательно просматривать его с само­го начала. В HPFS структура каталога представляет собой сбалансированное де­рево с записями, расположенными в алфавитном порядке (рис. 4.11). Каждая за­пись, входящая в состав В-Тгее дерева, содержит атрибуты файла, указатель на соответствующий файловый узел, информацию о времени и дате создания фай­ла, времени и дате последнего обновления и обращения, длине данных, содержа­щих расширенные атрибуты, счётчик обращений к файлу, длине имени файла и само имя, и другую информацию.

 
 

.

Рис.4.11. Сбалансированное двоичное дерево

Файловая система HPFS при поиске файла в каталоге просматривает только не­обходимые ветви двоичного дерева (B-Тrее). Такой метод во много раз эффек­тивнее, чем последовательное чтение всех записей в каталоге, что имеет место в системе FAT. Для того чтобы найти искомый файл в каталоге (точнее, указатель на его информационную структуру F-node), организованном на принципах сбалансированных двоичных деревьев, большинство записей вообще читать не нуж­но. В результате для поиска информации о файле необходимо выполнить суще­ственно меньшее количество операций чтения диска.

Действительно, если, например, каталог содержит 4096 файлов, то файловая сис­тема FAT потребует чтения в среднем 64 секторов для поиска нужного файла внутри такого каталога, в то время как HPFS осуществит чтение всего только 2-4 секторов (в среднем) и найдёт искомый файл. Несложные расчёты позволя­ют увидеть явные преимущества HPFS над FAT. Так, например, при использова­нии 40 входов на блок блоки каталога дерева с двумя уровнями могут содержать 1640 входов, а каталога дерева с тремя уровнями – уже 65 640 входов. Други­ми словами, некоторый файл может быть найден в типичном каталоге из 65 640 файлов максимум за три обращения. Это намного лучше файловой системы FAT, где для нахождения файла нужно прочитать в худшем случае более 4000 секторов.

Размер каждого из блоков, в терминах которых выделяются каталоги в текущей реализации HPFS, равен 2 Кбайт. Размер записи, описывающей файл, зависит от размера имени файла. Если имя занимает 13 байтов (для формата 8.3), то блок из 2 Кбайт вмещает до 40 описателей файлов. Блоки связаны друг с другом посредством списковой структуры (как и описатели экстентов) для облегчения последовательного обхода.

При переименовании файлов может возникнуть так называемая перебалансировка дерева. Создание файла, переименование или стирание может приводить к каскадированию блоков каталогов. Фактически, переименование может потер­петь неудачу из-за недостатка дискового пространства, даже если файл непо­средственно в размерах не увеличился. Во избежание этого «бедствия» HPFS поддерживает небольшой пул свободных блоков, которые могут использовать­ся при «аварии». Эта операция может потребовать выделения дополнительных блоков на заполненном диске. Указатель на этот пул свободных блоков сохраня­ется в SpareBlock.

Важное значение для повышения скорости работы с файлами имеет уменьшение их фрагментации. В HPFS считается, что файл является фрагментированным, если он содержит больше одного экстента. Снижение фрагментации файлов сокращает время позиционирования и время ожидания за счёт уменьшения количества перемещений головок, необходимого для доступа к данным файла. Алгоритмы работы файловой системы HPFS работают таким образом, чтобы по возможности размещать файлы в последовательных смежных секторах диска, что обеспечивает максимально быстрый доступ к данным впоследствии. В системе FAT, наоборот, запись следующей порции данных в первый же свободный клас­тер неизбежно приводит к фрагментации файлов. HPFS тоже, если это предос­тавляется возможным, записывает данные в смежные секторы диска (но не в первый попавшийся). Это позволяет несколько снизить число перемещений го­ловок чтения/записи от дорожки к дорожке. При этом, когда данные дописыва­ются в существующий файл, HPFS сразу же резервирует как минимум 4 Кбайт непрерывного пространства на диске. Если же часть этого пространства не по­требовалась, то после закрытия файла она высвобождается для дальнейшего использования. Файловая система HPFS равномерно размещает непрерывные файлы по всему диску для того, чтобы впоследствии без фрагментации обеспе­чить их возможное увеличение. Если же файл не может быть увеличен без нару­шения его непрерывности, HPFS опять-таки резервирует 4Кбайт смежных блоков как можно ближе к основной части файла с целью сократить время пози­ционирования головок чтения/записи и время ожидания соответствующего сек­тора.

Очевидно, что степень фрагментации файлов на диске зависит как от числа фай­лов, расположенных на нём, их размеров и размеров самого диска, так и от характера и интенсивности самих дисковых операций. Незначительная фрагмента­ция файлов практически не сказывается на быстродействии операций с файлами. Файлы, состоящие из двух-трех экстентов, практически не снижают производительность HPFS, так как эта файловая система следит за тем, чтобы области дан­ных, принадлежащие одному и тому же файлу, располагались как можно ближе друг к другу. Файл из трех экстентов имеет только два нарушения непрерывно­сти, и, следовательно, для его чтения потребуется всего лишь два небольших пе­ремещения головки диска. Программы (утилиты) дефрагментации, имеющиеся для этой файловой системы, по умолчанию считают наличие двух-трех экстен­тов у файла нормой. Например, программа HPFSOPT из набора утилит Gamma-Tech по умолчанию не дефрагментирует файлы, состоящие из трех и менее экс­тентов, а файлы, которые имеют большее количестве экстентов, приводятся к 2 или 3 экстентам, если это возможно (файлы объёмом в несколько десятков ме­габайт всегда будут фрагментированы, ибо максимально возможный размер экс­тента, как вы помните, равен 8 Мбайт). Надо сказать, что практика показывает, что в среднем на диске имеется не более 2 процентов файлов, имеющих три и бо­лее экстентов [96]. Даже общее количество фрагментированных файлов, как пра­вило, не превышает 3 процентов. Такая ничтожная фрагментация оказывает пре­небрежимо малое влияние на общую производительность системы.

Теперь кратко рассмотрим вопрос надёжности хранения данных в HPFS. Любая файловая система должна обладать средствами исправления ошибок, возникаю­щих при записи информации на диск. Система HPFS для этого использует механизм аварийного замещения (hotfix).

Если файловая система HPFS сталкивается с проблемой в процессе записи дан­ных на диск, она выводит на экран соответствующее сообщение об ошибке. Затем HPFS сохраняет информацию, которая должна была быть записана в дефектный сектор, в одном из запасных секторов, заранее зарезервированных на этот слу­чай. Список свободных запасных блоков хранится в резервном блоке HPFS. При обнаружении ошибки во время записи данных в нормальный блок HPFS выби­рает один из свободных запасных блоков и сохраняет эти данные в нём. Затем файловая система обновляет карту аварийного замещения в резервном блоке. Эта карта представляет собой просто пары двойных слов, каждое из которых является 32–битным номером сектора. Первый номер указывает на дефектный сек­тор, а второй – на тот сектор среди имеющихся запасных секторов, который был выбран для его замены. После замены дефектного сектора запасным карта ава­рийного замещения записывается на диск, и на экране появляется всплывающее окно, информирующее пользователя о произошедшей ошибке записи на диск. Каждый раз, когда система выполняет запись или чтение сектора диска, она просматривает карту аварийного замещения и подменяет все номера дефектных секторов номерами запасных секторов с соответствующими данными. Следует заметить, что это преобразование номеров существенно не влияет на производи­тельность системы, так как оно выполняется только при физическом обращении к диску, но не при чтении данных из дискового кэша. Очистка карты аварийного замещения автоматически выполняется программой CHKDSK при проверке дис­ка HPFS. Для каждого замещённого блока (сектора) программа CHKDSK выде­ляет новый сектор в наиболее подходящем для файла (которому принадлежат данные) месте жёсткого диска. Затем программа перемещает данные из запасно­го блока в этот сектор и обновляет информацию о положении файла, что может потребовать новой балансировки дерева блоков размещения. После этого CHKDSK вносит повреждённый сектор в список дефектных блоков, который хранится в дополнительном блоке HPFS, и возвращает освобожденный сектор в список свободных запасных секторов резервного блока. Затем удаляет запись из карты аварийного замещения и записывает отредактированную карту на диск.

Все основные файловые объекты в HPFS, в том числе файловые узлы, блоки размещения и блоки каталогов, имеют уникальные 32-битные идентификаторы и указатели на свои родительские и дочерние блоки. Файловые узлы, кроме того, содержат сокращённое имя своего файла или каталога. Избыточность и взаимосвязь файловых структур HPFS позволяют программе CHKDSK полно­стью восстанавливать файловую структуру диска, последовательно анализируя все файловые узлы, блоки размещения и блоки каталогов. Руководствуясь соб­ранной информацией, CHKDSK реконструирует файлы и каталоги, а затем заново создает битовые карты свободных секторов диска. Запуск программы CHKDSK следует осуществлять с соответствующими ключами. Так, например, один из вариантов работы этой программы позволяет найти и восстановить удаленные файлы.

HPFS относится к так называемым монтируемым файловым системам. Это оз­начает, что она не встроена в операционную систему, а добавляется к ней при не­обходимости. Файловая система HPFS устанавливается оператором IFS1 в файле CONFIG.SYS. Этот оператор всегда помещается в первой строке данного конфи­гурационного файла. В приводимом далее примере оператор IFS устанавливает файловую систему HPFS с кэшем в 2 Мбайт, длиной записи кэша в 8 Кбайт и ав­томатической процедурой проверки дисков С и D:

IFS=E: \OS2\HPFS.IFS /CACHE: 2048 /CRECL: 4 /AUTOCHECK: CD

Для запуска программы управления процессом кэширования следует прописать в файле CONFIG.SYS ещё одну строку:

RUN=E: \OS2\CACHE.EXE /Lazy: On /BufferIdle: 2000 /DiskIdle: 4000

/MaxAge: 8000 /D1rtyMax: 256 /ReadAhead: On

В этой строке включается режим отложенной («ленивой») записи, устанавлива­ются параметры работы этого режима, а также включается режим упреждающего чтения данных, что в целом позволяет существенно сократить количество обращений к диску и ощутимо повысить быстродействие файловой системы. Так, ключ Lazy с параметром On включает «ленивую запись», а с параметром Off – выклю­чает. Ключ BufferIdle определяет время в миллисекундах, в течение которого бу­фер кэша должен оставаться в неактивном состоянии, чтобы стало возможным осуществить запись данных из кэша на диск. По умолчанию (то есть если не про­писывать данный ключ явным образом) это время равно 500 мс. Ключ DiskIdle задает время (в миллисекундах), в течение которого диск должен оставаться в неактивном состоянии, чтобы стало возможным осуществить запись данных из кэша на диск. По умолчанию это время равно 1 с. Этот параметр позволяет избе­жать записи из кэша на диск во время выполнения других операций с диском.

Ключ MaxAge задаёт время (тоже в миллисекундах), по истечении которого часто сохраняемые в кэше данные наконец помечаются как «устаревшие» и при пере­полнении кэша могут быть замещены новыми. По умолчанию это время равно 5 с.

Остальные подробности установки параметров и возможные значения клю­чей имеются в HELP-файлах, устанавливаемых вместе с операционной систе­мой OS/2 Warp.

Наконец, следует сказать и ещё об одной системе управления файлами – речь идет о реализации HPFS для работы на серверах, функционирующих под управлением OS/2. Это система управления файлами, получившая название HPFS386.IPS. Ёё принципиальное отличие от системы HPFS.IFS заключается в том, что HPFS386.IFS позволяет (посредством более полного использования техноло­гии расширенных атрибутов) организовать ограничения на доступ к файлам и каталогами с помощью соответствующих списков доступа – ACL (access control list). Эта технология, как известно, используется в файловой системе NTFS. Кро­ме этого, в системе HPPS386.IFS в отличие от HPFS.IFS нет ограничений на объём памяти, выделяемой для кэширования файловых записей. Иными словами, при наличии достаточного объёма оперативной памяти объём файлового кэша может быть в несколько десятков мегабайт, в то время как для обычной HPFS.IFS этот объём не может превышать 2 Мбайт, что по сегодняшним меркам безусловно мало. Наконец, при установке режимов работы файлового кэша HPFS386.IFS есть возможность явным образом указать алгоритм кэширования. Наиболее эффек­тивным алгоритмом можно считать так называемый «элеваторный», когда при записи данных из кэша на диск они предварительно упорядочиваются таким об­разом, чтобы минимизировать время, отводимое на позиционирование головок чтения/ записи. Головки чтения/записи при этом перемещаются от внешних ци­линдров к внутренним и по ходу своего движения осуществляют запись и чтение данных в соответствии со специальным образом упорядочиваемым списком за­просов на дисковые операции.

Приведем пример записи строк в конфигурационном файле CONFIG.SYS, кото­рые устанавливают систему HPFS386.IFS и определяют параметры работы её под­системы кэширования:

IFS=E: \IBM386FS\HPFS386.IFS /AUTOCHECK: EGH

RUN=E: \IBM386FS\CACHE386.EXE /Lazy: On /BufferIdle: 4000 /MaxAge: 20000


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-29; Просмотров: 1310; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.057 с.)
Главная | Случайная страница | Обратная связь