Иерархическая файловая система

редактировать
HFS
Разработчик (и) Apple Computer
Полное имяИерархический файл Система
введена17 сентября 1985 г.; 35 лет назад (17 сентября 1985 г.) с System 2.1
Идентификатор раздела Apple_HFS(Apple Partition Map ). 0xAF(MBR ) HFS и HFS +
Структуры
Содержимое каталогаB-дерево
Размещение файловBitmap
Плохие блокиB-tree
Ограничения
Максимальный размер тома2 TiB (2 × 1024 байта)
Максимальный размер файла2 GiB (2 × 1024 байта)
Максимальное количество файлов65535
Макс. Длина имени файла31 символ
Допустимые символы в именах файловВсе 8-битные значения, кроме двоеточия ":". Не рекомендуется использовать пустые значения и непечатаемые символы.
Особенности
Даты записаноСоздание, изменение, резервное копирование
Диапазон дат1 января 1904 г. - 6 февраля 2040 г.
Разрешение даты1s
Вилки Только 2 (данные и ресурс)
АтрибутыЦвет (3 бита, все остальные флаги 1 бит), заблокирован, настраиваемый значок, пакет, невидимый, псевдоним, система, канцелярские принадлежности, инициирован, нет ресурсов INIT, общий, рабочий стол
Разрешения файловой системы AppleShare
Прозрачное сжатиеДа (сторонний), Укладчик
Прозрачное шифрование No
Другое
Поддерживаемые операционные системы Классическая Mac OS, macOS, Linux, Microsoft Windows (через драйверы MacDrive или Boot Camp IFS )

Иерархическая файловая система (HFS ) - это проприетарная файловая система, разработанная Apple Inc. для использования в компьютерных системах под управлением Mac OS. Первоначально разработанный для использования на гибких дисках и жестких дисках, его также можно найти на носителях только для чтения, таких как CD-ROM. HFS также называется Стандарт Mac OS (или «Стандарт HFS»), а его преемник, HFS Plus, также называется Mac OS Extended (или «HFS Extended»).

С выпуском Mac OS X 10.6 Apple отказалась от поддержки форматирования или записи дисков HFS и образов, которые по-прежнему поддерживаются как только для чтения томов. Начиная с macOS 10.15, диски HFS больше не читаются.

Содержание
  • 1 История
  • 2 Дизайн
  • 3 Ограничения
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
История

Apple представила HFS в Сентябрь 1985 г., специально для поддержки первого жесткого диска Apple для Macintosh, заменив Macintosh File System (MFS), исходную файловую систему, которая была представлена ​​более полутора лет. ранее с первым компьютером Macintosh. HFS в значительной степени опиралась на первую иерархическую операционную систему Apple (SOS ) для отказавшего Apple III, которая также послужила основой для иерархических файловых систем на Apple IIe и Apple Lisa. HFS был разработан Патриком Дирксом и Биллом Браффи. Он разделял с MFS ряд конструктивных особенностей, которые не были доступны в других файловых системах того времени (например, DOS FAT ). Файлы могут иметь несколько ответвлений (обычно вилка данных и ресурсов ), что позволяет хранить основные данные файла отдельно от ресурсов, таких как значки, которые, возможно, потребуется локализовать. Для ссылок на файлы использовались уникальные идентификаторы файлов, а не имена файлов, а имена файлов могли быть длиной 255 символов (хотя Finder поддерживал только 31 символ).

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

Решением было заменить структуру каталогов MFS на более подходящую для больших файловых систем. HFS заменила плоскую структуру таблицы файлом каталога, в котором используется структура B-tree, поиск в которой можно осуществлять очень быстро независимо от размера. HFS также переработала различные структуры, чтобы иметь возможность хранить более крупные числа, почти повсеместно 16-битные целые числа заменены 32-битными. Как ни странно, одним из немногих мест, где этого «увеличения размера» не произошло, был сам файловый каталог, который ограничивает HFS в общей сложности 65 535 файлами на каждом логическом диске.

Хотя HFS является проприетарным форматом файловой системы, он хорошо документирован; обычно существуют решения для доступа к дискам в формате HFS из большинства современных операционных систем.

Apple представила HFS по необходимости с первым предложением 20 МБ жесткого диска для Macintosh в сентябре 1985 г., когда он был загружен в оперативную память с дискеты MFS при загрузке с помощью файла исправления («Жесткий диск 20»). Однако HFS не получила широкого распространения до тех пор, пока она не была включена в 128K ROM, который дебютировал с Macintosh Plus в январе 1986 года вместе с большим дисководом на 800 КБ для Macintosh, который также использовал HFS. Внедрение HFS было первым достижением Apple, оставившим позади модель компьютера Macintosh: оригинальный 128K Macintosh, в котором не хватало памяти для загрузки кода HFS, и он был незамедлительно снят с производства.

В 1998 году Apple представила HFS Plus для решения проблемы неэффективного распределения дискового пространства в HFS и для добавления других улучшений. HFS по-прежнему поддерживается текущими версиями Mac OS, но начиная с Mac OS X, том HFS нельзя использовать для загрузки, а начиная с Mac OS X 10.6 (Snow Leopard) тома HFS доступны только для чтения и не могут быть созданы или обновлены. В macOS Sierra (10.12) в примечаниях к выпуску Apple указано, что «Стандартная файловая система HFS больше не поддерживается». Однако поддержка HFS Standard только для чтения все еще присутствует в Sierra и работает так же, как и в предыдущих версиях.

Дизайн

Том хранения по своей природе разделен на логические блоки по 512 байт. Иерархическая файловая система группирует эти логические блоки в блоки распределения, которые могут содержать один или несколько логических блоков, в зависимости от общего размера тома. HFS использует 16-битное значение для адресации блоков распределения, ограничивая количество блоков распределения 65 535 (2-1).

Пять структур составляют том HFS:

  1. Логические блоки 0 и 1 тома - это Загрузочные блоки, которые содержат информацию о запуске системы. Например, имена файлов System и Shell (обычно Finder ), которые загружаются при запуске.
  2. Логический блок 2 содержит блок главного каталога (также известный как MDB ). Это определяет широкий спектр данных о самом томе, например отметки даты и времени, когда том был создан, расположение других структур тома, таких как растровое изображение тома, или размер логических структур, таких как блоки распределения. Также имеется дубликат MDB, называемый блоком альтернативного главного каталога (также известный как альтернативный MDB ), расположенный на противоположном конце тома во втором предпоследнем логическом блоке. Он предназначен в основном для использования дисковыми утилитами и обновляется только тогда, когда размер файла каталога или файла переполнения экстентов увеличивается.
  3. Логический блок 3 является начальным блоком Bitmap тома, который отслеживает, какие блоки распределения используются, а какие свободны. Каждый блок распределения на томе представлен битом на карте: если бит установлен, то блок используется; если он ясен, тогда блок можно использовать. Поскольку в растровом изображении тома должен быть бит для представления каждого блока распределения, его размер определяется размером самого тома.
  4. Файл переполнения экстента является B-деревом, который содержит дополнительные экстенты, в которых указывается, какие блоки распределения и каким файлам назначены после того, как исчерпаны первые три экстента в файле каталога. Более поздние версии также добавили возможность для файла переполнения экстента хранить экстенты, которые записывают плохие блоки, чтобы файловая система не пыталась выделить плохой блок для файла.
  5. Файл каталога это еще одно B-дерево, которое содержит записи для всех файлов и каталогов, хранящихся в томе. Он хранит четыре типа записей. Каждый файл состоит из записи потока файла и записи файла, а каждый каталог состоит из записи потока каталога и записи каталога. Файлы и каталоги в файле каталога располагаются по их уникальному идентификатору узла каталога (или CNID ).
    • A File Thread Record хранит только имя файла и CNID его родительского каталога.
    • A File Record хранит различные метаданные о файле, включая его CNID, размер файла, три отметки времени (когда файл был создан, последнее изменение, последнее резервное копирование), первый экстент файла вилок данных и ресурсов и указатели на первые данные файла и записи экстентов ресурсов в файле переполнения экстента. File Record также хранит два 16-байтовых поля, которые используются Finder для хранения атрибутов файла, включая такие вещи, как его код создателя, код типа, окно, в котором должен отображаться файл. и его местоположение в окне.
    • A Запись потока каталога хранит только имя каталога и CNID его родительского каталога.
    • A Запись каталога, которая хранит данные, такие как количество файлов, хранящихся в каталог, CNID каталога, три отметки времени (когда каталог был создан, последнее изменение, последнее резервное копирование). Как и File Record, Directory Record также хранит два 16-байтовых поля для использования Finder. В них хранятся такие вещи, как ширина и высота и координаты x и y для окна, используемого для отображения содержимого каталога, режим отображения (вид значков, вид списка и т. Д.) Окна и положение прокрутки окна. bar.
Ограничения

Файл каталога, в котором хранятся все записи файлов и каталогов в единой структуре данных, приводит к проблемам с производительностью, когда система допускает многозадачность, поскольку только одна программа может писать в эту структуру за один раз, что означает, что многие программы могут ожидать в очереди из-за того, что одна программа «забивает» систему. Это также серьезная проблема надежности, поскольку повреждение этого файла может привести к разрушению всей файловой системы. Это контрастирует с другими файловыми системами, которые хранят записи файлов и каталогов в отдельных структурах (например, файловая система DOS FAT или файловая система Unix ), где распределение структуры по диску означает, что повреждение одного каталога обычно нефатальный, и данные могут быть, возможно, реконструированы с данными, хранящимися в неповрежденных частях.

Кроме того, ограничение в 65 535 блоков распределения привело к файлам, имеющим «минимальный» размер, эквивалентный 1/65 535 размера диска. Таким образом, на любом томе, независимо от его размера, можно было хранить не более 65 535 файлов. Более того, любому файлу будет выделено больше места, чем это действительно необходимо, вплоть до размера блока распределения. Когда диски были маленькими, это не имело большого значения, потому что размер отдельного блока распределения был тривиальным, но когда диски начали приближаться к отметке 1 ГБ, наименьший объем пространства, который мог занимать любой файл (один блок распределения), стал чрезмерно большим., тратя впустую значительное количество дискового пространства. Например, на диске размером 1 ГБ размер блока распределения в HFS составляет 16 КБ, поэтому даже 1-байтовый файл займет 16 КБ дискового пространства. Эта ситуация была меньшей проблемой для пользователей, имеющих большие файлы (например, изображения, базы данных или аудио), поскольку эти большие файлы занимали меньше места в процентном отношении к их размеру. С другой стороны, пользователи с большим количеством небольших файлов могут потерять много места из-за большого размера блока распределения. Это сделало разделение дисков на более мелкие логические тома очень привлекательным для пользователей Mac, потому что небольшие документы, хранящиеся на меньшем томе, занимали бы гораздо меньше места, чем если бы они находились на большом разделе. Та же проблема существовала в файловой системе FAT16.

HFS сохраняет регистр файла, который был создан или переименован, но не чувствителен к регистру при работе.

Согласно сайту bombich.com, HFS больше не поддерживается в Catalina и будущих выпусках macOS.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-23 11:21:02
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте