Вопрос или проблема
Работаю на Linux Mint 18.1, VirtualBox 5.0.40_Ubuntu.
У меня есть файл VDI от виртуальной машины VirtualBox:
~/VirtualBox\ VMs/Win10x64/Win10x64.vdi
Я сделал снимок:
~/VirtualBox\ VMs/Win10x64/Snapshots/{GUID}.vdi
Я хочу смонтировать жесткий диск клиента из снимка.
Я могу успешно смонтировать базовый VDI с помощью qemu-nbd
:
qemu-nbd -c /dev/nbd0 ~/VirtualBox\ VMs/Win10x64/Win10x64.vdi
Но если я попробую с файлом снимка:
qemu-nbd -c /dev/nbd0 ~/VirtualBox\ VMs/Win10x64/Snapshots/{GUID}.vdi
это не удается с сообщением:
недопустимое изображение VDI (UUID ссылки не равен NULL)
Я заметил параметр --snapshot
для qemu-nbd
, но это, похоже, не то, что нужно.
Как я могу смонтировать HDD таким, каким он есть в снимке?
Правка #1
Я также пробовал vdfuse
, но опять же, не кажется, что есть способ “применить” диск с разностями.
Возможно, единственный вариант – открыть VirtualBox, “удалить” снимок – чтобы он объединился с образом vdi, или что-то в этом роде…
Я использую трюк, чтобы выполнить задачу.
Создайте новую виртуальную машину в VirtualBox с любой ОС, которую вы хотите (LiveCD тоже подходит).
Присоедините файл vdi к виртуальной машине в настройках хранения. Вы можете выбрать любую версию в снимках. Хотя виден только UUID диска, вы можете выбрать правильный согласно древовидной структуре.
Загрузите новую виртуальную машину и вы сможете смонтировать раздел как блочное устройство.
Ответ или решение
Как смонтировать VDI с снимком в VirtualBox на Linux Mint 18.1
Если вы работаете с VirtualBox на Linux Mint 18.1 и хотите смонтировать виртуальный диск (VDI) с использованием снимка (snapshot), необходимо учитывать несколько важных моментов. Прежде всего, важно отметить, что формат VDI поддерживает так называемые "различия" между основным диском и его снимками. Попробуем разобраться, как это сделать пошагово.
Шаг 1: Подготовка среды
Перед началом убедитесь, что у вас установлены все необходимые инструменты. Для работы с VDI можно использовать qemu-nbd
и vdfuse
. Вы уже упомянули, что используете qemu-nbd
, но получите ошибку из-за особенностей структуры VDI, которые содержат ссылки на родительские образцы.
Шаг 2: Создание временной виртуальной машины
Наиболее простым и безопасным способом для доступа к содержимому снимка VDI является создание временной виртуальной машины. Давайте рассмотрим, как это сделать:
-
Создайте новую виртуальную машину в VirtualBox:
- Откройте VirtualBox и нажмите "Создать".
- Установите любое имя и выберите любую версию операционной системы, которая вам известна (можно использовать LiveCD).
-
Настройка виртуального жёсткого диска:
- На этапе "Жёсткий диск" выберите "Использовать существующий жёсткий диск" и укажите путь к вашему базовому VDI файлу:
~/VirtualBox VMs/Win10x64/Win10x64.vdi
- На этапе "Жёсткий диск" выберите "Использовать существующий жёсткий диск" и укажите путь к вашему базовому VDI файлу:
-
Настройка контроллера дисков:
- Зайдите в настройки вашей виртуальной машины и перейдите в раздел "Носители".
- Убедитесь, что основной VDI файл подключен к контроллеру (обычно это SATA).
- В поле для снимков выберите нужный вам снимок, который вы хотите применить.
Шаг 3: Запуск виртуальной машины
Теперь вам нужно запустить созданную виртуальную машину:
-
Запустите виртуальную машину:
- Нажмите кнопку "Запустить" для вашей новой ВМ. Если вы выбрали LiveCD, вы сможете загрузиться в среду, где доступны инструменты для работы с дисками.
-
Доступ к разделам:
- После успешной загрузки вашей ВМ, откройте терминал и используйте команды для поиска и монтирования нужного диска. Например, вы можете использовать
lsblk
, чтобы просмотреть доступные устройства, иmount
, чтобы смонтировать нужный вам раздел:sudo mount /dev/sdXn /mnt
- Замените
sdXn
на правильный идентификатор вашего устройства.
- После успешной загрузки вашей ВМ, откройте терминал и используйте команды для поиска и монтирования нужного диска. Например, вы можете использовать
Альтернативный способ: Использование vdfuse
Если вы предпочитаете использовать vdfuse
:
-
Убедитесь, что у вас установлен пакет
libguestfs-tools
:sudo apt-get install libguestfs-tools
-
Используйте команду
vdfuse
для монтирования VDI:vdfuse -a ~/VirtualBox\ VMs/Win10x64/Snapshots/{GUID}.vdi -m /dev/nbd0
Обратите внимание:
vdfuse
также может не полностью поддерживать работу с снимками, поэтому этот метод может не сработать, если у вас сложная структура снимков.
Заключение
Каждый подход имеет свои плюсы и минусы. Создание временной виртуальной машины является наиболее надежным способом доступа к данным из снимка VDI, так как этот метод гарантирует, что все зависимости будут учитываться, и вы сможете получить доступ к данным без риска повреждения основного образа. Использование vdfuse
и qemu-nbd
может быть полезно, но их ограничения могут вызвать сложности при работе с дифференцированными образами.
Важно помнить, что работа с виртуальными дисками требует осторожности, чтобы избежать случайной потери данных. Перед выполнением любых действий во избежание рисков рекомендуется сделать резервную копию ваших VDI файлов.