Открыть сервис

HPFS

HPFS (High Performance File System, «высокопроизводительная файловая система») — это файловая система, разработанная компанией IBM совместно с Microsoft для операционной системы OS/2. Она была представлена в 1989 году как замена более ранней файловой системы FAT, ориентированной на однозадачные среды и малые объёмы данных. HPFS обеспечивает улучшенную производительность при работе с большими дисками (более 512 МБ), поддерживает длинные имена файлов (до 254 символов), расширенные атрибуты и кэширование данных, что делает её одной из первых файловых систем, предназначенных для многозадачных многопользовательских систем.

История

Предпосылки создания

В середине 1980-х годов операционная система MS-DOS и её файловая система FAT столкнулись с ограничениями, связанными с ростом объёмов жёстких дисков. FAT16 поддерживала максимальный размер раздела до 2 ГБ, а размер кластера мог достигать 64 КБ, что приводило к неэффективному использованию дискового пространства. Имена файлов были ограничены форматом «8.3» (8 символов имени, 3 символа расширения). С появлением OS/2 1.2 (1988 год), которая требовала более мощной файловой системы для многозадачной работы и серверных приложений, возникла необходимость в новой разработке.

Разработка и внедрение

HPFS была создана группой инженеров IBM и Microsoft, работавших над OS/2. Изначально проект назывался «H-PFS» (High-Performance File System), а первая реализация появилась в OS/2 1.2. IBM и Microsoft разделились в 1990 году, после чего Microsoft сосредоточилась на Windows NT, где использовала свою файловую систему NTFS, а IBM продолжила развивать HPFS в версиях OS/2 2.x и 3.x (Warp). HPFS также поддерживалась в ранних версиях Windows NT (до 3.51 включительно), но к выходу Windows NT 4.0 (1996 год) поддержка была полностью прекращена, так как Microsoft сочла её устаревшей.

Архитектура и устройство

Структура диска

HPFS основывается на концепции секторов и extent-блоков. Основные элементы:

Имена файлов и расширенные атрибуты

HPFS поддерживает имена длиной до 254 символов (в кодировке OEM или Unicode в зависимости от версии). Регистр символов сохраняется, но не различается (HPFS не чувствительна к регистру — «File.txt» и «file.txt» считаются одним файлом). Для каждого файла можно задать расширенные атрибуты (Extended Attributes, EA) — метаданные, которые позволяют хранить, например, иконки, комментарии, информацию о программе-владельце, тип файла (ассоциацию). EA хранятся в отдельной области диска (EA Data Set) и могут быть до 64 КБ на файл (в OS/2 2.x — до 256 МБ на весь раздел).

Кластеризация

Размер кластера в HPFS динамический и может быть 1, 2, 4, 8, 16, 32, 64, 128 или 256 секторов (512 байт на сектор). Для дисков до 256 МБ рекомендуется кластер 1 сектор, для 512 МБ — 2 сектора и т.д. Максимальный размер раздела — до 64 ГБ (при размере кластера 256 секторов). Фрагментация контролируется с помощью extent-блоков: файл может состоять из нескольких extent-сегментов, и для каждого хранится его начальный сектор и длина. Это повышает скорость чтения по сравнению с FAT, где фрагментированные файлы требуют множества случайных обращений.

Производительность и преимущества

Кэширование

HPFS использует динамическое кэширование в оперативной памяти: часто используемые секторы каталогов и данных хранятся в кэше (по умолчанию 512 КБ, может увеличиваться до доступной памяти). Это снижает количество обращений к диску при многозадачной работе.

Оптимизация для многозадачности

Система поддерживает «ленивую запись» (lazy write) — данные записываются на диск с отсрочкой, что улучшает производительность фоновых операций. В случае сбоя питания используется протокол восстановления: блок восстанавливаемости содержит журнал операций, по которому можно откатить незавершённые транзакции.

Поддержка больших дисков

HPFS эффективно работает на дисках объёмом от 512 МБ до 64 ГБ, что было значительным прогрессом по сравнению с FAT16, где раздел более 2 ГБ требовал разбиения на логические диски.

Применение

OS/2

Основная область применения HPFS — операционные системы семейства OS/2: версии 1.2, 1.3, 2.x (1992), 3.x (Warp, 1994) и eComStation (2001). На системах с OS/2 HPFS использовалась для системного раздела, для серверов баз данных (например, IBM DB2), файловых серверов и рабочих станций.

Windows NT

Windows NT 3.1, 3.5 и 3.51 поддерживали HPFS как альтернативу NTFS и FAT. Однако Microsoft прекратила поддержку в Windows NT 4.0, сославшись на переход на собственную NTFS и сложности с лицензированием.

Другие системы

HPFS была портирована в Linux (через модули ядра, например, hpfs), что позволяло монтировать разделы OS/2 в Unix-подобных средах. В современном Linux модуль HPFS объявлен устаревшим (начиная с ядра 4.x). Поддержка также была в некоторых BSD-системах и в Haiku (проект-последователь BeOS).

Критика и недостатки

Ограничения

Сравнение с NTFS

NTFS, разработанная Microsoft для Windows NT, превзошла HPFS по ряду параметров: журналирование всех операций (через $LogFile), сжатие файлов на лету, шифрование (EFS), поддержка разрешений (ACL), гораздо большие объёмы дисков (до 16 ЭБ) и имена файлов длиной до 32 767 символов (в NTFS 3.1). NTFS также более устойчива к сбоям питания. HPFS проиграла конкуренцию во многом из-за коммерческого решения Microsoft прекратить её поддержку.

Современное состояние

HPFS почти не используется в 2020-х годах. Основные причины — доминирование Windows с NTFS и Linux с ext4, а также исчезновение OS/2 как платформы. Последняя коммерческая версия OS/2 — eComStation 2.1 (2011). Существует Open Source-проект ArcaOS (с 2017 года), который базируется на OS/2 и поддерживает HPFS, но для хранения данных в современных условиях (диски более 2 ТБ) рекомендуются сторонние решения на ext4 или NTFS. Поддержка HPFS в ядре Linux полностью удалена в версии 5.15 (2021 год).

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →