При попытке добавить скопированный или перемещенный файл (*.vhd) образа диска виртуальной машины Oracle VirtualBox, вы получите ошибку:
VirtualBox - Error Failed to open the hard disk image file FilePath.vhd. Cannot register the hard disk FilePath.vhd <GUID> because a hard disk DifferentFilePath.vhd with UUID <GUID> already exists. Result Code: E_INVALIDARG (0x80070057) Component: VirtualBoxWrap Interface:IVirtualBox {GUID} Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
Проблема связана с тем, что UUID данного виртуального диска является не уникальным и не был изменен при переносе/копировании vhd/vdi файла.
Этот UUID уже существует в VirtualBox
Изменить UUID виртуального диска можно с помощью утилиты vboxmanage.
В Ubuntu Linux нужно перейти в каталог с файлом образа диска виртуальной машины:
# cd /mnt/path/vms/
Вывести список всех UUID дисков, которые доступны в VirtualBox:
# vboxmanage list hdds
Получить информацию о виртуальном диске (в том числе выведет текущий UUID):
# vboxmanage showhdinfo yourfile.vdi
Сгенерируйте новый UUID:
# VBoxManage internalcommands sethduuid yourfile.vdi
В Windows нужно открыть командную строку с правами администратора и выполнить команду:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid "E:\VirtualBoxVMs\VMname\yourfile.vdi"
Должна появится надпись
UUID changed to: NewUUID
Также вы можете удалить старый виртуальный диск в Virtual Media Manager. Перейдите в VirtuaBox -> File -> Virtual Media Manager (или нажмите CTRL+D).
Выберите файл виртуального диск и нажмите Release. После этого можно удалить запись о старом виртуальном диске из VirtualBox. Нажмите кнопку Remove.
# vboxmanage closemedium disk <uuid/полный путь>
После этого вы сможете подключить новый диск к виртуальной машине (откройте настройки ВМ -> Storage –> Add Attachment Add Hard Disk -> Choose existing disk).
Вы можете вручную удалить старый виртуальный диск из конфигурационного файла ВМ. Проверьте, что VirtualBox Manager не запущен и отредактируйте файлы \.VirtualBox\VirtualBox.xml и \.VirtualBox\VirtualBox.xml-prev с помощью текстового редактора.
Удалите секцию <HardDisks>…</HardDisks> для диска, который вы хотите удалить:
<HardDisks> <HardDisk uuid="{xxxxxxxxxxxxxxxxxxxxxxxxxxxx}" location="~/VirtualBox VMs/VM1/box-disk001.vmdk" format="VMDK" type="Normal"/> <HardDisk uuid="{yyyyyyyyyyyyyyyyyyyyyyyyyyy}" location="~/VirtualBox VMs/VM2/box-disk001.vmdk" format="VMDK" type="Normal"/>
Затем запустите VirtualBox Manger.
Клонирование/перемещение файлов виртуальных дисков в VirtualBox
Ошибка VBoxManage.exe:: Cannot register the hard disk because a hard disk with UUID already exists появится, если вы вручную переместили файл диска на другой диск или папку.
# vboxmanage closemedium disk <uuid/полный путь>
Вместо ручного копирования/вставки файлов виртуальных дисков VirtualBox (VDI, VHD) средствами операционной системы, вы должны перемещать/копировать диски через Virtual Media Manager
- Запустите Virtual Media Manager (Ctrl+D);
- Выберите виртуальный диск;
- Нажмите кнопку Copy или Move (в зависимости от операции, которую вы хотите выполнить) и укажите новый путь к виртуальному диску;
- Если вы переместили диск, это автоматически изменит путь к нему в настройках виртуальной машины;
- Если вы создали копию диска, вы можете добавить его к виртуальной машине. Выберите Add hard disk -> Choose existing disk -> Укажите путь к диску.
$ VBoxManage clonehd /home/user1/VMs/vm1/vm1.vdi /home/user1/VMs/vm1/vmnew.vdi --variant Standard
При этом новому диск сразу будет назначен новый UUID. Обратите внимание, что VBoxManage создает полный клон исходного диска. Это значит он будет занимать на диске столько же места, что и исходный файл. Если вы хотите, чтобы файл диска занимал на хосте столько место, сколько фактически заполнено в виртуальной файловой системе, используйте утилиту Disk2vhd от Microsoft.