Inilah cara saya memecahkan masalah saya.
Pertama saya membuka kancing perubahan UUID pada file VDI basis saya dengan menggunakan script oleh jordoncm
Kemudian saya mencoba mengubah path dalam file vbox agar sesuai dengan lokasi baru. Itu tidak berfungsi karena berbagai kesalahan yang berbeda muncul dan saya bahkan tidak dapat menambahkan VM menggunakan file vbox.
Jadi saya menemukan artikel blog ini oleh Peter Porter yang menyarankan:
karena masing-masing .vdi hanya berisi sektor-sektor yang diubah dari .vdi terakhir, menyalin .vdi secara kronologis harus menjaring kita .vdi yang berisi salinan lengkap dari semua snapshot sebelumnya.
...
Gunakan perintah "VBoxManage clonehd" untuk membuat file .vdi baru berdasarkan dokumen asli Anda, lalu tambahkan setiap file berikutnya menggunakan argumen "-existing" untuk hanya menambahkan data ke .vdi yang ada yang sedang Anda buat. Daftar perintah berikut didasarkan pada contoh saya di atas:
VBoxManage clonehd Machine.vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID1} .vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID2} .vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID3} .vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID4} .vdi Machine-full.vdi
Ini akan memberi Anda file "Machine-full.vdi" yang mewakili keadaan penuh mesin Anda dalam keadaan aktif tanpa ada hubungan dengan file .vdi induk. Anda sekarang dapat menggunakan file "Machine-full.vdi" ini di mesin virtual baru atau mengedit VM Anda yang ada, menghapus file .vdi yang lama dan menambahkan .vdi ini.
Dengan sedikit penyesuaian yang sepertinya berhasil untuk saya:
Ini adalah hard disk dan snapshots-nya:
<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>
Ini adalah perintah yang saya jalankan (maaf ada yang memotong windows-nya ...):
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
Omong kosong sepertinya saya perlu menambahkan entri di VirtualBox.xml di bawah MediaRegistry-> HardDisks, tapi saya harus memastikan untuk menambahkan setiap foto ke dalam urutan kronologis setelah setiap salinan. Jadi seperti ini:
Copy VM
Add entry to VirtualBox.xml
Copy VM ...
Dan sisa dari apa yang saya lakukan seandainya itu membantu orang lain:
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
Dan kemudian saya hanya membuat VM baru menggunakan ft_full.vdi sebagai basisnya. Cocok dengan sisa pengaturan di panel pengaturan gui.
Saya baru saja mengalami sakit kepala ini dan ada solusi yang tampaknya bodoh. Sayang sekali aku butuh satu hari penuh untuk sampai di sini.
Jika Anda melihat perintah internal VBoxManage.exe dumphdinfo Anda dapat melihat bahwa setiap VDI memiliki info tentang induknya. Jadi, apa yang saya lakukan adalah membuat mesin kosong dan menambahkan "rusak" Parent HD sebagai drive sekunder. Itu menempatkannya di Media Manager.
Kemudian, saya menambahkan pengontrol SATA ke VM kosong dan menambahkan snapshot layer 3. Klik ok. Edit lagi dan tambahkan snapshot layer 2, klik ok. Edit, tambahkan layer 1 snap shot.
Ini membuat masing-masing drive di dalam VM, tetapi di dalam Media Manager semuanya terhubung satu sama lain.
Langkah terakhir, cukup hapus VM bank dan Tambahkan VM Lama Anda. Selesai ... dan ya, sebodoh itu / sederhana.
sumber
Pathname lama (pada
H:
drive) dapat dengan mudah ditentukan dalam.vbox
file untuk VM, yang hanya berupa file XML. Jika demikian, Anda dapat menyimpan salinan file itu, mengedit pathname menjadi pathname baru (yang ada diN:
drive), dan melihat apakah itu memperbaiki masalah.sumber
A differencing image of snapshot {xxx} could not be found. Could not find an open hard disk with UUID {yyy}