stringtranslate.com

ХФС Плюс

HFS Plus или HFS+ (также известная как Mac OS Extended или HFS Extended ) — журналируемая файловая система, разработанная Apple Inc. Она заменила иерархическую файловую систему (HFS) в качестве основной файловой системы компьютеров Apple с выпуском Mac OS 8.1 в 1998 году . HFS+ продолжала оставаться основной файловой системой Mac OS X , пока не была заменена на Apple File System (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 символов и файлы с n-разветвлениями , аналогичные NTFS , хотя до 2005 года почти ни одно системное программное обеспечение не использовало преимущества разветвлений, кроме разветвления данных и разветвления ресурсов . HFS Plus также использует полную 32-битную таблицу отображения распределения вместо 16 бит HFS, что улучшает использование пространства на больших дисках.

История

HFS+, находящаяся в разработке под кодовым названием Sequoia [5], была представлена ​​19 января 1998 года в выпуске Mac OS 8.1 . [2]

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

С 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 в поле версии. [2]

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

В Mac OS X 10.3 представлен ряд методов, призванных избежать фрагментации файлов в HFS+. [8]

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

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

В Mac OS X Snow Leopard 10.6 сжатие HFS+ было добавлено с помощью Deflate (Zlib). В системах с открытым исходным кодом и некоторых других областях это называется AppleFSCompression или decmpfs. Сжатые данные могут храниться либо в расширенном атрибуте, либо в ресурсной ветке. При использовании API сторонних разработчиков AppleFSCompression не всегда полностью прозрачен. [11] В 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. [2] Когда диски были маленькими, это не имело большого значения, но с появлением дисков большей емкости это означало, что наименьший объем пространства, который мог занимать любой файл (один блок выделения), становился чрезмерно большим, что приводило к потере значительного количества пространства. Например, на диске объемом 1 ГБ размер блока распределения в HFS составляет 16 КБ, поэтому даже файл размером 1 байт займет 16 КБ дискового пространства. В результате система HFS Plus значительно улучшает использование пространства на больших дисках.

Имена файлов и папок в HFS Plus также кодируются в UTF-16 [12] и нормализуются до формы, очень похожей на форму нормализации Unicode D (NFD) [13] (что означает, что предварительные символы, такие как «å», разлагаются в имени файла HFS+ и, следовательно, считаются двумя кодовыми единицами [14] , а 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 как плохие блоки . [2]

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

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

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

Критика

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

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

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

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

линукс

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

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

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

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

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

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

Окна

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

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

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

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

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

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

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

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

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

Ссылки

  1. ^ "OS X: Mac OS Extended format (HFS Plus) volume and file limits". Support.apple.com. 2008-07-29. Архивировано из оригинала 2010-07-30 . Получено 2010-07-05 .
  2. ^ abcdefg "Техническое примечание TN1150: Формат тома HFS Plus". Apple Developer Connection . 5 марта 2004 г. Архивировано из оригинала 22 июня 2013 г. Получено 28.03.2007 .
  3. ^ "Даты HFS Plus". Формат тома HFS Plus . Apple Inc. 5 марта 2004 г. Техническое примечание TN1150.
  4. ^ "10.6: Сжатие файлов с помощью сжатия HFS+ – Советы по Mac OS X". Архивировано из оригинала 2012-04-01.
  5. Грегг Уильямс (19 мая 2000 г.). «Strategy Mosaic: Sequoia — Mass Storage for Tomorrow and Beyond». Архивировано из оригинала 19 мая 2000 г.
  6. Джон Грубер (11 ноября 2002 г.). «Ворона». DaringFireball.net . Архивировано из оригинала 9 апреля 2007 г. Получено 28.03.2007 .
  7. ^ "Re: git на MacOSX и файлы с разложенными именами файлов utf-8". KernelTrap. 2010-05-07. Архивировано из оригинала 15 марта 2011 г. Получено 2010-07-05 .
  8. ^ "Фрагментация в томах HFS Plus". osxbook.com . Архивировано из оригинала 3 января 2020 г. . Получено 10 января 2020 г. .
  9. Джон Сиракуза (28 апреля 2005 г.). "OS X 10.4 Tiger: пересмотр метаданных". Ars Technica . Архивировано из оригинала 5 апреля 2007 г. Получено 28.03.2007 .
  10. ^ "Apple – OS X Server – Windows Services". Apple.com . Архивировано из оригинала 2007-12-31 . Получено 2007-11-12 .
  11. ^ iohead LLC (2011). "fileXray user guide and reference" (PDF) . iohead LLC. стр. 31 . Получено 14 июля 2020 г. .
  12. ^ "Что такое формат Mac OS HFS+?". AppleXsoft . Архивировано из оригинала 2018-08-24 . Получено 2018-11-06 .
  13. ^ "Технические вопросы и ответы QA1235: Преобразование в предварительно составленный Unicode". Apple Developer Connection . 7 февраля 2003 г. Архивировано из оригинала 18 мая 2008 г. Получено 28.03.2007 .
  14. ^ Имеются некоторые незначительные различия, связанные с тем фактом, что формат HFS Plus был окончательно оформлен до того, как Unicode стандартизировал формат NFD ( для получения дополнительной информации см. «Тонкости Unicode», заархивированное 22 июня 2013 г. на Wayback Machine ).
  15. ^ "Boot Blocks". Внутри Macintosh . Apple Inc. 2 июля 1996 г.
  16. ^ Харрис, Робин. "Самое большое разочарование WWDC – ZDNet". ZDNet . Архивировано из оригинала 22.10.2015.
  17. ^ abcdefg Джон Сиракузы (20 июля 2011 г.). «Mac OS X 10.7 Lion: обзор Ars Technica». Арс Техника. Архивировано из оригинала 22 декабря 2016 года . Проверено 18 января 2017 г.
  18. ^ "Mac OS X – ForensicsWiki". forensicswiki.org . Архивировано из оригинала 2017-04-10 . Получено 2017-04-09 .
  19. ^ "kernel/git/torvalds/linux.git – Исходное дерево ядра Linux". Архивировано из оригинала 2012-07-09.
  20. ^ "Debian – Подробности пакета hfsprogs в sid". Архивировано из оригинала 2009-07-03.
  21. ^ "kernel/git/torvalds/linux.git – Исходное дерево ядра Linux". git.kernel.org . Архивировано из оригинала 2012-07-11 . Получено 2016-10-14 .
  22. ^ "#550010 – hfsplus повреждает файловые системы >2 ТБ – Журналы отчетов об ошибках Debian". Архивировано из оригинала 2016-01-08 . Получено 2011-02-17 .
  23. ^ "[PATCH 2/3] hfsplus: снятие ограничения на размер в 2 ТБ — Linux Filesystem Development". Архивировано из оригинала 2011-07-18.
  24. ^ ab "Как смонтировать раздел HFS в Ubuntu как Read/Write?". Архивировано из оригинала 2011-11-30.
  25. Banks, Wyatt (31.07.2007), Файловая система Macintosh HFSPlus для Linux, архивировано из оригинала 22.07.2012
  26. ^ "Внедрение HFSPlus Journal на Linux". Архивировано из оригинала 5 апреля 2011 г.
  27. ^ "'hfsplus' в linux-fsdevel – MARC". Архивировано из оригинала 2016-01-08 . Получено 2012-09-21 .
  28. ^ "Обзор – Paragon NTFS&HFS+ для Linux 9.5 Express". Архивировано из оригинала 2011-08-06 . Получено 2012-06-29 .
  29. ^ "Полные возможности – Paragon NTFS/HFS+ для Linux 9.5 Express". Архивировано из оригинала 2012-09-03 . Получено 2012-09-21 .
  30. ^ "Полные возможности – Paragon NTFS&HFS+ для Linux 9.5 Professional". Архивировано из оригинала 2012-12-02 . Получено 2012-09-21 .
  31. ^ "FAQ & Glossary – Paragon NTFS&HFS+ for Linux 9.5 Professional". Архивировано из оригинала 2016-06-07 . Получено 30 июня 2016 .
  32. ^ "Apple – Поддержка – Загрузки – Bootcamp". apple.com . Архивировано из оригинала 2016-10-19 . Получено 2016-10-18 .
  33. ^ "jHFSplus". Шашанк Тулсян. 2011-06-29. Архивировано из оригинала 2011-07-09.
  34. ^ "DiskInternals Reader для Total Commander". DiskInternals. 2011-03-16. Архивировано из оригинала 2011-11-16 . Получено 2011-11-23 .
  35. ^ "DiskInternals Linux Reader". DiskInternals. Архивировано из оригинала 2012-04-06 . Получено 2016-10-18 .
  36. ^ "MacDrive 9 Standard". Mediafour. 2013-09-19. Архивировано из оригинала 2013-09-21 . Получено 2013-09-19 .
  37. ^ "Запись томов HFS+ в Windows – Paragon HFS+ для Windows". Архивировано из оригинала 2016-10-13 . Получено 2016-10-14 .
  38. ^ "HFSExplorer". Catacombae . Erik Larsson. 2015-10-13. Архивировано из оригинала 2018-09-24 . Получено 2018-09-23 .

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