Файловая система 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;