Как устроен Apple Fusion Drive

Fusion Drive — это сплав SSD и HDD с целью получить хранилище, которое быстрое как SSD и вместительное как HDD. В основе лежит простая идея — часто используемые данные хранить на SSD, а то что используется реже — хранить на вместительном HDD. Давайте разберемся как эта технология работает изнутри, где и как хранятся данные и как организованы метаданные.

Fusion Drive — это логический диск

Fusion Drive занимает промежуточное место между реальными накопителями и файловой системой. Грубо говоря, файловая система не знает, что работает с каким-то сложным и ненастоящим устройством. Т.е. Fusion Drive — это логический диск, сформированный особым образом из физических дисков.

Вот основные особенности распределения данных между физическими дисками:

  • участником Fusion Drive является не весь диск, а раздел GPT на диске
  • на физические диски транслируется только те участки Fusion Drive, куда была запись (как это делается при “тонком выделении”)
  • данные распределяются цепочками блоков. Длина цепочки произвольная. Размер блока обычно равен 128КБ
  • данные, которые хранятся на SSD не дублируются на HDD
  • в первую очередь заполняется SSD, как самый быстрый диск
  • данные, которые используются чаще всего,хранятся на SSD
  • количество цепочек, из которых состоит логический диск, может достигать нескольких миллионов

Fusion Drive — закрытая технология. Материал этой статьи основан на нашем опыте восстановления с Fusion Drive. Возможно какие-то особенности оказались вне нашего поля зрения.

Fusion Drive, File Vault, Core Storage

Fusion Drive — часть технологии Apple CoreStorage (ACS), менеджера логических томов Apple. Логический том не всегда использует один HDD и один SSD. Система позволяет собрать хранилище из, например, 3х HDD. При этом учитывается какой из них быстрее. Далее для удобства мы будем рассматривать вариант SSD+HDD, как самый популярный, но смысл и методы работы от этого почти не меняются.

Другая часть этой технологии — шифрованные тома File Vault, поэтому там используются такие же метаданные. В чем же разница?

  • File Vault
    • один физический диск
    • один логический диск
    • логический диск транслируется в физический одной цепочкой
    • данные шифруются
  • Fusion Drive
    • несколько физических дисков, чаще всего SSD и HDD
    • в трансляции до нескольких миллионов цепочек
    • данные не шифруются

Структура метаданных

Рассмотрим наиболее важные свойства метаданных Fusion Drive.

Диск

Так в Data Extractor выглядят SSD и HDD из Fusion Drive: три раздела, самый большой имеет тип Core Storage

Обычно на диске есть 3 раздела: 2 небольших служебных в начале и в конце диска и один в середине. Этот раздел обычно занимает 99% от объема диска, имеет специальный тип, указывающий на принадлежность к Apple CoreStorage и почти всегда начинается с сектора 409 640. Такой раздел мы также будем называть физическим диском ACS, физическим томом ACS или участником Fusion Drive.

Разделов на диске может быть больше чем 3. И более чем один раздел с одного диска может входить во Fusion Drive.

Раздел

Упрощенная схема организации метаданных

Крупным планом метаданные состоят из 3х областей:

  1. Volume Header (VH) — заголовок тома, размещение Disk Label
  2. Disk Label (DL) — размещение Encrypted blocks
  3. Encrypted blocks — шифрованные метаданные, среди которых есть информация о трансляции

У всех этих структур есть копии. А Disk Label хоть и занимает относительно много места, но из интересного там только 2 структуры: Disk Label Header (DLH) и Volume Descriptor (VD).

Более подробно структура изображена ниже. Рассмотрим подробно метаданные ACS.

Подробная схема организации метаданных

Черновое восстановление нашло некоторые структуры Apple CoreStorage в начале и в конце диска

ACS Volume Header (VH)

  • Расположен в нулевом и в последнем секторе раздела (не перепутайте с HFS+ Volume Header)
  • Хранит GUID участника и GUID логической группы, к которой он относится
  • Хранит размещение 4х копий Disk Label (DL)
  • Хранит ключи шифрования для Encrypted blocks (зашифрованной области с блоками метаданных), причем ключи подходят только к метаданным расположенным этом же участнике
  • Хранит размер физического тома

ACS Volume Header в HEX редакторе

ACS Disk Label Header (DLH)

  • Расположен в 0м секторе области Disk Label (DH)
  • Обычно можно встретить 2 области ближе к началу раздела и 2 области ближе к концу
  • Хранит смещение к Volume Descriptor (VD)

ACS Disk Label Header в HEX редакторе

ACS Volume Descriptor (VD)

  • Хранит размещение шифрованных областей с метаданными (Encrypted blocks). Обычно таких областей 2, хотя встречаются задачи с 4 регионами.
  • Содержит XML текст с различной информацией о логической группе.
  • В XML хранится GUID логической группы (должен совпадать со значением в Volume Header)
  • В XML хранится имя логической группы
  • В XML хранится список и порядок физических томов, которые входят в группу

ACS Volume Descriptor в HEX редакторе

Encrypted blocks

  • Зашифрованная область с самыми различными метаданными. В том числе с метаданными о трансляции
  • Размер области может увеличиваться. В реальных задачах он может достигать 4ГБ для одной копии.
  • Наибольший интерес представляют блоки, которые позволяют восстановить трансляцию данных с логического диска на физические диски
  • На разных участниках метаданные шифруются разными ключами, их содержимое также не полностью одинаково.
  • Чтобы восстановить трансляцию достаточно одной копии с одного из участников

Начало области Encrypted blocks в HEX редакторе. Никакой структуры не просматривается, т.к. данные шифрованы.

Fusion Drive и восстановление данных

Давайте попробуем проанализировать всю эту структуру с точки зрения восстановления:

  • собрать логический образ без разбора метаданных практически невозможно — слишком много цепочек (до нескольких миллионов)
  • без правильно собранного логического образа возможности восстановления крайне ограничены из-за сильной фрагментации данных
  • часть блоков хранится только на SSD, а другая часть — только на HDD, поэтому без всех участников полноценно восстановить данные не получится
  • обычно на SSD хранятся почти все метаданные HFS+, поэтому без него не получится построить дерево каталогов и файлов
  • чтобы построить логический диск необходимо успешно расшифровать хотя бы одну копию области encrypted blocks хотя бы на одном из участников
  • ключи для расшифровки есть только внутри Volume Header и подходят только для одного участника
  • не обязательно, чтобы все сектора из encrypted blocks были прочитаны, т.к. для построения образа нужны не все блоки из этой области.

Заключение

В этой статье мы рассмотрели теоретические особенности Fusion Drive. Эти знания помогут сэкономить много времени и сил еще на этапе первичной диагностики. В следующей статье мы рассмотрим практические особенности восстановления данных с Fusion Drive.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 голосов, средний: 5,00)
Загрузка...

Об авторе Александр Леоненко

Разработчик Data Extractor и Data Extractor RAID Edition
Запись опубликована в рубрике Data Extractor, Data Extractor RAID Edition с метками , , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *