Восстановление дисков и снимков KVM/QEMU с LUKS2 RAID 6
В этой статье рассматривается восстановление виртуальных дисков и снимков KVM/QEMU из системы хранения, построенной на LUKS2 и RAID 6. Основное внимание уделяется определению правильной последовательности восстановления, безопасной работе с образами физических дисков, реконструкции массива RAID, разблокировке зашифрованного контейнера, поиску образов QCOW2/RAW, анализу цепочки backing и восстановлению доступа к данным виртуальной машины без изменения исходного носителя.

- ШАГ 1. Создание виртуальной машины KVM/QEMU
- ШАГ 2. Создание снимка и удаление раздела LUKS2
- ШАГ 3. Подключение дисков и начало восстановления
- ШАГ 4. Автоматическое определение разделов MD RAID 6 и LUKS2
- ШАГ 5. Анализ раздела LUKS2 и восстановление файлов виртуальной машины
- ШАГ 6. Монтирование виртуальных дисков и снимков
- ШАГ 7. Сравнение состояний дисков и восстановление файлов из снимка
- ШАГ 8. Поиск данных по файловым системам виртуальных дисков
- Итоги
- Часто задаваемые вопросы
- Комментарии
В современных серверных средах виртуализация на базе KVM/QEMU часто используется совместно с программными массивами RAID и шифрованием дисков. Такая архитектура сочетает производительность, отказоустойчивость и защиту данных, но при этом существенно усложняет восстановление, если повреждены накопители, метаданные RAID, контейнер LUKS2, файловая система или цепочка снимков виртуальной машины.
Особенно сложными являются случаи, когда виртуальные диски KVM/QEMU в форматах QCOW2, RAW или других совместимых форматах хранятся внутри зашифрованного тома LUKS2, построенного поверх RAID 6. В такой конфигурации доступ к данным зависит сразу от нескольких уровней: физических дисков, структуры массива RAID, целостности метаданных LUKS2, файловой системы и внутренней структуры виртуальных дисков.
Дополнительную сложность создают снимки QEMU/KVM. Они могут формировать цепочку зависимых файлов QCOW2, где каждый последующий образ содержит только изменившиеся блоки и ссылается на базовый диск или предыдущий снимок. Потеря одного элемента в такой цепочке, повреждение backing file или неверное определение последовательности могут сделать запуск виртуальной машины невозможным, даже если большая часть данных по-прежнему физически присутствует на дисках.
Как восстановить удалённую базу MySQL с RAID 6 + LUKS2 (Ubuntu)
ШАГ 1. Создание виртуальной машины KVM/QEMU
Для тестирования мы установили Ubuntu Server 24.04 и использовали Cockpit для создания программного массива Linux MD RAID 6 из четырёх дисков.
На массиве RAID были созданы три раздела. Каждый из них был зашифрован с помощью LUKS2, а внутри зашифрованных контейнеров были созданы файловые системы Ext4. Третий раздел использовался для хранения виртуальной машины.

На сервере был запущен гипервизор KVM/QEMU. Через Cockpit мы создали отдельный пул хранения для виртуальной машины на третьем разделе — raid6-vm-images. Файлы виртуальной машины хранились в каталоге vm-images.
Для виртуальной машины был создан системный диск QCOW2 ёмкостью 32 гигабайта, а также два дополнительных диска: диск QCOW2 объёмом 2 гигабайта и диск IMG объёмом 1 гигабайт.


На системный диск была установлена Windows 10. Два дополнительных диска внутри Windows были отформатированы соответственно как NTFS и FAT32.

ШАГ 2. Создание снимка и удаление раздела LUKS2
Мы скопировали исходный набор файлов на системный диск и два дополнительных диска, затем создали внешний снимок. После этого мы добавили ещё одну папку с файлами и удалили часть из них.

После завершения тестовых изменений виртуальная машина была выключена. Затем папка vm-images, содержащая базовые образы дисков, файлы внешнего снимка и файл состояния памяти, была скопирована во второй раздел LUKS2 массива RAID.
Чтобы смоделировать потерю данных, мы использовали Cockpit для удаления этого раздела из таблицы разделов. В результате его область стала нераспределённой. Мы не форматировали её и не записывали на неё новые данные, чтобы сохранить возможность последующего восстановления.


ШАГ 3. Подключение дисков и начало восстановления
После удаления раздела мы выключили сервер и извлекли диски массива RAID. К компьютеру под управлением Windows 11 через USB-док-станцию были подключены только два из четырёх дисков.
Если после подключения Windows предложит инициализировать или отформатировать диски, обязательно нажмите Отмена. Не записывайте на них новые данные и не выполняйте проверку ошибок или операции восстановления, так как это может ухудшить результат восстановления.
С дисками можно работать и другими способами. Например, подключить их удалённо к программе через SSH или смонтировать ранее созданные образы, если вы не хотите работать непосредственно с исходными дисками.

ШАГ 4. Автоматическое определение разделов MD RAID 6 и LUKS2
Сразу после запуска Hetman RAID Recovery прочитала служебную информацию с двух подключённых дисков.

RAID 6 допускает отсутствие до двух дисков. Поскольку оба доступных диска были исправны, а служебная информация не была повреждена, программа автоматически реконструировала MD RAID 6. Два отсутствующих диска были отображены как Пустой диск, а массив получил статус Recoverable.

В свойствах указаны схема Left Synchronous P+Q, размер блока 512 КБ, а также позиции дисков, смещения и размеры.
Программа обнаружила на массиве три области с шифрованием LUKS2. Первый и третий разделы остались на месте, а удалённый второй отображается как нераспределённое пространство, помеченное LUKS.
ШАГ 5. Анализ раздела LUKS2 и восстановление файлов виртуальной машины
Дважды щёлкните нераспределённую область, помеченную LUKS. Программа предложит ввести пароль или выбрать файл ключа.

После разблокировки станет доступна файловая система Ext4. Далее выберите режим анализа.
Рекомендуем начать с Быстрого сканирования. Если быстрое сканирование не найдёт требуемые данные, запустите Полный анализ и укажите файловую систему Ext2/3/4.

В нашем случае быстрого сканирования оказалось достаточно. Программа восстановила структуру удалённого раздела и нашла папку vm-images, в которой находились системный диск и дополнительные виртуальные диски, а также их файлы снимков.

Важно учитывать, что конфигурация виртуальной машины хранится отдельно от её дисков — обычно в каталоге /etc/libvirt/qemu. Если XML-файл конфигурации утрачен, данные с виртуальных дисков всё равно можно восстановить, но для повторного запуска ВМ потребуется заново создать конфигурацию машины.

Выберите папку, содержащую виртуальные диски и файлы снимков, и нажмите Восстановить.

Рекомендуем восстанавливать всю папку целиком, чтобы базовые образы и связанные с ними снимки оставались вместе.
Выберите для сохранения другой физический диск. Не восстанавливайте файлы обратно на исходный массив RAID, так как это может перезаписать данные, которые ещё можно восстановить.
ШАГ 6. Монтирование виртуальных дисков и снимков
Если вам нужен доступ к данным внутри виртуальных дисков или снимков, а также поиск и восстановление удалённых файлов, это можно сделать непосредственно в нашей программе.
Нажмите Подключить диск.

В окне Тип образа диска, в разделе Образы дисков виртуальной машины, выберите QEMU, поскольку в нашем тесте виртуальная машина и её диски были созданы на основе KVM/QEMU. Если образы были созданы в другой среде виртуализации, выберите соответствующий тип диска из списка. Затем нажмите Далее.

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

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

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

ШАГ 7. Сравнение состояний дисков и восстановление файлов из снимка
Чтобы сравнить образ базового диска и его снимок, необходимо проанализировать оба подключённых диска. Дважды щёлкните по каждому из них и сначала запустите Быстрое сканирование.
Если быстрое сканирование не найдёт требуемые данные, выполните Полный анализ. При полном анализе необходимо указать файловую систему, используемую внутри виртуального диска.
Базовый образ сохраняет предыдущее состояние файловой системы.

На диске, подключённом из снимка, видны более поздние изменения: добавленная папка и удалённые из неё файлы, которые программа помечает крестиком.

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

ШАГ 8. Поиск данных по файловым системам виртуальных дисков
Если требуемые образы виртуальных дисков не были найдены или их не удалось смонтировать, можно попробовать восстановить данные напрямую по файловым системам, используемым внутри этих дисков.
Для этого выберите разблокированный раздел RAID, запустите мастер восстановления и выберите Полный анализ.

При настройке анализа вместо файловой системы Ext4, которая фактически использовалась на этом разделе для хранения файлов виртуальных дисков, укажите файловые системы, расположенные непосредственно внутри самих виртуальных дисков. В нашем случае это FAT32 и NTFS, поэтому для поиска мы выбираем FAT и NTFS.

Этот метод наиболее эффективен для виртуальных дисков, у которых всё пространство было заранее предварительно выделено. В таком случае данные виртуального диска физически присутствуют внутри файла образа, и программа может найти и проанализировать файловую систему, хранящуюся в нём, даже если сам файл образа повреждён или утрачен.
Для thin-provisioned виртуальных дисков такой подход, как правило, не позволяет выполнить полное восстановление диска. В таких образах физически хранятся только те блоки, в которые уже были записаны данные, а неиспользуемое пространство заранее не выделяется. Поэтому без структуры самого образа отдельные блоки виртуального диска могут оказаться фрагментированными, и корректно восстановить всю файловую систему значительно сложнее.
После завершения анализа просмотрите найденные разделы и файлы.

Этот метод может помочь восстановить отдельные данные или даже файловую систему с предварительно выделенного диска, однако сам файл образа и его связи со снимками таким способом не восстанавливаются.
Итоги
В результате Hetman RAID Recovery автоматически собрала Linux MD RAID 6 из двух доступных дисков, нашла удалённый раздел LUKS2, разблокировала его и восстановила папку с образами дисков и снимками виртуальной машины.
После монтирования нам удалось сравнить состояние диска до и после создания снимка, найти требуемые данные и восстановить удалённые позже файлы. Важно хранить все связанные образы и снимки вместе, не изменять их имена и восстанавливать данные только на другой физический диск.







