Назад

 

Лекция №6

Системы управления файлами.

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

Вопросы:

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

·       Основные особенности HPFS

·       Структура раздела HPFS

·       Принцип размещения файлов

·       Принципы хранения информации о расположении файлов

·       Структура и размещение каталогов

·       Надежность хранения данных в HPFS

2.     Система управления файлами HPFS.IFS

3.     Система управления файлами HPFS386.1FS

4.     Файловая система JFS

 

HPFS (High Performance File System) — вы­сокопроизводительная файловая система.

 

HPFS впервые появилась в OS/2 1.2 и LAN Manager. (Кстати, HPFS была первой файловой системой, поддерживающей длинные имена.)

 

Перечислим основные особенности HPFS.

·       Главное отличие - базовые принципы размещения файлов на диске и принципы хранения информации о местоположении файлов. Благодаря этим принципам HPFS имеет высокую производительность и отказоустойчивость, является надежной файловой системой.

·       Дисковое пространство в HPFS выделяется не кластерами (как в FAT), а блоками. В современной реализации размер блока взят равным одному сектору, но в принципе он мог бы быть и иного размера. (По сути дела, блок — это и есть кластер, только кластер всегда равен одному сектору). Размещение файлов в таких небольших блоках позволяет более эффектив­но использовать пространство диска, так как непроизводительные потери сво­бодного места составляют в среднем всего (полсектора) 256 байт на каждый файл. Вспомним, что чем больше размер кластера, тем больше места на диске расходуется напрас­но.

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

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

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

·       В HPFS предусмотрены специальные расширенные атрибуты файлов, позволяющие управлять доступом к файлам и каталогам.

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

 

Cтруктура раздела HPFS

 

 

 

 

 

 


В начале раздела с установленной HPFS расположено три управляющих блока:

·       загрузочный блок (boot block),

·       дополнительный блок (super block) и

·       запас­ной (резервный) блок (spare block).

Они занимают 18 секторов.

 

Все остальное дис­ковое пространство в HPFS разбито на части из смежных секторов - полосы (band - полоса, лента). Каждая полоса занимает на диске 8 Мбайт.

Каждая полоса и имеет свою собственную битовую карту распределе­ния секторов.  Битовая карта показывает, какие секторы данной полосы за­няты, а какие — свободны. Каждому сектору полосы данных соответствует один бит в ее битовой карте. Если бит = 1, то сектор занят, если 0 - свободен.

Битовые карты двух полос располагаются на диске рядом, так же располагаются и сами полосы. То есть последовательность полос и карт выглядит как на рис.

!

 Обратим внимание на то, что такое расположение “полос” позволяет непрерыв­но разместить на жестком диске файл размером до 16 Мбайт и в то же время не удалять от самих файлов информацию об их местонахождении.

!

Сравним с FAT. Там на весь диск только одна “битовая карта” (таблица FAT). И для работы с ней приходится перемещать головки чте­ния/записи в среднем через половину диска.

 Именно для того, чтобы сократить время позиционирования головок чтения/записи жесткого диска в HPFS диск разбит на полосы.

 

Рассмотрим управляющие блоки.

Загрузочный блок (boot block)

Содержит имя тома, его серийный номер, блок парамет­ров BIOS и программу начальной загрузки.

Программа начальной загрузки на­ходит файл OS2LDR, считывает его в память и передает управление этой про­грамме загрузки ОС, которая, в свою очередь, загружает с диска в память ядро OS/2 - OS2KRNL. И уже OS2KRIML с помощью сведений из файла CONFIG.SYS за­гружает в память все остальные необходимые программные модули и блоки дан­ных.

Загрузочный блок располагается в секторах с 0 по 15.

 

 

Супер Блок (super block)

Содержит

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

·       указатель на список дефектных блоков (bad block list). Когда система обнаруживает поврежденный блок, он вносится в этот список и для хранения информации больше не используется;

·       указатель на группу каталогов (directory band),

·       указатель на файловый узел (F-node) корневого каталога,

·       дату последней проверки раздела програм­мой CHKDSK;

·       информацию о размере полосы (в текущей реализации HPFS - 8 Мбайт).

Super block размещается в 16 секторе.

 

Резервный блок (spare block)

Содержит

·       указатель на карту аварийного замеще­ния (hotfix map или hotfix-areas);

·       указатель на список свободных запасных бло­ков (directory emergency free block list);

·       ряд системных флагов и дескрипторов.

Этот блок разме­щается в 17 секторе диска.

 

Резервный блок обеспечивает высокую отказоустойчивость файловой системы HPFS и позволяет восстанавливать поврежденные данные на диске.

 

Принцип размещения файлов

 

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

 

Для сокращения времени позиционирования головок чтения/записи жесткого диска система HPFS стремится

1)     расположить файл в смежных блоках;

2)     если такой возможности нет, то разместить экстенты фрагментированного файла как можно ближе друг к другу,

Для этого HPFS использует статистику, а также старается условно резервировать хотя бы 4 килобайта места в конце файлов, которые растут.

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

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

 

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

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

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

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

 

Принципы хранения информации о расположении файлов

 

Каждый файл и каталог диска имеет свой файловый узел F-Node. Это структура, в которой содержится информация о располо­жении файла и о его расширенных атрибутах.

Замечание. Файловая система FAT аналога файлового узла не имеет.

Каждый F-Node занимает один сектор и всегда располагается поблизости от своего файла или каталога (обычно — непосредственно перед файлом или ка­талогом). Объект F-Node содержит 

·       длину,

·       первые 15 символов имени файла,

·       специальную служебную информацию,

·       статистику по доступу к файлу,

·       расши­ренные атрибуты файла,

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

·       ассоциативную информацию о расположении и подчине­нии файла и т. д.

 

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

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

Если файл фрагментирован, то размещение его экстентов описывается в файловом узле дополнительными парами 32-битных чисел.

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

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

 

Структура и размещение каталогов

 

Для хранения каталогов используется полоса, находящаяся в центре диска.

Эта полоса называется directory band.

Если она полностью заполнена, HPFS начинает располагать каталоги файлов в других полосах.

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

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

Вспомним, что в файловой системе FAT каталог имеет линейную структуру, специальным образом не упорядоченную, поэтому при поиске файла требуется последовательно просматривать его с само­го начала.

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

Каждая за­пись, входящая в состав дерева, содержит

·       атрибуты файла,

·       указатель на соответствующий файловый узел,

·       информацию о времени и дате создания фай­ла, времени и дате последнего обновления и обращения,

·       длине данных, содержа­щих расширенные атрибуты,

·       счетчик обращений к файлу,

·       длине имени файла

·       само имя,

·       и другую информацию.

 

Файловая система HPFS при поиске файла в каталоге просматривает только не­обходимые ветви двоичного дерева (В-Тгее). Такой метод во много раз эффек­тивнее, чем последовательное чтение всех записей в каталоге, что имеет место в системе FAT.

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

 

Проблемы

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

 

РЕЗЮМЕ

Принципы размещения файлов и каталогов на диске в HPFS:

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

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

·       каталоги хранятся в виде бинарного сбалансированного дерева с записями, расположенными в алфавитном порядке.

 

 

Надежность хранения данных в HPFS

 

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

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

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

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

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

Следует заметить, что это преобразование номеров существенно не влияет на производительность системы, так как оно выполняется только при физическом обращении к диску, но не при чтении данных из дискового кэша.

 

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

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

Система управления файлами HPFS.IFS

HPFS относится к так называемым монтируемым файловым системам -IFS (installable file system - устанавливаемая, монтируемая система управления файлами). Это оз­начает, что она не встроена в операционную систему, а добавляется к ней при не­обходимости.

Устанавливаемые файловые системы представляют собой специальные “драйверы” для доступа к разделам, отформатированным под другую файловую систему. Это очень удобный и мощный механизм добавления в ОС новых файловых систем и замены одной системы управления файлами на другую.

Сегодня, например, для OS/2 уже реально существуют IFS-модули для файловой системы VFAT, FAT32, Ext2FS (файловая система Linux), NTFS (правда, пока только для чтения). Для работы с данными на CD-ROM имеется CDFS.IFS. Есть и FTP.IFS, позволяющая монтировать ftp-архивы как локальные диски.

Файловая система HPFS устанавливается оператором IFS в файле CONFIG.SYS.

Этот оператор всегда помещается в первой строке данного конфи­гурационного файла. Пример.

IFS-E:\OS2\HPFS.IFS /САСНЕ:2048 /CRECL :4  /AUTOCHECK : CD

Здесь оператор IFS устанавливает файловую систему HPFS с кэшем в 2 Мбайт, длиной записи кэша в 8 Кбайт и ав­томатической процедурой проверки дисков С и D:

 

Замечание. Подробности установки параметров и возможные значения клю­чей имеются в HELP-файлах, устанавливаемых вместе с операционной систе­мой OS/2 Warp (или см. в книге Гордеева, Молчанова “Системное программное обеспечение” на стр. 175.

 

Cистема управления файлами HPFS386.1FS

 

Это реализации HPFS для работы на серверах, функционирующих под управ­лением OS/2.

Ее принципиальное отличие от системы HPFS.IFS

·       HPFS386.1FS позволяет (посредством более полного использования техноло­гии расширенных атрибутов) организовать ограничения на доступ к файлам и каталогам с помощью соответствующих списков доступа — ACL (access control list). (Эта же технология используется в файловой системе NTFS).

·       в системе HPFS386.1FS нет ограничений на объем памяти, выделяемой для кэширования файловых записей. Иными словами, при наличии достаточного объема оперативной памяти объем файлового кэша может быть в несколько десятков мегабайт, в то время как для обычной HPFS.IFS этот объем не может превышать 2 Мбайт, что по сегодняшним меркам безусловно мало.

·       При установке режимов работы файлового кэша HPFS386.1PS есть возможность явным образом указать алгоритм кэширования.

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

 

Пример записи строк в конфигурационном файле CONFIG.SYS, кото­рые устанавливают систему HPFS386.1FS и определяют параметры работы ее под­системы кэширования можно посмотреть в книге Гордеева, Молчанова “Системное программное обеспечение” на стр. 176-178

 

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

 

Для серверной операционной системы OS/2 Warp 4.5 была создана новая журнализирующая файловая система JFS (Journaling file system).

 

Новая серверная ОС компании IBM под названием OS/2 WarpServer for e-Business вышла в 1999 г.

 

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

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

В этой системе увеличена скорость восстановления файловой системы после сбоя.

Но, сохраняя целостность файловой системы, система управления файлами не гарантирует восстановление данных пользователя.

 

!

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

 

 

 

 

Назад