Получи скидку или подарок!

Алгоритм восстановления данных файловой системы HFS+

В этой статье мы разберем структуру файловой системы HFS+, какие изменения она получила в сравнении с ранней ее версией HFS. Рассмотрим алгоритмы восстановления данных на диске с файловой системой HFS+.

Алгоритм восстановления данных файловой системы HFS+

Содержание:

Преимущества и отличия HFS+

Главный отличием HFS+ является то что она использует 32-битную архитектуру вместо 16-битной как в HFS. Старая адресация являлась серьёзным ограничением, не позволявшим работать с томами объёмом более 65 536 блоков. При объёме диска в 1 ГБ размер кластера (блока) составлял 16 КБ — даже файл из 1 байта занимал все 16 КБ.

В HFS+ так же, как и в предыдущей системе используется, так называемое, B-дерево для хранения большей части метаданных.

Том в HFS+ поделён на секторы (в HFS они назывались логическими блоками) равные 512 байтам. Один или более секторов составляют кластер, общее число кластеров зависит от объёма диска. 32-битная адресация позволяет получить доступ к более 4 294 967 296 кластерам против старых 65 536. В сравнении эти две системы имеют:

  • разную длину имени файла: В HFS:31, в HFS+: 255;
  • кодировку имен файлов: HFS: Mac Roman, HFS+: Unicode;
  • размер узла каталога: HFS: 512 байт, HFS+: 4 Kбайт;
  • и увеличен максимальный размер файла: HFS: 2^31, HFS+: 2^63.

Архитектура HFS Plus

Пространство в HFS Plus разделено на секторы (так называемые логические блоки), которые обычно имеют размер 512 байт. Эти секторы группируются в блоки распределения (аналог кластеров в Windows), которые могут содержать один или несколько секторов. Количество блоков распределения зависит от общего размера тома. В HFS+ значение для блоков распределения равно 32-м битам. Файловая система имеет Big Endian кодировку.

HFS Plus

Для управления размещением данных на диске HFS+ хранит на нем служебную информацию —файлы метаданных. Среди них наиболее важны для работы файловой системы и наиболее интересны при поиске пропавших данных следующие элементы:

  • Заголовок раздела (Volume Header). Имеет структуру таблицы, использует расширение записей (Extents);
  • Карта занятого пространства диска (Allocation File). Структура – битовая карта, использует расширение записей (Extents);
  • Каталог файлов (Catalog File). Имеет структуру Би-дерева (B-Tree), использует расширение записей (Extents);
  • Дополнительные расширение записей (Extents Overflow File). Имеет структуру Би-дерева (B-Tree);
  • Список сбойных секторов (Bad block file). Имеет структуру Би-дерева (B-Tree);
  • Файл запуска (StartUp file). Фиксированный размер;
  • Журнал (Journal). Область диска с фиксированным размером и позицией.

Система содержит еще множество структур, но для восстановления данных эти имеют преобладающее значение. Для того, чтобы продолжить разбор структуры нам необходимо разобраться с базовыми понятиями – Би-дерево и расширение записей.

Что такое Би-дерево?

Для хранения части информации HFS+ используются Би-деревья. Они необходимы для записи произвольных массивов информации (к примеру, 100 MB) в блоки с фиксированным размером (к примеру, 4 KB). В этом случае в первый блок записывается не сама информация, а ссылки на последующие блоки, в которых так же могут хранится ссылки на следующий уровень блоков или непосредственно необходимая информация. Элементы дерева, которые хранят ссылки называются узлами, а элементы 0 уровня с данными называются листьями.

Би-дерево

Что такое расширение записей и Extent Overflow File?

Для сохранения информации о занимаемых файлом секторах, HFS+ может использовать от 0 до 8 расширенных записей. Каждая запись хранит ссылку на первый сектор с данными и количество последовательно идущих кластеров, используемых под данные. Если файл сильно фрагментирован и 8 записей не хватает для описания всех частей, то оставшиеся фрагменты записываются в файл с дополнительными расширениями – Extent Overflow File.

Volume header

Заголовок тома всегда находиться во втором секторе от начала диска и содержит общую информацию о томе. Это размер блоков размещения, время создания тома и адреса размещения других структур файловой системы: Catalog File, Extent Overflow File, Allocation File, Journal и пр. Во втором секторе от конца диска всегда находится резервная копия заголовка.

Volume headerVolume headerVolume header

Allocation file

Файл содержит информацию о свободных и занятых блоках размещения. Каждый блок представлен одним битом, значение «1» соответствует занятому блоку, а «0» — свободному. Иногда такую структуру называют битовая карта (bitmap). Файл может иметь произвольный размер и не обязательно размещается в смежных блоках. Информация о фрагментах файла описана в заголовке тома.

Allocation file

Catalog file

Файл хранит большую часть данных о размещении файлов и папок на диске. Это довольно большая структура представляет собой B-дерево.

Этот файл в HFS Plus очень похож на файл каталога HFS. Основное различие – это размер поля. Они стали больше и теперь вмещают больше информации. К примеру, это позволяет использовать более длинные имена Unicode файлов 255-символов. Размер записи в HFS составляет 512 байт, а в HFS Plus равен 4 КБ для Mac OS и 8 КБ для OS X. Поля в HFS имеют фиксированный размер, а в HFS Plus размер может варьироваться в зависимости от фактического размера данных.

Большинство полей хранят небольшие атрибуты, которые могут разместиться внутри 4 КБ. Для атрибутов большего размера используются дополнительны расширения (максимум 8, если необходимо больше расширений они сохраняются в Extent Overflow File). В расширениях хранятся ссылки на следующие поля, в которых лежит информации атрибута большого размера.

StartUp file

Файл предназначен для операционных систем, которые не поддерживают HFS или HFS Plus. Это похоже на загрузочные блоки из тома HFS.

Bad blocks

Файл содержит информацию о всех перемещенных (сбойных) секторах.

Journal

Журнал является не файлом, а фиксированной областью данных на диске. Ссылка на первый сектор и размер области хранится в заголовке раздела. Прежде чем записать любые изменения на диск, HFS+ записывает их в журнал, а затем в системные файлы. В случае отключения электроэнергии в момент записи можно провести восстановления файловой системы.

Необходимо учесть, что размер журнала в HFS+ ограничен и периодически его содержимое перезаписывается. Журнал загрузочного тома Mac-mini обычно перезаписывается за 5-10 минут, а MacBook за 30 минут. Если активирована Time Machine, то время сокращается до 20 секунд.

Journal

Восстановление данных в Time Machine

Начиная с Mac OS X Leopard, в состав системы входит Time Machine. Эта утилита создает резервные копии файлов, записывая все изменения, происходящие с файловой системой. Перечисленные действия позволяют пользователю восстановить всю систему, несколько файлов или один отдельный файл в том виде, в котором он находился в определенный момент времени.

Для работы Time Machine необходимо выделить отдельный диск. Apple выпускает специальное устройство Apple Time Capsule, которое используется как сетевой диск специально для резервных копий Time Machine. Time Machine может использоваться и с любым USB или eSata-диском. При первом запуске Time Machine создает папку на указанном резервном диске, содержащую все данные.

Потом Time Machine бдует копировать только измененные файлы. В общем, если для диска используется Time Machine, то восстановление утраченных данных не представляет особых проблем.

Time Machine

Алгоритм восстановления HFS+

Восстановление информации с файловой системы HFS+ гораздо сложнее нежели с других систем. Трудности появляются из-за того, что HFS+ используются B-деревья для хранения метаданных о размещении файлов. После того как какой-то файл удален, B-дерево тут же обновляется, и информация о размещении удаленного файла теряется.

Наша программа позволяет увидеть устройство и структуру файловой системы HFS+ в Windows без дополнительного софта и драйверов.

Алгоритм утилиты при полном анализе позволяет исключить эти звенья в процессе поиска утерянных данных, и восстановить нужную нам информацию.

При быстром анализе программа читает заголовок тома (Volume header) или его резервную копию. С заголовка получает адрес файла каталога (Catalog file) и место размещения журнала на диске. Если блоки, принадлежащие удаленным файлам еще не перезаписаны она читает их и восстанавливает данные.

Если блоки удаленного файла еще не были перезаписаны, то этот способ позволит полностью восстановить файл. Даже если блоки файла перезаписаны, данные файла могут еще остаться в журнале., либо файл будет восстановлен частично.

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

Алгоритм восстановления HFS+

Заключение

В целом можно сказать что реализация файловой системы HFS+ является уже устаревшей на данный момент. Эта система была оптимизирована еще со старой HFS. На смену HFS+ уже пришла новая файловая система Apple File System.

HFS+ значительно уступает в скорости, безопасности и надежности APFS поэтому для нее очень актуальный вопрос восстановления данных. Информация очень редко исчезает бесследно. Хорошо зная работу файловой системы, можно восстановить даже то, что считалось безвозвратно потерянным.

Рекомендуем для вас