HFS Plus - HFS Plus

HFS +
Разработчики) Apple Inc.
Полное имя Иерархическая файловая система Plus
Введено 19 января 1998 г . ; 23 года назад с Mac OS 8.1 ( 1998-01-19 )
Идентификатор раздела Apple_HFS( Карта разделов Apple )
0xAF( MBR ) HFS и HFS +
Apple_HFSX( Apple Partition Map ) при HFSX ( GPT )
48465300-0000-11AA-
AA11-00306543ECAC
Структуры
Содержимое каталога B-дерево
Размещение файлов Битовая карта
Плохие блоки B-дерево
Пределы
Максимум. размер тома эксабайт
Максимум. размер файла ЭБ
Максимум. количество файлов 4 294 967 295 (2 32 - 1)
Максимум. длина имени файла 255 символов (255 единиц кодирования UTF-16, нормализованных к модифицированному Apple варианту Unicode Normalization Format D)
Допустимые символы в именах файлов Юникод , любой символ, включая NUL . API-интерфейсы ОС могут ограничивать количество символов по устаревшим причинам
Функции
Даты записаны доступ, изменение атрибутов, резервное копирование, изменение содержимого, создание
Диапазон дат 1 января 1904 г. - 6 февраля 2040 г.
Разрешение даты 1 с
Вилки да
Атрибуты Цвет (3 бита, все остальные флаги 1 бит), заблокирован, настраиваемый значок, пакет, невидимый, псевдоним, система, канцелярские принадлежности, инициирован, нет ресурсов INIT, общий доступ, рабочий стол
Разрешения файловой системы Разрешения Unix, списки ACL NFSv4 ( Mac OS X v10.4 и новее )
Прозрачное сжатие Частично (decmpfs, в Mac OS X 10.6 и выше)
Прозрачное шифрование Да (в Mac OS X 10.7 и выше). Шифрование домашнего каталога доступно с AES с использованием томов .dmg в формате HFS + в версиях OS X до 10.7, но позже, чем Mac OS X 10.3
Другой
Поддерживаемые операционные системы Mac OS 8.1 , Mac OS 9 , macOS / iOS / tvOS / watchOS / Darwin , Linux , Microsoft Windows (через драйверы Boot Camp IFS )

HFS Plus или HFS + (также известная как Mac OS Extended или HFS Extended ) - журналируемая файловая система, разработанная Apple Inc. Она заменила иерархическую файловую систему (HFS) в качестве основной файловой системы компьютеров Apple в Mac OS 8.1 1998 г. . HFS + продолжала оставаться основной файловой системой Mac OS X, пока сама не была заменена файловой системой Apple (APFS), выпущенной с macOS High Sierra в 2017 году. HFS + также является одним из форматов, используемых цифровым музыкальным плеером iPod .

По сравнению со своим предшественником HFS , также называемым Mac OS Standard или HFS Standard, HFS Plus поддерживает файлы гораздо большего размера (адреса блоков имеют длину 32 бита вместо 16 бит) и использование Unicode (вместо Mac OS Roman или любого другого символа наборы) для именования предметов. Как и HFS, HFS Plus использует B-деревья для хранения большинства метаданных томов , но, в отличие от большинства других файловых систем, HFS Plus поддерживает жесткие ссылки на каталоги. HFS Plus позволяет имена файлов длиной до 255 символов в длину, и н-раздвоенный файлы похожие на NTFS , хотя до 2005 года практически не системное программное обеспечение не воспользовался , кроме вилки вилки данных и вилки ресурсов . HFS Plus также использует полную 32-битную таблицу сопоставления распределения вместо 16-битной HFS, улучшая использование пространства на больших дисках.

История

Разрабатываемая под кодовым названием Sequoia , HFS + была представлена ​​19 января 1998 года в Mac OS 8.1 .

С выпуском обновления Mac OS X 10.2.2 11 ноября 2002 года Apple добавила в HFS Plus дополнительные функции ведения журнала для повышения надежности данных. Эти функции были доступны через графический интерфейс с помощью приложения Disk Utility в Mac OS X Server, но доступны только через командную строку в стандартном настольном клиенте.

В Mac OS X v10.3 все тома HFS Plus на всех компьютерах Mac были настроены на ведение журнала по умолчанию. В системе том HFS Plus с журналом идентифицируется как HFSJ .

Mac OS X 10.3 также представила другую версию HFS Plus под названием HFSX . Тома HFSX почти идентичны томам HFS Plus, за исключением того, что они никогда не окружены оболочкой HFS , типичной для томов HFS Plus, и они дополнительно поддерживают чувствительность к регистру для имен файлов и папок. Тома HFSX можно распознать по двум записям в заголовке тома, значению HX в поле подписи и 5 в поле версии.

Mac OS X 10.3 также ознаменовала принятие Apple декомпозиции Unicode 3.2, которая заменила использовавшуюся ранее декомпозицию Unicode 2.1. Это изменение вызвало проблемы у разработчиков, пишущих программное обеспечение для Mac OS X.

В Mac OS X 10.3 введен ряд методов, предназначенных для предотвращения фрагментации файлов в HFS +.

В Mac OS X 10.4 Apple добавила поддержку встроенных записей данных атрибутов, что было частью реализации HFS Plus в Mac OS X, по крайней мере, с 10.0 , но всегда помечено как «зарезервировано для использования в будущем». До выпуска Mac OS X Server 10.4 HFS Plus поддерживал только стандартные разрешения файловой системы UNIX ; однако в версии 10.4 появилась поддержка безопасности файлов на основе списка управления доступом , которая предоставляет более богатый механизм для определения прав доступа к файлам, а также полностью совместима с моделями прав доступа к файлам на других платформах, таких как Microsoft Windows XP и Windows Server 2003 .

В Mac OS X Leopard 10.5 жесткая привязка каталогов была добавлена ​​как фундаментальная часть Time Machine.

В Mac OS X Snow Leopard 10.6 сжатие HFS + было добавлено с помощью Deflate (Zlib). В открытых источниках и некоторых других областях это называется AppleFSCompression или decmpfs. Сжатые данные могут храниться либо в расширенном атрибуте, либо в ответвлении ресурса. При использовании API сторонних производителей AppleFSCompression не всегда полностью прозрачен. OS X 10.9 представила два новых алгоритма: LZVN (libFastCompression) и LZFSE .

В Mac OS X Lion 10.7 в операционную систему было добавлено шифрование логических томов (известное как FileVault 2 ). Это дополнение к операционной системе никоим образом не изменило логическую структуру файловой системы. Диспетчер логических томов Apple известен как Core Storage, и его шифрование на уровне тома может применяться к файловым системам, отличным от HFS Plus. При наличии соответствующего оборудования и шифрование, и дешифрование должны быть прозрачными.

Дизайн

Тома HFS Plus разделены на секторы (называемые логическими блоками в HFS), которые обычно имеют размер 512 байт. Затем эти секторы группируются в блоки распределения, которые могут содержать один или несколько секторов; количество блоков распределения зависит от общего размера тома. HFS Plus использует большее значение для адресации блоков распределения, чем HFS, 32 бита, а не 16 бит; это означает, что он может получить доступ к 4 294 967 296 (= 2 32 ) блокам распределения, а не к 65 536 (= 2 16 ) блокам распределения, доступным для HFS. Когда диски были маленькими, это не имело особых последствий, но по мере того, как стали доступны диски большей емкости, это означало, что наименьший объем пространства, который мог занимать любой файл (один блок распределения), становился чрезмерно большим, тратя значительное количество места. Например, на диске размером 1 ГБ размер блока распределения в HFS составляет 16 КБ, поэтому даже 1-байтовый файл займет 16 КБ дискового пространства. В результате система HFS Plus значительно улучшает использование пространства на дисках большего размера.

Имена файлов и папок в HFS Plus также закодированы в UTF-16 и нормализованы к форме, очень близкой к форме D (NFD) нормализации Unicode (что означает, что предварительно составленные символы, такие как «å», раскладываются в имени файла HFS + и поэтому учитываются как две кодовые единицы, а UTF-16 подразумевает, что символы из-за пределов базовой многоязычной плоскости также считаются двумя кодовыми единицами в имени файла HFS +). HFS Plus допускает длину имен файлов до 255 единиц кода UTF-16.

Раньше тома HFS Plus были встроены в стандартную файловую систему HFS. Это было прекращено переходом Tiger на Intel Mac, где файловая система HFS Plus не была встроена в оболочку. Обертка была разработана для двух целей; он позволял компьютерам Macintosh без поддержки HFS Plus в их ПЗУ загружать тома HFS Plus, а также был разработан, чтобы помочь пользователям перейти на HFS Plus, включив минимальный том HFS с файлом только для чтения с именем Where_have_all_my_files_gone? , объясняя пользователям с версиями Mac OS 8.0 и более ранними версиями без HFS Plus, что для тома требуется система с поддержкой HFS Plus. Исходный том HFS содержит подпись и смещение встроенного тома HFS Plus в заголовке тома. Все блоки распределения в томе HFS, которые содержат встроенный том, отображаются из файла распределения HFS как сбойные блоки .

Примечателен среди файловых систем, используемых для систем Unix, HFS Plus не поддерживает разреженные файлы .

Типичный том HFS Plus состоит из девяти структур:

  1. Секторы 0 и 1 тома являются загрузочными блоками HFS . Они идентичны загрузочным блокам в томе HFS. Они являются частью оболочки HFS.
  2. Сектор 2 содержит заголовок тома , который эквивалентен блоку главного каталога в томе HFS. Заголовок тома хранит широкий спектр данных о самом томе, например размер блоков распределения, временную метку, которая указывает, когда том был создан, или расположение других структур тома, таких как файл каталога или файл переполнения экстента. Заголовок тома всегда находится в одном и том же месте.
  3. Размещения файлов , который отслеживает, какие блоки распределения свободны и которые находятся в использовании. Это похоже на растровое изображение тома в HFS, в котором каждый блок распределения представлен одним битом. Ноль означает, что блок свободен, а единица означает, что блок используется. Основное отличие от растрового изображения тома HFS заключается в том, что файл распределения хранится как обычный файл - он не занимает специального зарезервированного пространства в начале тома. Файл распределения также может изменять размер, и его необязательно хранить непрерывно внутри тома.
  4. Каталог файлов является B-дерева , который содержит записи для всех файлов и каталогов , хранящихся в объеме. Файл каталога HFS Plus очень похож на файл каталога HFS , основные отличия заключаются в том, что записи имеют больший размер, чтобы можно было больше полей и чтобы эти поля были больше (например, чтобы разрешить более длинные 255-символьные имена файлов Unicode в HFS Plus ). Запись в файле каталога HFS имеет размер 512 байт; запись в файле каталога HFS Plus составляет 4 КБ в классической Mac OS и 8 КБ в macOS . Поля в HFS имеют фиксированный размер, тогда как в HFS Plus размер может варьироваться в зависимости от фактического размера данных, которые они хранят.
  5. Extents Переполнение файл является другим B-дерево , которое записывает блоки распределения , которые выделяются для каждого файла в виде экстентов. Каждая запись файла в файле каталога может содержать восемь экстентов для каждой вилки файла; после их использования дополнительные экстенты записываются в файл переполнения экстентов. Плохие блоки также записываются как экстенты в файл переполнения экстентов. Размер записи экстента по умолчанию в классической Mac OS составляет 1 КБ, а в macOS - 4 КБ.
  6. Атрибуты файл новый B-дерево в HFS Plus , которая не имеет соответствующую структуру в HFS. Файл атрибутов может хранить три различных типа записей по 4 КБ: записи атрибутов встроенных данных, записи атрибутов данных вилки и записи атрибутов расширения . Записи встроенных атрибутов данных хранят небольшие атрибуты, которые могут уместиться в самой записи. Записи атрибутов данных вилки содержат ссылки максимум на восемь экстентов, которые могут содержать более крупные атрибуты. Атрибуты расширения используются для расширения записи атрибута данных вилки, когда ее восемь записей экстентов уже используются.
  7. Файл запуска предназначен для не-Mac операционные систем , которые не имеют HFS или HFS Plus поддержки. Он похож на загрузочные блоки тома HFS.
  8. Предпоследний сектор содержит заголовок альтернативного тома , который эквивалентен блоку альтернативного главного каталога HFS. Обратите внимание, что это предпоследний сектор диска, а не том; если диск больше, чем объем, AVH будет вне диапазона файловой системы.
  9. Последний сектор тома зарезервирован для использования Apple. Он используется в процессе производства компьютеров.

Критика

В HFS Plus отсутствуют некоторые функции, которые считаются основными для современных файловых систем, таких как ZFS и NTFS . Контрольные суммы данных - это наиболее часто упоминаемая недостающая функция.

Помимо контрольной суммы, функции современных файловых систем, которых нет в HFS +, включают:

  • наносекундные временные метки
  • одновременный доступ (то есть более одного процесса могут получить доступ к файловой системе одновременно)
  • снимок
  • Поддержка дат после 6 февраля 2040 г.
  • поддержка разреженных файлов
  • лучшая реализация жестких ссылок (в других файловых системах это обычно несколько записей каталога, указывающих на одни и те же блоки данных; жесткие ссылки в macOS реализованы в виде небольших файлов, которые хранятся в специальном скрытом каталоге)

HFS Plus не был разработан для Unix-подобных систем, поэтому, когда Apple перешла на Mac OS X, пришлось модифицировать такие функции, как разрешения файловой системы и жесткие ссылки.

Другие операционные системы

Linux

Linux ядро включает в себя модуль hfsplus для монтажа HFS + файловых систем для чтения и записи. HFS + fsck и mkfs были перенесены на Linux и являются частью пакета hfsprogs.

В 2009 году было диагностировано, что эти драйверы повреждают диски HFS + емкостью более 2 ТБ. Следовательно, такие дистрибутивы Linux, как Debian и Ubuntu, перестали разрешать монтирование дисков HFS + или разделов размером более 2 ТБ. По состоянию на февраль 2011 года ведутся работы по снятию этого ограничения.

В текущем драйвере HFS + Linux необходимо отключить ведение журнала для безопасной записи данных в раздел HFS +. Если раздел не используется программным обеспечением Apple Time Machine , ведение журнала можно отключить в macOS: используя Дисковую утилиту в OS X Yosemite, пользователь может удерживать Alt / Option и нажать «Отключить ведение журнала» в меню «Файл», предварительно выбрав смонтированная перегородка.

Раздел HFS + с включенным журналированием может быть принудительно смонтирован с доступом для записи в Linux, но это не поддерживается и неразумно.

Проект Google Summer of Code по реализации поддержки записи в журналируемую HFS + был принят Linux Foundation в 2011 году, но к тому времени не был завершен и все еще находится в стадии разработки. Прогресс и улучшения в драйвере HFS +, включая некоторые обновления поддержки ведения журнала, время от времени публикуются в списке рассылки linux-fsdevel.

По состоянию на июль 2011 года Paragon Software Group предоставила драйверы ядра, обеспечивающие полный доступ для чтения и записи к журналируемым томам HFS +. Продукт представляет собой запатентованную реализацию HFS + на основе проприетарной библиотеки Paragon UFSD. Существуют как бесплатная, так и платная версии драйвера, и они включают утилиту для проверки и восстановления томов HFS +. Согласно онлайн-документации (бесплатная версия или платная версия), как бесплатная, так и платная версии в настоящее время поддерживают ядра Linux от 2.6.36 до 4.12.x. Ubuntu , Debian , Fedora , OpenSUSE и CentOS - единственные официально поддерживаемые дистрибутивы Linux.

Окна

По состоянию на май 2012 года Apple выпустила только драйверы HFS + только для чтения для Windows XP, Windows Vista и Windows 7 как часть программного обеспечения Boot Camp в Mac OS X 10.6 . Это означает, что пользователи этих систем могут читать данные на диске HFS +, но не записывать на них. Microsoft создала драйвер HFS + для Xbox 360 в основном с целью чтения плееров iPod, отформатированных в HFS +.

Бесплатное программное обеспечение с открытым исходным кодом - jHFSplus, основанное на HFSExplorer и jpfm - можно использовать для монтирования разделов hfs / hfs + как виртуальных папок только для чтения.

Существует бесплатный плагин для Total Commander , который, среди прочего, может читать файловые системы HFS и HFS +.

DiskInternals Linux Reader можно использовать для извлечения / сохранения папок / файлов из HFS и HFS + жестких дисков / разделов.

Коммерческий продукт MacDrive также доступен для установки приводов HFS и HFS +, оптических дисков и других носителей в проводнике Windows и позволяет читать и записывать на том, а также восстанавливать и форматировать диски Mac.

Коммерческий продукт Paragon HFS + для Windows обеспечивает полное чтение и запись, а также управление диском из всех версий Windows от Windows XP до Windows Server 2008.

Кроссплатформенность

Свободная ( GPL ) альтернатива HFSExplorer написана Erik Larsson. HFSExplorer - это приложение Java для просмотра и извлечения файлов с тома HFS + (Mac OS Extended) или HFSX (Mac OS Extended, с учетом регистра). Том может быть расположен либо на физическом диске, в различных форматах образов дисков Apple и разреженных образов дисков , либо в необработанном дампе файловой системы. Однако HFSExplorer - это решение только для чтения; он не может записывать тома в формате HFS.

Смотрите также

использованная литература

внешние ссылки

  • hfsexplorer - Проводник с открытым исходным кодом для MS-Windows®, написанный на Java, с поддержкой HFS, HFS + и HFSX
  • Apple «устаревший» Technote 1150 - формат тома HFS Plus
  • Устаревший Technote 1189 от Apple - Technote Monster Disk Driver
  • hfsdebug - отладчик для томов HFS Plus от Амита Сингха
  • hfsprogs - инструменты поддержки пользовательского пространства для файловых систем HFS + в системах Linux (адаптированные из собственных инструментов Apple).
  • iBored - редактор дисков и программа просмотра с поддержкой HFS Plus
  • MacDrive - коммерческий продукт для чтения, записи и создания томов HFS и HFS + в Windows.
  • HFSleuth - бесплатный инструмент командной строки, позволяющий проверять тома HFS + / HFSX и образы дисков (DMG) для macOS и Linux.
  • Mac OS X 10.7 Lion: обзор Ars Technica - критика этой файловой системы