Así es como resolví mi problema.
Primero deshice cambiar el UUID en mi archivo VDI base usando el script de jordoncm
Luego intenté simplemente cambiar las rutas en el archivo vbox para que coincida con la nueva ubicación. Eso no funcionó ya que aparecieron varios errores diferentes y ni siquiera pude agregar la VM usando el archivo vbox.
Entonces encontré este artículo de blog de Peter Porter que sugirió:
Como cada .vdi contiene solo aquellos sectores modificados desde el último .vdi, copiar los .vdi en orden cronológico debería proporcionarnos un .vdi que contenga una copia completa de todas las instantáneas anteriores.
...
Use el comando "VBoxManage clonehd" para crear un nuevo archivo .vdi basado en su original, luego agregue en cada archivo posterior usando el argumento "–existente" para simplemente agregar los datos al .vdi existente que está creando. La siguiente lista de comandos se basa en mi ejemplo anterior:
VBoxManage clonehd Machine.vdi Machine-full.vdi
VBoxManage clonehd Instantáneas {UUID1} .vdi Machine-full.vdi
VBoxManage clonehd Instantáneas {UUID2} .vdi Machine-full.vdi
VBoxManage clonehd Instantáneas {UUID3} .vdi Machine-full.vdi
VBoxManage clonehd Instantáneas {UUID4} .vdi Machine-full.vdi
Esto le dará un archivo "Machine-full.vdi" que representa el estado completo de su máquina en el estado activo sin ninguna relación con los archivos .vdi primarios. Ahora puede usar este archivo "Machine-full.vdi" en una nueva máquina virtual o editar su VM existente, eliminando el archivo .vdi anterior y agregando este .vdi.
Con un poco de ajustes que parecían funcionar para mí:
Este es el disco duro y sus instantáneas:
<HardDisk uuid="{ed1428ca-76be-440a-894b-e666b50f5c86}" location="H:/vm/ft.vdi" format="VDI" type="Normal">
<HardDisk uuid="{8d8be78f-6648-4503-bee3-8810cb853a99}" location="Snapshots/{8d8be78f-6648-4503-bee3-8810cb853a99}.vdi" format="VDI">
<HardDisk uuid="{cce0ee4f-5052-4be7-81ff-47ea08202716}" location="Snapshots/{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" format="VDI">
<HardDisk uuid="{c297d4b9-972d-4b07-a839-5d76ee8d0387}" location="Snapshots/{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" format="VDI">
<HardDisk uuid="{8e9ca914-648f-464c-b515-2606c644d7f0}" location="Snapshots/{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" format="VDI"/>
</HardDisk>
</HardDisk>
</HardDisk>
</HardDisk>
Estos son los comandos que ejecuté (lo siento, algunos de ellos están cortados en sus ventanas ...):
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd N:\vm\ft.vdi N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78f-6648-4503
VBoxManage.exe: error: Parent medium with UUID {ed1428ca-76be-440a-894b-e666b50f5c86} of the medium 'N:\vm\Vi
03-bee3-8810cb853a99}.vdi' is not found in the media registry ('C:\Users\ <user>/.VirtualBox\VirtualBox.xml')
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component Medium, interface IMedium, callee IUnknow
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pM
xManageDisk.cpp
Crap parece que necesito agregar una entrada en VirtualBox.xml en MediaRegistry-> HardDisks, pero tengo que asegurarme de agregarle cada instantánea en orden cronológico después de cada copia. Entonces es así:
Copy VM
Add entry to VirtualBox.xml
Copy VM ...
Y el resto de lo que hice en caso de que ayude a alguien más:
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78
_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
Y luego simplemente creé una nueva VM usando ft_full.vdi como base. Coincidió con el resto de la configuración en el panel de configuración de GUI.
Acabo de pasar por este dolor de cabeza y hay una solución aparentemente estúpida. Lástima que me llevó un día completo llegar aquí.
Si observa los comandos internos de VBoxManage.exe dumphdinfo , puede ver que cada VDI tiene información sobre su padre. Entonces, lo que hice fue crear una máquina en blanco y agregar Parent HD "roto" como unidad secundaria. Eso lo colocó en Media Manager.
Luego, agregué un controlador SATA a la VM en blanco y agregué la instantánea de la capa 3. Haga clic en Aceptar. Edite nuevamente y agregue la instantánea de la capa 2, haga clic en Aceptar. Edite, agregue la captura instantánea de la capa 1.
Esto los convierte en unidades individuales dentro de la VM, pero dentro de Media Manager están todos unidos entre sí.
El último paso es simplemente eliminar la máquina virtual del banco y agregar su máquina virtual anterior. Hecho ... y sí, es así de estúpido / simple.
fuente
El antiguo nombre de ruta (en la
H:
unidad) simplemente puede especificarse en el.vbox
archivo de la VM, que es solo un archivo XML. Si es así, puede guardar una copia de ese archivo, editar el nombre de ruta para que sea el nuevo nombre de ruta (el que está en laN:
unidad) y ver si soluciona el problema.fuente
A differencing image of snapshot {xxx} could not be found. Could not find an open hard disk with UUID {yyy}