2

Я пытаюсь воссоздать метаданные файловой системы на виртуальном диске. Я могу сохранить эти метаданные с помощью e2image, и на странице справки e2image говорится, что я могу использовать e2image -I для восстановления файловой системы. К сожалению, страница руководства не предоставляет никакой информации о том, как использовать этот аргумент. Я пробовал следующее (результаты команды с отступом для удобства чтения):

msk $ e2image /dev/nbd1 -I test.qcow2
  e2image 1.42.5 (29-Jul-2012)
  e2image: Wrong magic number for Ext2 Image Header while trying to open test.qcow2
msk $ sudo e2image /dev/nbd1 -I test.qcow2
  e2image 1.42.5 (29-Jul-2012)
  e2image: Wrong magic number for Ext2 Image Header while trying to open test.qcow2
msk $ sudo e2image test.qcow2 -I /dev/nbd1
  e2image 1.42.5 (29-Jul-2012)
  e2image: Wrong magic number for Ext2 Image Header while trying to open /dev/nbd1

Моя файловая система на самом деле ext4, однако на странице руководства написано следующее:

The e2image program will save critical ext2, ext3, or ext4

Я использовал следующую команду для создания изображения:

sudo e2image -Q /dev/mapper/nbd0p1 test.qcow2

2 ответа2

2

e2image поддерживает три разных формата; по умолчанию он создает "обычный" пользовательский формат файла e2image. С -r он создает большой разреженный файл с метаданными с правильными смещениями, а с -Q - файл формата qcow2. (Опция -Q была добавлена несколько недавно, чтобы сделать большие образы файловой системы более переносимыми).

Хотя это не совсем понятно из man-страницы, опция -I действительна только для "нормального" формата файла e2image, то есть для изображения, созданного без -r или -Q.

Поскольку у вас есть образ qcow2, вы можете использовать qemu-img, чтобы записать его обратно на блочное устройство:

# qemu-img convert -O raw test.qcow2 /dev/nbd1

Однако вы должны знать, что изображение, сгенерированное в e2image, содержит только метаданные, то есть вообще не содержит никаких файловых данных. Вы будете записывать метаданные, которые указывают на различные блоки в /dev /nbd1 для данных файла, и поэтому файлы будут содержать любые данные, которые ранее были в этих блоках в /dev /nbd1.

Итак, я рассказал вам, как это сделать, но, пожалуйста, убедитесь, что это именно то, что вы хотите сделать!

2

Можно восстановить образ QCOW2, созданный с помощью e2image -Q с помощью e2image -r . Например:

# e2image -Q /dev/sdb1 image.qcow2
# e2image -r image.qcow2 /dev/sdb2

Обратите внимание, что я проверил это с версией 1.42.12 e2fsprogs.

Начиная с >= 1.42.9 , e2image также поддерживает флаг -a который позволяет вам включать данные файловой системы в дополнение к метаданным:

# e2image -Qa /dev/sdb1 image-full.qcow2
# e2image -r image-full.qcow2 /dev/sdb2

Я проверил, что в этом случае e2image -r записывает только выделенные блоки обратно в цель, тогда как qemu-img convert кажется, записывает всю логическую файловую систему. Это может сэкономить много ввода-вывода для частично используемых файловых систем.

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