1

Я пытаюсь узнать о HFS+, и он продолжает ссылаться на «экстенты».

Википедия

Записи атрибутов данных вилки содержат ссылки максимум на восемь экстентов, которые могут содержать более крупные атрибуты. Атрибуты расширений используются для расширения записи атрибутов данных Fork, когда ее восемь записей экстентов уже используются.

  1. Что такое степень и как она используется?
  2. Используют ли файловые системы, которые используют экстенты, кластеры?
  3. Чем отличаются экстенты и кластеры?

Я прочитал статью в Википедии для экстентов, и все, что она говорит, - это непрерывные блоки зарезервированной памяти. Без контекста это не имеет смысла.

2 ответа2

5

(Отказ от ответственности: я знаю о файловых системах в целом, но не о HFS конкретно.)

Кластер - это группа секторов диска, которые выделены как единое целое. Обычно это небольшая степень двух. Например, если файловая система выделяет пространство в единицах по 4 килобайта, но размер физического сектора диска составляет 512 байт, кластер будет соответствовать группе из 8 секторов. Кластеры также называются "блоками" или "единицами выделения".

В двух словах, кластер - это наименьшая единица хранения в файловой системе, в том же смысле, что сектор - это наименьшая единица хранения на базовом диске. Они могут быть одинаковыми (например, файловая система, использующая кластеры 4 КБ на диске с физическими секторами 4 КБ), или они могут отличаться (вы можете создать файловую систему FAT с кластерами 64 КБ, но ни один диск не имеет таких больших секторов).

Экстент означает непрерывный диапазон кластеров где-то на диске, описываемый номером начального кластера и длиной (сколько кластеров после начального). Они используются для отслеживания того, где содержимое файла находится на диске. В идеале все содержимое файла должно храниться в одной смежной области, чтобы его можно было описать одной записью экстента, но если файл фрагментирован, каждая часть описывается отдельной записью экстента.

2

Я думаю, что Apple пытается скрыть это, но полное техническое описание формата тома HFS+ можно найти на их сайте разработчика здесь:

Техническая нота TN1150
Формат HFS Plus Volume

Вот несколько битов, которые имеют отношение к вашему вопросу:

HFS Plus выделяет пространство в единицах, называемых блоками выделения; блок выделения - это просто группа последовательных байтов. Размер (в байтах) блока выделения представляет собой степень двух, большую или равную 512, которая устанавливается при инициализации тома. Это значение нельзя легко изменить без повторной инициализации тома. Блоки выделения идентифицируются 32-битным номером блока выделения, поэтому на томе может быть не более 2 ^ 32 блоков выделения. Текущие реализации файловой системы оптимизированы для блоков выделения 4K. Примечание. Для лучшей производительности размер блока выделения должен быть кратным размеру сектора. Если том имеет оболочку HFS, размер блока размещения оболочки и начало блока выделения также должны быть кратны размеру сектора, чтобы обеспечить наилучшую производительность.

В общем, то, что Microsoft называет "кластерами" в FAT и NTFS, Apple называет "блоками распределения" в HFS+. Это отвечает на ваш второй вопрос: Да, HFS+ - это пример файловой системы, которая использует как экстенты, так и кластеры блоков выделения. И в этом отношении NTFS также использует экстенты и кластеры.

HFS+ отслеживает, какие блоки выделения принадлежат разветвлению, поддерживая список экстентов разветвления. Экстент - это непрерывный диапазон блоков выделения, выделенных некоторому разветвлению, представленный парой чисел: номером первого блока выделения и количеством блоков выделения. Для пользовательского файла первые восемь экстентов каждой ветки сохраняются в файле каталога тома. Любые дополнительные экстенты хранятся в файле переполнения экстентов, который также организован как B-дерево.

Таким образом, в HFS+ экстент - это непрерывный прогон блоков выделения, используемых для хранения файла * или части файла. Если файл фрагментирован, он использует один экстент на фрагмент. Из того, что я могу сказать, это соответствует тому, как обсуждения внутренних компонентов NTFS также используют термин "экстенты".

* file: Технически, я должен был сказать здесь "форк", но так как никто больше не использует вилки ресурсов, тот факт, что HFS+ поддерживает отдельные вилки "данных" и "ресурсов" для каждого файла, является в основном просто историческим анахронизмом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .