Файловая система hpfs кратко

Обновлено: 05.07.2024

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

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

Для достижения более этого в HPFS применяется:

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

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

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

Прежде всего, HPFS пытается расположить файл в смежных кластерах, а если такой возможности нет, поместить его таким образом, чтобы фрагменты файла расположенные в смежных секторах диска, физически были как можно ближе друг к другу. Это существенно сокращает время позиционирования головок чтения/записи жесткого диска.

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

В начале диска расположено несколько управляющих блоков. Все остальное дисковое пространство разбито на множество областей из смежных секторов, или полос. В каждой области располагаются сами файлы и служебная информация о свободных и занятых секторах в этой области. Каждая полоса занимает на диске 8 Мб и имеет собственную битовую карту распределения секторов. Эти битовые карты показывают, какие секторы данной полосы заняты, а какие свободны. Каждому сектору полосы данных соответствует один бит в её битовой карте. Битовые карты двух полос располагаются на диске рядом, как и сами полосы (рис. 3). Такое расположение полос и битовых карт позволяет непрерывно разместить на диске файл размером до 16 Мб, без отдаления от самого файла информацию об его местонахождении. Если бы на весь логический диск была бы только одна адресная структура данных (как в FAT), то для работы с ней приходилось бы перемещать головки чтения/записи в среднем через половину диска. Именно для исключения таких потерь диск в HPFS разделен на полосы.

Дисковое пространство в HPFS выделяется не кластерами, а блоками. Размещение файлов в таких небольших блоках позволяет экономить дисковое пространство. Так потери составляют в среднем всего 256 байт на файл.

Загрузочный блок Дополнительный блок Резервный блок Полоса 1 Битовая карта 1 Битовая карта 2 Полоса 2 Полоса 3 Битовая карта 3 Битовая карта 4 Полоса 4

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

Кроме полос с записями файлов и битовых карт на томе (логическом диске) HPFS имеются еще загрузочный блок, дополнительный блок и резервный блок. Загрузочный блок содержит имя тома, его серийный номер, блок параметров BIOS и программу начальной загрузки. Блок параметров BIOS содержит информацию о жестком диске – количестве цилиндров и головок диска, числе секторов на дорожке. Эта информация используется программными модулями HPFS для поиска нужного сектора.

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

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

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

Файловый узел содержит размер файла и первые 15 символов имени файла, специальную служебную информацию, статистику доступа к файлу, расширенные атрибуты файла и список управления доступом.

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

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

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

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

Большое значение для увеличения производительности HPFS имеет метод сбалансированных двоичных деревьев, используемый для хранения и поиска информации о местонахождении файлов. В файловой системе FAT каталог имеет линейную неупорядоченную структуру и при поиске файла необходимо последовательно просматривать его с самого начала. В HPFS структура каталога представляет собой сбалансированное дерево, с записями расположенными в алфавитном порядке. Каждая запись содержит атрибуты файла, указатель на соответствующий файловый узел, информацию о времени и дате создания, последнего изменения и обращения к файлу, о размере файла, счетчик обращения к файлу, информацию о длине имени файла и само имя, и другая подобная информация. Таким образом, при поиске файла в каталоге просматриваются только необходимые ветви двоичного дерева. Записи каталога заведомо не относящиеся к искомому файлу не рассматриваются.

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

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

Существует еще одна реализация HPFS для работы на серверах – HPFS386.IFS. Ее отличие в том, что она позволяет посредством более полного использования расширенных атрибутов, организовать ограничение доступа к файлам, с помощью списков управления доступом. Также в этой системе нет ограничения на объем памяти, выделяемой для кэширования файловых записей. В HPFS этот объем не может превышать 2 Мб.

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

В этой статье объясняются различия между таблицей распределения файлов (FAT), Высокопрофилковой файловой системой (HPFS) и файловой системой NT (NTFS) в Windows NT и их преимуществами и недостатками.

Применяется к: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 100108

HPFS поддерживается только в Windows NT версиях 3.1, 3.5 и 3.51. Windows NT 4.0 не поддерживает и не может получить доступ к разделам HPFS. Кроме того, поддержка файловой системы FAT32 стала доступна в Windows 98/Windows OSR2 и Windows 2000.

Обзор FAT

FAT является наиболее упрощенным из файловых систем, поддерживаемых Windows NT. Файловая система FAT характеризуется таблицей распределения файлов (FAT), которая на самом деле является таблицей, которая находится в самом "верху" тома. Чтобы защитить том, в случае повреждения одной из них хранятся две копии FAT. Кроме того, таблицы FAT и корневой каталог должны храниться в фиксированном расположении, чтобы правильно располагать файлы загрузки системы.

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

Обновление таблицы FAT очень важно, а также отнимает много времени. Если таблица FAT регулярно не обновляется, это может привести к потере данных. Это отнимает много времени, так как при каждом обновлении таблицы FAT необходимо переместить головки чтения диска в логическую нулевую дорожку диска.

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

Конвенция о наименовании FAT

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

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

Зарезервированы следующие имена:

CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, PRN, NUL

Все символы будут преобразованы в верхний шкаф.

Преимущества FAT

Невозможно выполнить недоделку под Windows NT в любой из поддерживаемых файловых систем. Undelete utilities try to directly access the hardware, which cannot be done under Windows NT. Однако, если файл находился на разделе FAT и система перезапущена в MS-DOS, файл может быть незаверяем. Файловая система FAT лучше всего работает для дисков и/или разделов примерно в 200 МБ, так как FAT начинается с очень мало накладных расходов. Дополнительные вопросы о преимуществах FAT см. в следующих ниже.

Windows NT Server "Concepts and Planning Guide", Chapter 5, section titled "Choosing a File System"

Windows NT Набор ресурсов workstation 4.0, глава 18, "Выбор файловой системы"

Windows NT Набор ресурсов server 4.0 "Руководство по ресурсам", глава 3, раздел под названием "Какая файловая система будет использовать в каких томах"

Недостатки FAT

Желательно, чтобы при использовании дисков или разделов более 200 МБ файловая система FAT не должна использоваться. Это потому, что по мере увеличения размера тома производительность с FAT быстро снижается. Невозможно установить разрешения на файлы, которые являются разделами FAT.

Разделы FAT ограничены размером не более 4 гигабайт (ГБ) под Windows NT и 2 ГБ в MS-DOS.

Дополнительные обсуждения других недостатков FAT см. в следующем примере:

Windows NT Server "Concepts and Planning Guide", Chapter 5, section titled "Choosing a File System"

Windows NT Набор ресурсов workstation 4.0, глава 18, "Выбор файловой системы"

Microsoft Windows NT Server 4.0 Набор ресурсов "Руководство по ресурсам", глава 3, раздел под названием "Какая файловая система для использования в каких томах"

Обзор HPFS

Сначала файловая система HPFS была представлена с ОС/2 1.2, чтобы обеспечить больший доступ к более крупным жестким дискам, которые затем появились на рынке. Кроме того, новая файловая система должна была расширить систему именования, организации и безопасности для растущих требований рынка сетевых серверов. HPFS поддерживает организацию каталогов FAT, но добавляет автоматическую сортировку каталога на основе имен файлов. Имена файлов расширяются до 254 символов двойного byte. HpFS также позволяет файлу быть составленным из "данных" и специальных атрибутов, чтобы обеспечить повышенную гибкость с точки зрения поддержки других соглашений имен и безопасности. Кроме того, единица распределения меняется из кластеров в физические сектора (512 bytes), что уменьшает потерянное пространство диска.

В hpFS записи каталогов занимают больше информации, чем в fat. Как и файл атрибутов, это включает сведения об изменении, создании и дате и времени доступа. Вместо того, чтобы указать на первый кластер файла, записи каталога в HPFS указывают на FNODE. FNODE может содержать данные файла или указатели, которые могут указать на данные файла или другие структуры, которые в конечном итоге указывают на данные файла.

HPFS пытается выделить как можно больше файла в дополнительных секторах. Это делается для повышения скорости при последовательной обработке файла.

Кроме того, HPFS включает несколько уникальных объектов специальных данных:

Суперблок

Суперблок расположен в логическом секторе 16 и содержит указатель на FNODE корневого каталога. Одна из самых больших опасностей при использовании HPFS заключается в том, что если Суперблок потерян или поврежден из-за плохого сектора, содержимое раздела также не повреждено, даже если остальной диск в порядке. Можно восстановить данные на диске, скопив все на другой диск с хорошим сектором 16 и перестроив Super Block. Однако это очень сложная задача.

Запасной блок

Запасной блок расположен в логическом секторе 17 и содержит таблицу "горячие исправления" и блок запасных каталогов. В HPFS при обнаружении плохого сектора запись "горячие исправления" используется для логического указать на существующий хороший сектор на месте плохого сектора. Этот метод для обработки ошибок записи известен как горячее исправление.

Версия HPFS, включенная в Windows NT, не поддерживает горячее исправление.

Преимущества HPFS

HPFS лучше всего для дисков в диапазоне 200-400 МБ. Дополнительные вопросы о преимуществах HPFS см. в следующих ниже.

Windows NT Server "Concepts and Planning Guide", Chapter 5, section titled "Choosing a File System"

Windows NT Набор ресурсов workstation 4.0, глава 18, "Выбор файловой системы"

Windows NT Набор ресурсов server 4.0 "Руководство по ресурсам", глава 3, раздел под названием "Какая файловая система будет использовать в каких томах"

Недостатки HPFS

Из-за накладных расходов, задействованных в HPFS, это не очень эффективный выбор для объема менее 200 МБ. Кроме того, с объемами более 400 МБ, будет некоторое ухудшение производительности. Невозможно установить безопасность в HPFS в соответствии с Windows NT.

HPFS поддерживается только в Windows NT версиях 3.1, 3.5 и 3.51. Windows NT 4.0 не может получить доступ к разделам HPFS.

Дополнительные недостатки HPFS см. в следующих ниже.

Windows NT Server "Concepts and Planning Guide", Chapter 5, section titled "Choosing a File System"

Windows NT Набор ресурсов workstation 4.0, глава 18, "Выбор файловой системы"

Windows NT Набор ресурсов server 4.0 "Руководство по ресурсам", глава 3, раздел под названием "Какая файловая система будет использовать в каких томах"

Обзор NTFS

С точки зрения пользователя NTFS продолжает организовывать файлы в каталоги, которые, как и HPFS, сортироваться. Однако, в отличие от FAT или HPFS, на диске нет "специальных" объектов и нет зависимости от оборудования, такого как сектора 512-byte. Кроме того, на диске нет специальных местоположений, таких как таблицы FAT или суперблоки HPFS.

Надежность, что особенно желательно для высококлассных систем и файловых серверов

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

Поддержка требований POSIX

Удаление ограничений файловой системы FAT и HPFS

Надежность

Для обеспечения надежности NTFS были рассмотрены три основные области: возможность восстановления, устранение сбоев в одном секторе со смертельным исходом и горячее исправление.

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

В fat или HPFS, если сектор, на который расположен один из специальных объектов файловой системы, не удается, произойдет сбой в одном секторе. NTFS избегает этого двумя способами: во-первых, не используя специальные объекты на диске и отслеживая и защищая все объекты, которые находятся на диске. Во-вторых, в NTFS хранятся несколько копий (число зависит от размера тома) таблицы master File Table.

Как и версии HPFS для ОС/2, NTFS поддерживает горячее исправление.

Добавлены функциональные возможности

Одной из главных задач разработки Windows NT на каждом уровне является предоставление платформы, которая может быть добавлена и построена, и NTFS не является исключением. NTFS предоставляет богатую и гибкую платформу для использования других файловой системы. Кроме того, NTFS полностью поддерживает Windows NT безопасности и поддерживает несколько потоков данных. Файл данных больше не является единым потоком данных. Наконец, в соответствии с NTFS пользователь может добавить в файл свои собственные атрибуты, определенные пользователем.

Поддержка POSIX

NTFS является наиболее совместимым с POSIX.1 поддерживаемых файловых систем, так как поддерживает следующие требования POSIX.1:

Имя, чувствительное к делу:

В POSIX README.TXT, Readme.txt и readme.txt все файлы.

Дополнительный штамп времени:

Дополнительный штамп времени обеспечивает время последнего доступа к файлу.

Твердая ссылка — это когда два разных файла, которые могут располагаться в разных каталогах, указывают на одинаковые данные.

Удаление ограничений

Во-первых, NTFS значительно увеличил размер файлов и томов, так что теперь они могут быть до 2^64 bytes (16 exabytes или 18,446,744,073,709,551,616 bytes). NTFS также возвращается к концепции кластеров FAT, чтобы избежать проблемы HPFS фиксированного размера сектора. Это было сделано, Windows NT является портативной операционной системой, и в какой-то момент может возникнуть другая технология диска. Таким образом, 512 bytes в секторе рассматривается как имеющие большую возможность не всегда хорошо подходят для выделения. Это было сделано путем определения кластера как нескольких размеров естественного распределения оборудования. Наконец, в NTFS все имена файлов основаны на Юникоде, а имена 8.3 хранятся вместе с длинными именами файлов.

Преимущества NTFS

NTFS лучше всего использовать для объемов около 400 МБ или более. Это происходит потому, что производительность не снижается в соответствии с NTFS, как это делается в fat, с большими размерами тома.

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

Windows NT Server "Concepts and Planning Guide", Chapter 5, section titled "Choosing a File System"

Windows NT Набор ресурсов workstation 4.0, глава 18, "Выбор файловой системы"

Windows NT Набор ресурсов server 4.0 "Руководство по ресурсам", глава 3, раздел под названием "Какая файловая система будет использовать в каких томах"

Недостатки NTFS

Не рекомендуется использовать NTFS в томе, который меньше 400 МБ, из-за количества накладных расходов на NTFS. Это пространство в виде системных файлов NTFS, которые обычно используют не менее 4 МБ дискового пространства на разделе 100-МБ.

В настоящее время шифрование файлов не встроено в NTFS. Таким образом, кто-то может загрузиться в MS-DOS или другую операционную систему и использовать утилиту редактирования дисков низкого уровня для просмотра данных, хранимых в томе NTFS.

Невозможно форматирование дискетного диска с файловой системой NTFS; Windows NT форматы всех дискетных дисков с файловой системой FAT, так как накладные расходы, связанные с NTFS, не будут соответствовать дискетным дискам.

Дополнительные обсуждения недостатков NTFS см. в следующих ниже.

Windows NT Server "Concepts and Planning Guide", Chapter 5, section titled "Choosing a File System"

Windows NT Набор ресурсов workstation 4.0, глава 18, "Выбор файловой системы"

Windows NT Набор ресурсов server 4.0 "Руководство по ресурсам", глава 3, раздел под названием "Какая файловая система будет использовать в каких томах"

Конвенции о переименовании NTFS

Имена файлов и каталогов могут быть длиной до 255 символов, включая все расширения. Имена сохраняют случай, но не являются чувствительными к делу. NTFS не проводит различий между именами файлов в зависимости от случая. Имена могут содержать любые символы, за исключением следующих:

В настоящее время из командной строки можно создавать только имена файлов до 253 символов.

В зависимости от оборудования ограничения могут накладывать дополнительные ограничения размера разделов в любой файловой системе. В частности, раздел загрузки может быть размером всего 7,8 ГБ, а в таблице разделов имеется ограничение в 2 терабайта.

Дополнительные сведения о поддерживаемых файловых системах для Windows NT см. в Windows NT Набор ресурсов.

HPFS (англ. High Performance File System ) — высокопроизводительная файловая система, разработанная специалистами Microsoft и IBM и представленная в 1989 году вместе с операционной системой OS/2 1.20. Файловая система HPFS также поддерживалась ОС Windows NT до версии 3.51 включительно. По производительности эта ФС существенно опережает FAT. HPFS позволяет использовать жесткие диски объемом до 2 Терабайт (первоначально до 4 Гбайт). Кроме того, она поддерживает разделы диска размером до 512 Гб и позволяет использовать имена файлов длиной до 255 символов (на каждый символ при этом отводится 2 байта.

Содержание

Особенности HPFS

  • Главное отличие - базовые принципы размещения файлов на диске и принципы хранения информации о местоположении файлов. Благодаря этим принципам HPFS имеет высокую производительность и отказоустойчивость, является надежной файловой системой.
  • Дисковое пространство в HPFS выделяется не кластерами (как в FAT), а блоками. В современной реализации размер блока взят равным одному сектору, но в принципе он мог бы быть и иного размера. (По сути дела, блок -- это и есть кластер, только кластер всегда равен одному сектору). Размещение файлов в таких небольших блоках позволяет более эффективно использовать пространство диска, так как непроизводительные потери свободного места составляют в среднем всего (полсектора) 256 байт на каждый файл. Вспомним, что чем больше размер кластера, тем больше места на диске расходуется напрасно.
  • Система HPFS стремится расположить файл в смежных блоках, или, если такой возможности нет, разместить его на диске таким образом, чтобы экстенты (фрагменты) файла физически были как можно ближе друг к другу. Такой подход существенно уменьшает время позиционирования головок записи/чтения жесткого диска и время ожидания (задержка между установкой головки чтения/записи на нужную дорожку). Напомним, что в FAT файлу просто выделяется первый свободный кластер.

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

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

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

Структура

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

  • загрузочный блок (boot block),
  • дополнительный блок (super block) и
  • запасной (резервный) блок (spare block).

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

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

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

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

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

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

Загрузочный блок (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 и позволяет восстанавливать поврежденные данные на диске.

Остальное пространство диска разделено на группы (band) хранения данных. Каждая группа занимает 8 Мб и имеет свою собственную битовую карту свободного пространства, которая похожа на таблицу размещения файлов FAT. Каждому сектору группы соответствует один бит к ее битовой карте, показывающий занят ли соответствующий сектор. Битовые карты двух групп располагаются на диске рядом, также как располагаются и сами группы. Это дает возможность непрерывно разместить на жестком диске файл размером до 16 Мб. Одна из групп данных размером 8 Мб, расположенная в середине жесткого диска и называемая группой каталогов, хранит информацию о каталогах диска. В ней наряду с остальными каталогами располагается и корневой каталог.

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

Для сокращения времени позиционирования головок чтения/записи жесткого диска система 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).

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

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

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

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

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

HPFS (аббр. от англ. High Perfomance File System ) — файловая система, разработанная специалистами Microsoft и IBM на основе опыта IBM по созданию файловых систем MVS, VM и виртуального метода доступа. Со стороны Microsoft проектом руководил опытный системный программист Гордон Летвин (англ.).

Впервые поддержка HPFS появилась в операционной системе OS/2 версии 1.2. С тех пор штатная поддержка HPFS присутствует во всех версиях OS/2. В Windows NT поддержка HPFS существовала до версии 3.51 включительно (хотя есть успешные прецеденты использования старого драйвера HPFS в Windows NT 4.0 и даже Windows 2000). Впоследствии Microsoft отказалась от HPFS в пользу собственной файловой системы NTFS, при разработке которой был учтён опыт создания HPFS.

В OS/2 существует серверный вариант драйвера для HPFS, называемый HPFS386, который обладает некоторыми дополнительными возможностями.

Структура

Диск в HPFS делится на сектора фиксированного размера (512 байт в текущей реализации, при этом номер сектора или их количество кодируются во внутренних структурах как 4-байтовое беззнаковое целое, что позволяет адресовать диски размером до 2 32 * 512 = 2 терабайта).

В начале диска расположены несколько управляющих блоков:

    DOS-овского вида.
  1. SuperBlock содержит информацию о геометрии диска, указатели на битовые карты (т.н. битмапы, от англ.bitmaps ) свободного пространства, указатель на корневой каталог, размер дисковой полосы, номер полосы с каталогами, указатель на список сбойных блоков и т.п. SuperBlock также содержит дату последнего запуска CHKDSK. Обычно изменяют SuperBlock только программы CHKDSK и FORMAT (англ.).
  2. SpareBlock содержит указатели на пул HOTFIX-areas, пул Fault-Tolerance областей (только HPFS386 использует Fault-Tolerance), пул блоков для операций на почти переполненном диске и другие указатели, флаги и дескрипторы.
  3. Область начальной загрузки.
  4. Область секторов используемых (временно) для выполнения операций требующих дополнительную дисковую память. Эта область например, иногда задействуется при переименовании файла на заполненном диске.
  5. Другие области.

Расстояние между двумя битмапами равно 16MB. Размер полосы (8MB) может быть изменён в следующих версиях HPFS, так как на него нет прямых завязок. HPFS определяет размер полосы при чтении управляющих блоков с диска во время выполнения операции FSHelperAttach.

Размер битмапа равен 2K (8MB/512/8 = 2K).

Полоса, находящаяся в центре диска, используется для хранения каталогов. Эта полоса называется Directory Band. Однако, если она будет полностью заполнена, HPFS начнёт располагать каталоги файлов в других полосах.

Файлы и каталоги в HPFS базируются на фундаментальном объекте, называемом FNode. Каждая FNode занимает один сектор и в HPFS всегда располагается поблизости от своего файла или каталога (обычно непосредственно перед файлом или каталогом). FNode содержит длину и первые 15 символов имени файла, статистику по доступу к файлу, внутреннюю информацию, расширенные атрибуты и ACL (или только часть, если они очень большие), ассоциативную информацию о расположении и подчинении файла и т. д.

Имена файлов и каталогов при полной подстановке (от корня) не должны превышать 260 символов, при этом каждая компонента пути не должна быть длиннее 255 символов. В именах файлов недопустимы следующие символы:

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

С точки зрения размещения, файлы, каталоги и их расширенные атрибуты (если они не помещаются в FNode) рассматриваются HPFS как наборы экстентов. Экстент — это часть файла, лежащая в последовательных секторах. Каждый экстент описывается двумя числами: номером первого сектора и длиной (в секторах). Два последовательных экстента всегда объединяются HPFS в один. Минимальный размер экстента — один сектор. Так как расстояние между соседними битмапами свободных секторов равно 16 МБ, то и размер максимального экстента равен 16 МБ. Если файл состоит из восьми или менее экстентов, то его описание целиком хранится в FNode.

Если файл состоит более чем из восьми экстентов, то его описание может занимать несколько секторов, расположенных поближе к файлу, при этом эти сектора содержат не список, а прошитое сбалансированное B+ дерево экстентов. Дерево построено так, что его разбалансировка никогда не превышает 1/3 по объёму, и оно не отличается от оптимального более чем на один уровень. Корень дерева находится в FNode, причём может содержать до 12 элементов. Каждый дополнительный сектор, представляющий собой ветку дерева, содержит до 60 элементов, а лист — 40 элементов. Таким образом, если файл состоит из экстентов по одному сектору (этого никогда не будет!) и имеет размер 2 GB, для его описания потребуется дерево следующей структуры: 12*60*60*60*40=53 MB листьев и 1,7 MB веток. Для случайного доступа к любой части файла при этом потребуется (в худшем случае) 5 операций чтения управляющих структур.

Реальные файлы состоят из 1-3 экстентов.

Максимальный размер файла в HPFS сейчас 2 ГБ, однако он обусловлен только размером поля под размер файла и файловым указателем (4 байта) в самой OS/2 и её API. Это не предел HPFS. Следует помнить, что в HPFS отсутствует понятие кластера, файл может занимать 1, 2, 3, 4 или любое другое количество секторов.

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

Каталоги в HPFS, как и в FAT, образуют древовидную структуру. Но при этом внутри каталога HPFS строит сбалансированное B*-дерево на основе имён файлов для быстрого поиска файла по имени внутри каталога. Например, если каталог содержит 4096 файлов, FAT будет читать в среднем 64 сектора для поиска файла внутри каталога, а HPFS считает 2-4 сектора и найдёт файл.

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

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

Расширенные атрибуты и их разновидность ACL HPFS хранит в FNode. Если они не влезают в FNode, HPFS хранит их почти как файл, построив для этого B±Tree. Имена расширенных атрибутов до HPFS386 не выстраивались в B-Tree.

HPFS386

HPFS386 — драйвер для файловой системы HPFS, который предназначен для серверных систем с большой нагрузкой на дисковые операции. Драйвер HPFS386 поставляется с LAN Server для OS/2.

Основные отличия HPFS386 от штатного HPFS драйвера в OS/2:

  • 32-битный код
  • отсутствие ограничений на размер кеша (кэш ограничен лишь размером оперативной памяти)
  • поддержка списков контроля доступа ACL.

Литература

ADFS • AdvFS • BeFS • Btrfs • EFS • ext • ext2 • ext3 • ext3cow • Next3 • ext4 • FAT • FATX • VFAT • FFS • Files-11 • GFS • HFS • HFS Plus • XFSX • HPFS • ISO 9660 • JFS • LFS • MFS (Macintosh) • MFS (Tivo) • Minix • MUFS • NWFS • NILFS • NSS • NTFS • Protogon (В разработке) • PFS • Qnx4fs • Qnx6fs • ReiserFS • Reiser4 • SFS • SpadFS • UFS • UFS2 • UDF • VxFS • WinFS • WAFL • XFS • ZFS • Больше.

Читайте также: