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

Файловая система HPFS (High Performance File System — высокопроизводитель­ная файловая система) впервые появилась в операционных системах OS/2 1.2 и LAN Manager. Она была разработана совместными усилиями лучших специалис­тов компаний IBM и Microsoft на основе опыта IBM по созданию файловых сис­тем MVS, VM/CMS и виртуального метода доступа1. Архитектура HPFS начала создаваться как файловая система для многозадачного режима и была призвана обеспечить высокую производительность при работе с файлами на дисках боль­шого размера.

HPFS стала первой файловой системой для персональных компьютеров, в кото­рой была реализована поддержка длинных имен [26]. HPFS, как и FAT, как и мно­гие другие файловые системы, обладает структурой каталогов, но в ней также пре­дусмотрены автоматическая сортировка каталогов и специальные расширенные атрибуты (Extended Attributes, EAs)2, упрощающие обеспечение безопасности на файловом уровне и создание множественных имен. Помимо расширенных атри­бутов, каждый из которых концептуально подобен переменной окружения, HPFS по историческим причинам поддерживает те же самые атрибуты, что и файловая система FAT. Но самым главным отличием этой системы все же являются базовые принципы хранения информации о местоположении файлов.

Принципы размещения файлов на диске, положенные в основу HPFS, увеличива­ют как производительность файловой системы, так и ее надежность и отказо­устойчивость. Для достижения этих целей предложено несколько идей:

1 Так, со стороны компании Microsoft проектом руководил известный системщик Гордон Литвин
(Gordon Letwin).

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


178___________________________________________ Глава 6. Файловые системы

- размещение каталогов в середине дискового пространства;

- использование методов бинарных сбалансированных деревьев для ускорения
поиска информации о файле;

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

Действительно, прежде всего, HPFS пытается расположить файл в смежных клас­терах или, если такой возможности нет, поместить его на диск таким образом, что­бы экстенты (extents)' файла физически были как можно ближе друг к другу. Та­кой подход существенно сокращает время позиционирования (seek time) головок записи/чтения жесткого диска и время ожидания (rotational latency)2. Можно ска­зать, что файловая система HPFS имеет, по сравнению с FAT, следующие основ­ные преимущества:

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

- поддержка расширенных атрибутов, позволяющих более гибко управлять до­ступом к файлам и каталогам;

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

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

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

В начале диска расположено несколько управляющих блоков. Все остальное диско­вое пространство в HPFS разбито на множество областей из смежных секторов, или полос (bands). В каждой такой области располагаются и собственно сами данные файлов, и вспомогательная служебная информация о свободных или занятых сек­торах в этой области. Каждая полоса занимает на диске пространство в 8 Мбайт и имеет собственную битовую карту (bit map) распределения секторов, которая, с од­ной стороны, напоминает таблицу размещения файлов FAT, но, с другой, суще-

' Экстент — фрагмент файла, располагающийся в смежных секторах диска. Файл имеет, по крайней мере, один экстент, если он не фрагментирован, в противном случае — несколько экстентов.

2 Время ожидания — это задержка между установкой головки чтения/записи на нужную дорожку диска и началом чтения данных с диска. Эта задержка обусловлена тем, что система вынуждена ждать, пока диск не повернется таким образом, чтобы нужный сектор оказался под головкой чтения/записи.


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

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

Если бит имеет значение 1, то соответствующий сектор занят, если 0 — свободен. Битовые карты двух полос располагаются на диске рядом, также располагаются и сами полосы. То есть последовательность полос и карт выглядит следующим об­разом: битовая карта, битовая карта, полоса данных, полоса данных, битовая кар­та, битовая карта и т. д. Такое расположение полос и битовых карт позволяет не­прерывно разместить на жестком диске файл размером до 16 Мбайт и в то же время не удалять от самих файлов информацию об их местонахождении.

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

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

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

В дополнительном блоке содержится указатель на список битовых карт (bitmap block list). В этом списке перечислены все блоки на диске, в которых расположены

1 По сути дела, том — это не что иное, как раздел, или логический диск.

2 Блок параметров BIOS содержит информацию о жестком диске — количестве цилиндров и головок
диска, числе секторов на дорожке. Эта информация используется программными модулями HPFS для
поиска конкретного сектора (блока), поскольку все блоки пронумерованы 32-разрядными числами.


180 Глава 6. Файловые системы

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

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

Файлы и каталоги в HPFS базируются на фундаментальном объекте, уже упоми­навшемся файловом узле. Эта структура характерна для HPFS, и аналога в фай­ловой системе FAT у нее нет. Каждый файл и каталог диска имеет свой файловый узел. Каждый файловый узел занимает один сектор и всегда располагается побли­зости от своего файла или каталога (обычно — непосредственно перед файлом или каталогом). Файловый узел содержит размер файла и первые 15 символов имени файла, специальную служебную информацию, статистику по доступу к файлу, расширенные атрибуты файла и список управления доступом (Access Control List, ACL) или только часть этого списка, если он очень большой, ассоциативную ин­формацию о расположении и подчинении файла и т. д. Структура распределения информации в файловом узле может иметь несколько форм, в зависимости от раз­мера каталога или файлов. HPFS рассматривает файл как совокупность одного или более секторов. Из прикладной программы этого не видно; файл прикладной программе представляется как непрерывный поток байтов. Если расширенные ат­рибуты слишком велики для файлового узла, то в него записывается указатель на них.

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

1 Файловый узел — это структура, в которой содержится информация о расположении файла и о его расширенных атрибутах.


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

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

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

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

Однако существенно больший вклад в производительность HPFS (по сравнению с размещением полосы каталогов в середине логического диска) дает использова-

1 Из этого следует, что максимальный объем диска может составить (232 - 1) х 512 = 2 Тбайт.


182___________________________________________ Глава 6. Файловые системы

ние метода сбалансированных двоичных деревьев для хранения и поиска информа­ции о местонахождении файлов. Как известно, в файловой системе FAT каталог имеет линейную неупорядоченную специальным образом структуру, поэтому при поиске файла требуется последовательно просматривать его с самого начала. В HPFS структура каталога представляет собой сбалансированное дерево с запи­сями, расположенными в алфавитном порядке (рис. 6.5). Каждая запись, входя­щая в состав двоичного дерева (Binary Tree, B-Tree), содержит атрибуты файла, указатель на соответствующий файловый узел, информацию о времени и дате со­здания файла, о времени и дате последнего обновления и обращения, об объеме данных, содержащих расширенные атрибуты, счетчик обращений к файлу, инфор­мацию о длине имени файла и само имя, другую информацию.

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

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

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


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

дов, а дерева каталогов с тремя уровнями — уже 65 640 входов. Другими словами, некоторый файл может быть найден в типичном каталоге из 65 640 файлов макси­мум за три обращения. Это намного лучше файловой системы FAT, где в самом плохом случае для нахождения файла нужно прочитать более чем 4000 секторов.

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

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

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

Очевидно, что степень фрагментации файлов на диске зависит как от числа распо­ложенных на нем файлов, их размеров и размеров самого диска, так и от характера и интенсивности самих дисковых операций. Незначительная фрагментация фай­лов практически не сказывается на быстродействии операций с файлами. Файлы, состоящие из 2-3 экстентов, практически не снижают производительности HPFS,


184___________________________________________ Глава 6. Файловые системы

так как эта файловая система следит за тем, чтобы области данных, принадлежа­щие одному и тому же файлу, располагались как можно ближе друг к другу. Файл из трех экстентов имеет только два нарушения непрерывности, и, следовательно, для его чтения потребуется всего лишь два небольших перемещения головки дис­ка. Программы (утилиты) дефрагментации, имеющиеся для этой файловой систе­мы по умолчанию, считают наличие двух-трех экстентов у файла нормой1. Прак­тика показывает, что в среднем на диске имеется не более 2 % файлов, имеющих три и более экстентов [26]. Даже общее количество фрагментированных файлов, как правило, не превышает 3 %. Такая ничтожная фрагментация оказывает пре­небрежимо малое влияние на общую производительность системы.

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

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

' Например, программа HPFSOPT из набора утилит GammaTech пo умолчанию не дефрагментирует файлы, состоящие из трех и менее экстентов, а файлы, которые имеют большее количестве экстен­тов, приводятся к 2 или 3 экстентам, ежели это возможно (файлы объемом в несколько десятков мегабайтов всегда будут фрагментированы, ибо максимально возможный размер экстента, как вы помните, составляет 8 Мбайт).


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

в список дефектных блоков, который хранится в дополнительном блоке HPFS, и возвращает освобожденный сектор в список свободных запасных секторов ре­зервного блока. Затем удаляет запись из карты аварийного замещения и записы­вает отредактированную карту на диск.

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

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

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

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

RUN=E:\0S2\CACHE.EXE /Lazy:0n /Bufferldie:2000 /Diskldle:4000 /MaxAge:8000 /DirtyMax:256 /ReadAhead:On

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

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


186___________________________________________ Глава 6. Файловые системы

Остальные подробности установки параметров и возможные значения ключей име­ются в файлах помощи операционной системы OS/2 Warp. Однако здесь следует ска­зать и еще об одной системе управления файлами — речь идет о реализации HPFS для работы на серверах, функционирующих под управлением OS/2. Эта система управ­ления файлами получила название HPFS386.IFS. Ее принципиальные отличия от системы управления файлами HPFS.IFS, прежде всего, заключаются в том, что она позволяет посредством более полного использования технологии расширенных атри­бутов организовать ограничения на доступ к файлам и каталогам с помощью соответ­ствующих списков управления доступом (ACL). Эта технология, как известно, ис­пользуется в файловой системе NTFS. Кроме того, в системе управления файлами HPFS386.IFS, в отличие от HPFS.IFS, нет ограничений на объем памяти, выделяемой для кэширования файловых записей. Иными словами, при наличии достаточного объ­ема оперативной памяти объем файлового кэша может составлять несколько десят­ков мегабайтов, в то время как для обычной HPFS.IFS этот объем не может превы­шать двух мегабайтов, что по сегодняшним понятиям безусловно мало. Наконец, при установке режимов работы файлового кэша HPFS386.IFS есть возможность явным образом указать алгоритм упорядочивания запросов на запись. Наиболее эффектив­ным алгоритмом можно считать так называемый «элеваторный», при котором опера­ции записи данных из кэша на диск предварительно упорядочиваются таким образом, чтобы минимизировать время, отводимое на позиционирование головок чтения/за­писи. Головки чтения/записи при этом перемещаются от внешних цилиндров к внут­ренним и по ходу своего движения осуществляют запись и чтение данных в соответ­ствии со специальным образом упорядочиваемых списков запросов на дисковые операции. Напомним, что такой алгоритм управления запросами на дисковые опера­ции имеет название циклического сканирования (C-Scan).

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

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

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

Эти записи следует понимать следующим образом. При запуске операционной сис­темы в случае обнаружения флага, означающего, что не все файлы были закрыты в процессе предыдущей работы, система управления файлами HPFS386.IFS сначала запустит программу проверки целостности файловой системы для томов Е:, G: и Н:. Для кэширования файлов при работе этой системы управления файлами устанав­ливается режим отложенной записи со временем жизни буферов до 20 с. Остальные параметры и, в частности, алгоритм обслуживания запросов, устанавливаются в файле HPFS386.INI, который в данном случае располагается в каталоге E:\IBM386FS.

Опишем кратко некоторые наиболее интересные параметры, управляющие рабо­той кэша. Прежде всего, отметим, что файл HPFS386.INI разбит на несколько сек­ций. В настоящий момент мы рассмотрим секцию [ULTIMEDIA]:

[ULTIMEDIA]

QUEUESORT={FIF0|ELEVATOR|DEFAULT|CURRENT} QUEUEMETHOD={PRIORITY|NOPRIORITY|DEFAULT|CURRENT} QUEUEDEPTH={1...255|DEFAULT|CURRENT}


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

Параметр QUEUESORT задает способ ведения очереди запросов к диску. Он может принимать значения FIFO, ELEVATOR, DEFAULT и CURRENT. Если задано значение FIFO, то каждый новый запрос просто добавляется в конец очереди, то есть запросы вы­полняются в том порядке, в котором они поступают в систему. Однако можно упо­рядочить некоторое количество запросов по возрастанию номеров дорожек. Если задано значение ELEVATOR, то включается режим поддержки упорядоченной очере­ди запросов. При этом запросы начинают обрабатываться по алгоритму ELEVATOR (он же C-SCAN, или «режим циклического сканирования» [11, 26]). Напомним, что этот алгоритм подразумевает, что головка чтения/записи сканирует диск в выбранном направлении (например, в направлении возрастания номеров дорожек), останавливаясь для выполнения запросов, находящихся на пути следования.

Если для параметра QUEUESORT задано значение DEFAULT, то выбирается значение по умолчанию, которым является ELEVATOR. Если задано значение CURRENT, то оста­ется в силе тот алгоритм, который был выбран при инициализации менеджером дисковых операций (DASD-manager).

Параметр QUEUEMETHOD определяет, должны ли учитываться приоритеты запросов при построении очереди. Он может принимать значения PRIORITY, NOPRIORITY, DEFAULT и CURRENT. Если задано значение NOPRIORITY, то все запросы включаются в общую очередь, а их приоритеты игнорируются. Если задано значение PRIORITY, то менед­жер дисковых операций будет поддерживать несколько очередей запросов, по од­ной на каждый приоритет. Когда менеджер дисковых операций передает запросы на исполнение драйверу диска, он сначала выбирает запросы из самой приоритетной очереди, потом из менее приоритетной и т. д. Приоритеты назначает система управ­ления файлами HPFS386.IFS, а распределены они следующим образом.

1. Останов операционной системы с закрытием всех файлов или экстренная за­
пись из-за сбоя питания. Это самый высокий приоритет.

2. Страничный обмен.

3. Обычные запросы активного сеанса (foreground session), то есть задачи, с кото­
рой в данный момент работает пользователь и окно которой является актив­
ным.

4. Обычные запросы фонового сеанса (background session), то есть задачи, запу­
щенной пользователем, с которой он в данный момент непосредственно не ра­
ботает (говорят, что эта задача выполняется на фоне текущих активных вычис­
лений). Приоритеты 3 и 4 равны, если в файле CONFIG.SYS имеется строка:
RIORITY_DISK_IO=NO

5. Опережающее чтение и низкоприоритетные запросы страничного обмена (пред­
варительная выборка страниц).

6. Отложенная запись и прочие запросы, не требующие немедленной реакции.

7. Предварительная выборка. Это самый низкий приоритет.

Если для параметра QUEUEMETHOD задано значение DEFAULT, то выбирается значе­ние по умолчанию, которым является PRIORITY. Если задано значение CURRENT, то остается в силе тот метод, который был выбран менеджером дисковых операций при инициализации.


188___________________________________________ Глава 6. Файловые системы

Параметр QUEUEDEPTH задает глубину просмотра очереди при выборке запросов. Он может принимать значения из диапазона (1...255), а также DEFAULT и CURRENT. Если в качестве значения параметра QUEUEDEPTH задано число, то оно определяет количество запросов, которые должны находиться в очереди дискового адаптера одновременно. Например, для SCSI-адаптеров имеет смысл поддерживать такую длину очереди, при которой они смогут загрузить все запросы в свои аппаратные структуры. Если очередь запросов к адаптеру будет слишком короткой, то аппара­тура будет работать с неполной загрузкой, а если она будет слишком длинной, драй­вер SCSI-адаптера окажется перегруженным «лишними» запросами. Поэтому ра­зумным значением для QUEUEDEPTH является число, немного превышающее длину аппаратной очереди команд адаптера. Если для параметра QUEUEDEPTH задано зна­чение DEFAULT, то глубина просмотра очереди определяется автоматически на ос­новании значения, которое рекомендовано драйвером дискового адаптера. Если задано значение CURRENT, то глубина просмотра очереди не изменяется. В текущей реализации значение CURRENT эквивалентно значению DEFAULT.

Итак, текущие умолчания для системы управления файлами HPFS386.IFS имеют вид:

QUEUESORT=FIFO QUEUEMETHOD-DEFAULT

QUEUEDEPTH=2

А текущие умолчания для менеджера дисковых операций таковы:

QUEUESORT=ELEVATOR QUEUEMETHOD=PRIORITY QUEUEDEPTH=<зависит от адаптера диска>

Значения, устанавливаемые для менеджера дисковых операций по умолчанию, можно поменять с помощью параметра/QF:

BASEDEV=OS2DASD.DMD /QF:{1|2|3}

Здесь: 1соответствует выражению QUEUESORT=FIFO,2 — выражению QUEUEME-THOD=NOPRIORITY, 3 - выражениям QUEUESORT=FIFO и QUEUEMETHOD=NOPRIORITY.

Наконец, скажем еще несколько слов о монтируемых системах управления файла­ми (Installable File System, IFS), представляющих собой специальное системное про­граммное обеспечение («драйверы») для доступа к разделам, отформатированным под другую файловую систему. Это очень удобный и мощный механизм добавления в ОС новых файловых систем и замены одной системы управления файлами на дру­гую. Сегодня, например, для OS/2 уже реально существуют IFS-модули для файло­вой системы VFAT (FAT с поддержкой длинных имен), FAT32, Ext2FS (файловая система Linux), NTFS (правда, пока только для чтения). Для работы с данными на компакт-дисках имеется система CDFS.IFS. Есть и система управления файлами FTP.IFS, позволяющая монтировать ftp-архивы как локальные диски. Механизм монтируемых систем управления файлами был перенесен и в систему Windows NT.








Дата добавления: 2016-09-20; просмотров: 2794;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.036 сек.