Лекция №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 обеспечивает самую высокую
скорость работы с файлами из всех известных систем, созданных для ПК (это очень
важно для серверной ОС).