Иерархическая файловая система (Apple)
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2020 г. ) |
Разработчик(и) | Apple Компьютер |
---|---|
Полное имя | Иерархическая файловая система |
Представлено | 17 сентября 1985 г Системой 2.1 | с
Предшественник | МФС |
Преемник | ГФС Плюс |
Идентификаторы разделов | Apple_HFS ( Карта разделов Apple ) 0xAF ( MBR ) HFS и HFS+ |
Структуры | |
Содержимое каталога | B-дерево |
Распределение файлов | Растровое изображение |
Плохие блоки | B-дерево |
Пределы | |
Максимальный размер тома | 2 ТБ ( 2 × 1024 4 байты ) |
Максимальный размер файла | 2 ГБ ( 2 × 1024 3 байты ) |
Макс нет. файлов | 65535 |
Максимальная длина имени файла | 31 персонаж |
Разрешенное имя файла персонажи | Все 8-битные значения, кроме : . Обескуражены нулевые и непечатаемые символы. |
Функции | |
Даты записи | Создание, изменение, резервное копирование |
Диапазон дат | 1 января 1904 г. - 6 февраля 2040 г. |
Разрешение даты | 1 с |
Вилки | Только 2 ( данные и ресурс ) |
Атрибуты | Цвет (3 бита, все остальные флаги 1 бит), заблокирован, пользовательский значок, пакет, невидимый, псевдоним, система, канцелярские товары, инициализирован, нет ресурсов INIT, общий доступ, рабочий стол |
Файловая система разрешения | AppleShare |
Прозрачный сжатие | Да (сторонний); Stacker , AutoDoubler , TimesTwo, Now Compress , StuffIt SpaceSaver, программные продукты Aанализа (SuperDisk!, More Disk Space, The Aанализ Disk Expander и eDisk), AutoSqueeze |
Прозрачный шифрование | Нет |
Другой | |
Поддерживается операционные системы | Классическая Mac OS , macOS , GS/OS , Linux , Microsoft Windows (через MacDrive или Boot Camp IFS ) драйверы [ нужна ссылка ] |
Иерархическая файловая система ( HFS ) — это собственная файловая система, разработанная Apple Inc. для использования в компьютерных системах под управлением Mac OS . Первоначально разработанный для использования на дискетах и жестких дисках , его также можно найти на носителях только для чтения, таких как компакт-диски . HFS также называется Mac OS Standard (или HFS Standard ), а его преемник, HFS Plus , также называется Mac OS Extended (или HFS Extended).
С выпуском Mac OS X 10.6 Apple прекратила поддержку форматирования или записи дисков и образов HFS , которые оставались поддерживаемыми как тома только для чтения до macOS 10.15 . [1] Начиная с macOS 10.15, HFS-диски больше не читаются.
История
[ редактировать ]Apple Apple представила HFS в сентябре 1985 года специально для поддержки первого жесткого диска для Macintosh, заменив файловую систему Macintosh (MFS), исходную файловую систему, которая была представлена более чем полутора годами ранее на первом компьютере Macintosh . HFS во многом опиралась на первую операционную систему Apple с иерархической файловой системой , SOS для неудавшегося Apple III , которая также послужила основой для иерархических файловых систем на Apple IIe и Apple Lisa . HFS была разработана Патриком Дирксом и Биллом Браффи. Он имел ряд общих конструктивных особенностей с MFS, которые не были доступны в других файловых системах того времени (например, DOS в FAT ). Файлы могли иметь несколько вилок (обычно ветку данных и ветку ресурсов ), что позволяло хранить основные данные файла отдельно от ресурсов, таких как значки, которые, возможно, потребуется локализовать. Ссылки на файлы использовались с использованием уникальных идентификаторов файлов, а не имен файлов, а длина имен файлов могла достигать 31 символа.
Однако MFS была оптимизирована для использования на очень маленьких и медленных носителях, а именно на дискетах , поэтому HFS была введена для преодоления некоторых проблем с производительностью, возникших с появлением носителей большего размера, особенно жестких дисков . Основной проблемой было время, необходимое для отображения содержимого папки. В MFS вся информация о списках файлов и каталогов хранилась в одном файле, который системе приходилось искать, чтобы составить список файлов, хранящихся в определенной папке. Это хорошо работало с системой с несколькими сотнями килобайт памяти и, возможно, сотней файлов, но по мере того, как системы разрастались до мегабайт и тысяч файлов, производительность быстро ухудшалась.
Решением было заменить структуру каталогов MFS на более подходящую для более крупных файловых систем. HFS заменил структуру плоской таблицы файлом каталога , который использует структуру B-дерева , поиск по которому можно осуществлять очень быстро, независимо от размера. [2] HFS также переработала различные структуры, чтобы они могли хранить большие числа: 16-битные целые числа почти повсеместно были заменены 32-битными. Как ни странно, одним из немногих мест, где это «увеличение размера» не произошло, был сам файловый каталог, что ограничивает HFS общим количеством 65 535 файлов на каждом логическом диске.
Хотя HFS является собственным форматом файловой системы, он хорошо документирован; Обычно существуют решения для доступа к дискам в формате HFS из большинства современных операционных систем .
Apple представила HFS по необходимости, выпустив свой первый жесткий диск емкостью 20 МБ для Macintosh в сентябре 1985 года, когда он загружался в оперативную память с дискеты MFS при загрузке с использованием файла исправления («Hard Disk 20»). Однако HFS не получила широкого распространения до тех пор, пока она не была включена в ПЗУ объемом 128 КБ , которое дебютировало с Macintosh Plus в январе 1986 года, вместе с более крупным дисководом для гибких дисков емкостью 800 КБ для Macintosh, который также использовал HFS. Внедрение HFS было первым достижением Apple, оставившим позади модель компьютера Macintosh: оригинальный Macintosh 128K , которому не хватало памяти для загрузки кода HFS, и производство которого было немедленно прекращено.
В 1998 году Apple представила HFS Plus , чтобы решить проблему неэффективного распределения дискового пространства в HFS и добавить другие улучшения. HFS Plus по-прежнему поддерживается текущими версиями Mac OS, но, начиная с Mac OS X , том HFS нельзя использовать для загрузки , а начиная с Mac OS X 10.6 (Snow Leopard), тома HFS доступны только для чтения и не могут быть созданы. или обновлено. В macOS Sierra (10.12) в примечаниях к выпуску Apple указано, что «Файловая система HFS Standard больше не поддерживается». [3] Однако поддержка стандарта HFS только для чтения продолжала работать до выпуска macOS 10.15 . [4] прекращение официальной поддержки классического стандарта HFS через 35 лет. [5]
Дизайн
[ редактировать ]Том хранения по своей сути разделен на логические блоки по 512 байт. Иерархическая файловая система группирует эти логические блоки в блоки выделения , которые могут содержать один или несколько логических блоков, в зависимости от общего размера тома. HFS использует 16-битное значение для адреса блоков распределения, ограничивая количество блоков распределения до 65 535 (2 16 -1).
Пять структур составляют том HFS:
- Логические блоки 0 и 1 тома — это загрузочные блоки , которые содержат информацию о запуске системы. [2] Например, имена файлов системы и оболочки (обычно Finder ), которые загружаются при запуске.
- Логический блок 2 содержит блок главного каталога (также известный как MDB ). Это определяет широкий спектр данных о самом томе, например отметки даты и времени создания тома, расположение других структур тома, таких как битовая карта тома, или размер логических структур, таких как блоки размещения. Существует также дубликат MDB, называемый альтернативным блоком главного каталога (также известный как альтернативный MDB ), расположенный на противоположном конце тома в предпоследнем логическом блоке. Он предназначен в основном для использования дисковыми утилитами и обновляется только тогда, когда размер файла каталога или файла переполнения экстентов увеличивается.
- Логический блок 3 — это начальный блок Volume Bitmap , который отслеживает, какие блоки распределения используются, а какие свободны. Каждый блок распределения на томе представлен битом в карте: если бит установлен, то блок используется; если это ясно, то блок можно использовать бесплатно. Поскольку битовая карта тома должна иметь бит для представления каждого блока выделения, ее размер определяется размером самого тома. [2]
- Файл переполнения экстента представляет собой B-дерево , содержащее дополнительные экстенты, которые записывают, какие блоки распределения выделены каким файлам после того, как первоначальные три экстента в файле каталога израсходованы. В более поздних версиях также добавлена возможность для файла переполнения экстента хранить экстенты, записывающие плохие блоки, чтобы файловая система не пыталась выделить файлу плохой блок.
- Файл каталога — это еще одно B-дерево , содержащее записи обо всех файлах и каталогах, хранящихся на томе. Он хранит четыре типа записей. Каждый файл состоит из записи потока файла и записи файла, а каждый каталог состоит из записи потока каталога и записи каталога. Файлы и каталоги в файле каталога располагаются по их уникальному идентификатору узла каталога (или CNID ).
- Запись файлового потока хранит только имя файла и CNID его родительского каталога.
- Запись файла хранит различные метаданные о файле, включая его CNID, размер файла, три временные метки (когда файл был создан, последний раз изменен, последний раз создана резервная копия), первые экстенты файла данных, а также разветвления ресурсов и указатели. к первым записям данных и ресурсов файла в файле переполнения экстента. Запись файла также хранит два 16-байтовых поля, которые используются Finder для хранения атрибутов файла, включая такие вещи, как код его создателя , код типа , окно, в котором файл должен появиться, и его местоположение в окне.
- хранит Запись потока каталога только имя каталога и CNID его родительского каталога.
- , Запись каталога в которой хранятся такие данные, как количество файлов, хранящихся в каталоге, CNID каталога, три временные метки (когда каталог был создан, последний раз изменен, последняя резервная копия). Как и запись файла, запись каталога также хранит два 16-байтовых поля для использования Finder. Они хранят такие вещи, как ширина и высота, а также координаты x и y для окна, используемого для отображения содержимого каталога, режим отображения (просмотр значков, просмотр списка и т. д.) окна и положение прокрутки окна. бар.
Ограничения
[ редактировать ]Файл каталога, в котором все записи файлов и каталогов хранятся в одной структуре данных, приводит к проблемам с производительностью, когда система допускает многозадачность , поскольку только одна программа может одновременно записывать данные в эту структуру, а это означает, что многие программы могут ожидать в очереди. из-за того, что одна программа "забивает" систему. [6] Это также серьезная проблема с надежностью, поскольку повреждение этого файла может разрушить всю файловую систему. Это контрастирует с другими файловыми системами, которые хранят записи файлов и каталогов в отдельных структурах (например, файловая система FAT DOS или файловая система Unix ), где распределение структуры по диску означает, что повреждение одного каталога обычно не является фатальным, а данные возможно, может быть восстановлен с использованием данных, хранящихся в неповрежденных частях.
Кроме того, ограничение в 65 535 блоков выделения привело к тому, что файлы имели «минимальный» размер, эквивалентный 1/65 535-му размеру диска. Таким образом, любой том, независимо от его размера, может хранить не более 65 535 файлов. Более того, любому файлу будет выделено больше места, чем ему действительно необходимо, вплоть до размера блока выделения. Когда диски были маленькими, это не имело большого значения, поскольку размер отдельного блока распределения был тривиальным, но когда диски начали приближаться к отметке в 1 ГБ, наименьший объем пространства, который мог занимать любой файл (один блок распределения), становился чрезмерно большим. , тратя значительное количество дискового пространства. Например, на диске емкостью 1 ГБ размер блока распределения в HFS составляет 16 КБ, поэтому даже файл размером 1 байт займет 16 КБ дискового пространства. Эта ситуация представляла меньшую проблему для пользователей, имеющих большие файлы (например, изображения, базы данных или аудио), поскольку эти более крупные файлы занимали меньше места в процентах от размера их файла. С другой стороны, пользователи с большим количеством небольших файлов могут потерять много места из-за большого размера блока выделения. Это сделало разбиение дисков на логические тома меньшего размера очень привлекательным для пользователей Mac, поскольку небольшие документы, хранящиеся на меньшем томе, занимали бы гораздо меньше места, чем если бы они находились в большом разделе. Такая же проблема существовала и в файловой системе FAT16.
HFS сохраняет регистр файла, который создается или переименовывается, но при работе не учитывает регистр.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Ганье, Кен (31 августа 2009 г.). «Потеря устаревших данных из-за Snow Leopard» . Компьютерный мир . Проверено 7 сентября 2009 г.
- ^ Jump up to: а б с «Букварь HFS» (PDF) . МВДЖ . GCSF, Инкорпорейтед. 25 мая 2003 г. Архивировано из оригинала (PDF) 31 декабря 2019 г.
- ^ «Что нового в macOS: macOS Sierra 10.12» . Яблоко . Проверено 25 января 2017 г.
- ^ «Как смонтировать диски HFS Classic в MacOS Catalina и более поздних версиях» . Мэтью Хьюз. 25 июля 2020 г. Проверено 2 марта 2022 г.
- ^ «О содержании безопасности обновления безопасности 2021-005 Mojave» . Поддержка Apple . 21 июня 2022 г. Проверено 18 мая 2023 г.
- ^ Джампаоло, Доминик (1999). Практическое проектирование файловой системы с помощью файловой системы Be (PDF) . Морган Кауфманн. п. 37. ИСБН 1-55860-497-9 . Архивировано из оригинала (PDF) 13 февраля 2017 г. Проверено 13 июля 2006 г.
Внешние ссылки
[ редактировать ]- Спецификация HFS с сайта Developer.apple.com.
- Файловые системы HOWTO: HFS – немного устарело
- Объяснение структуры файла HFS — раннее описание HFS
- DiskWarrior — Программное обеспечение для устранения всех повреждений каталога диска HFS.
- MacDrive — программное обеспечение для чтения и записи дисков в формате HFS/HFS Plus в Microsoft Windows.
- hfsutils — программное обеспечение с открытым исходным кодом для управления HFS в Unix, DOS, Windows, OS/2.