HFS Plus - HFS Plus

  (Перенаправлено с Hfs + )
HFS +
Разработчики) Apple Inc.
ФИО Иерархическая файловая система Plus
Введено 19 января 1998 г . ; 22 года назад с Mac OS 8.1 ( 1998-01-19 )
Идентификатор раздела Apple_HFS ( карта разделов Apple )
0xAF ( MBR ) HFS и HFS +
Apple_HFSX ( карта разделов Apple ) при
HFSX
48465300-0000-11AA- AA11-00306543ECAC
( GPT )
Структуры
Содержание каталога B-дерево
Размещение файлов Битовая карта
Плохие блоки B-дерево
Пределы
Максимум. размер тома эксабайт
Максимум. размер файла 8 EiB
Максимум. количество файлов 4 294 967 295 (2 32 -1)
Максимум. длина имени файла 255 символов (255 единиц кодирования UTF-16, нормализованные к модифицированному Apple варианту формата D нормализации Unicode)
Допустимые символы в именах файлов Юникод , любой символ, включая 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 + является журнальной файловой системой , разработанной Apple Inc. Она заменила Hierarchical File System (HFS) в качестве основной файловой системы компьютеров компании Apple с выпуском 1998 Mac OS 8.1 . HFS + продолжала оставаться основной файловой системой Mac OS X, пока сама не была заменена с выпуском файловой системы Apple (APFS) на macOS High Sierra в 2017 году. HFS + также является одним из форматов, используемых цифровым музыкальным плеером iPod . Его также называют Mac OS Extended или HFS Extended , а его предшественник, HFS, также называют стандартом Mac OS или HFS . Во время разработки Apple называла эту файловую систему кодовым названием Sequoia .

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

История

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 Wrapper, что типично для томов 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.
  9. Последний сектор тома зарезервирован для использования Apple. Он используется в процессе производства компьютеров.

Критика

В HFS Plus отсутствуют некоторые функции, которые считаются основными для современных файловых систем, таких как ZFS и NTFS . Контрольные суммы данных - это наиболее часто упоминаемая недостающая функция. Кроме того, ядро ​​файловой системы использует строки Unicode NFD без учета регистра , что побудило Линуса Торвальдса сказать, что «HFS +, вероятно, является худшей файловой системой из когда-либо существовавших».

Помимо контрольной суммы, функции современных файловых систем, которых нет в 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.

Windows

По состоянию на май 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 - критика этой файловой системы