HFS+

HFS+ (HFS Plus) - файловая система, созданная специалистами компании Apple Inc. Данная система была создана с целью замены их устаревающей Hierarchical File System (HFS), и использования в качестве основной на компьютерах Macintosh (или других системах, работающих на платформе Mac OS). HFS+ является также одним из форматов, используемых плеером iPod.

HFS Plus также известна как Mac OS Extended (или, ошибочно, “HFS Extended”), тогда как ее предшественница HFS называлась Mac OS Standard (или, по ошибке, “HFS Standard”). В процессе разработки, компания Apple присвоила данной файловой системе кодовое название Sequoia.

Компания-разработчик

Apple

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

Hierarchical File System Plus

Дата представления

19 января 1998 (Mac OS 8.1)

Структура

Содержимое папок

B-дерево

Размещение файлов

B-дерево

Сбойные сектора

B-дерево

Ограничения

Максимальный размер файла

16 EiB

Максимум файлов

Неограничено

Максимальная длина имени файла

255 символов (255 UTF-16 encoding units, normalized to Apple-modified variant of Unicode Normalization Format D)

Максимальный размер тома

16 EiB

Допустимые символы в названиях

Unicode, любые символы, включая NUL. OS API может использовать некоторые символы для совместимости

Возможности

Свойства

access, attributes modified, backed up, contents modified, created

Диапазон дат

1 января 1904 - 6 февраля 2040

Точность хранения даты

Потоки метаданных

Есть

Атрибуты

Color (3 bits, all other flags 1 bit), locked, custom icon, bundle, invisible, alias, system, stationery, inited, no INIT resources, shared, desktop

Права доступа

Unix permissions, ACLs (Mac_OS_X_Server_10.4 onward)

Фоновая компрессия

Да (на Mac OS X v10.6 или выше)

Фоновое шифрование

Да (на Mac OS X v10.7 или выше), для версий выше 10.3 и ниже 10.7 можно использовать тома .dmg, зашифрованные AES

Поддерживается ОС

Mac OS 8, Mac OS 9, Mac OS X

HFS Plus - усовершенствованная версия файловой системы HFS, поддерживающая более длинные файлы (блок адреса имеют длину в 32-бита вместо прошлых 16-ти) и использующая Unicode (взамен Mac OS Roman или каких-то других похожих наборов) для обозначения элементов (папок и файлов). Имена также, в свою очередь, закодированы в UTF-16 и нормированы в форму, близки по коду с Unicode Normalization Form D (NFD). Это означает, что несжатые символы (например, å) становятся сжатыми в имени файла в системе HFS+. Следовательно, один символ засчитывается за два, а UTF-16 определяет символ за пределами Basic Multilingual Plane (древние символы все-таки используются нечасто в названии папок и файлов) как двойной - в файле системы HFS+. 

Длина символов имени файла в HFS Plus составляет до 255 знаков. HFS+ использует 32-битную таблицу привязки файла к месту на диске. Старая адрессация представляла собой серьезное ограничение HFS, которое не позволяло работать с томами объемом более 65 536 блоков (как FAT16 и FAT-32). Если объем диска, к примеру, 1 ГБ, размер кластера (блока) составит 16 КБ, даже файл весом в 1 байт будет занимать все 16 КБ.

Как и в предшественнице, в HFS+ используется древовидная структура B*-дерево для хранения большей части метаданных.

Обнародование HFS+ состоялось 19 января 1998 года. Новая файловая система была представлена компанией Apple вместе со свежей Mac OS 8.1. Однако, впервые же все-таки ее представили в качестве тестовой системы для так и не увидившей свет OS Copland (разрабатывалась в период с 1994 по 1996 год). 

11 ноября 2002 года вышло обновление 10.2.2, компания Apple Inc. внедрила журналирование с целью повышения надежности хранения данных. Новая функция была в свободном доступе с серверной версией Mac OS X, но управлялась исключительно через интерфейс командной строки с настольных клиентов. 

Версия Mac OS X v10.3 ознаменовала собой новый этап: журналирование включили по умолчанию; а том с журналом назвали HFSJ. Позднее, Mac OS 10.3 получила файловую систему HFSX, которая позволила, в отличие от HFS+, работать в режиме с учетом регистра имен.

Том в HFS+ разделен на сектора (в HFS эти сектора носили название логические блоки), обычно они равны 512 байтам. Один или более секторов составляют кластер, общее число кластеров зависит от объема диска. 

32-битная адресация позволяет получить доступ к 4 294 967 296 (232) кластерам против старых 65 536 (216).

Как правило, том в HFS объединяется с HFS Wrapper. Wrapper предназначен для нескольких целей: 

  1. Благодаря нему компьютер Mac без поддержки HFS+ в ПЗУ может загружаться с таких томов. 
  2. Упрощается переход на HFS+, благодаря созданию простого загрузочного тома HFS, на котором есть доступный только для чтения файл Where_have_all_my_files_gone?. В файле содержится информация для пользователей Mac OS.
#