Virtualbox'ta keyfi anlık görüntüyü base vdi ile birleştirme


14

Bir VM'nin bir sabit diskten diğerine aktarılmasını engelledim. Şimdi temel vdi ve bir sürü anlık görüntü ile kaldım.

Adımlarım

  • Eski VM dizini yeni HDD'ye kopyalandı
  • Eski VM'yi sildi ve Machine-> add kullanarak ve eski XML dosyasını sağlayarak yeni VM ekledi
  • Çakışma nedeniyle base vdi dosyası eklenemedi, bu nedenle base vdi'nin UUID değeri

    VBOXMANGE.EXE internalcommands sethduuid  <path/to/vdi>
    
  • Anlık görüntüye geri dönme girişiminde bulunuldu, ancak VM, eski HDD'deki (biçimlendirilen ve gitti) anlık görüntüleri arıyor gibi görünüyor

Bu hatadır (ağa bağlı addır):

Failed to restore the snapshot networked of the virtual machine lfs.

Could not open the medium 'H:\vm\ft.vdi'.

VD: error VERR_PATH_NOT_FOUND opening image file 'H:\vm\ft.vdi' (VERR_PATH_NOT_FOUND).

Result Code: E_FAIL (0x80004005)
Component: Medium
Interface: IMedium {53f9cc0c-e0fd-40a5-a404-a7a5272082cd}

Eski HDD H sürücüsüdür: yeni HDD N sürücüsüdür:

N:\vm\ft.vdiTemel vdi'yi aramak için anlık görüntüleri / VM'yi nasıl değiştirebilirim ? Zaten VirtualBox varsayılan ayarları (varsayılan vm / vm anlık görüntü konumu) zaten ayarladım.

Ya da öyle değilse, değişen tek şeyin temel vdi'nin UUID'si olduğu göz önüne alındığında, eski anlık çekimi temel vdi ile nasıl birleştirebilirim?

Yanıtlar:


10

Sorunumu şu şekilde çözdüm.

Önce jordoncm komut dosyasını kullanarak temel VDI dosyamdaki UUID'yi değiştirmeyi çözdüm

Sonra sadece yeni konumla eşleşmesi için vbox dosyasındaki yolları değiştirmeyi denedim. Bu çeşitli farklı hatalar attı ve vbox dosyasını kullanarak VM eklemek bile mümkün değildi işe yaramadı.

Bu yüzden Peter Porter tarafından önerilen bu blog makalesini buldum :

Her .vdi yalnızca son .vdi'den değiştirilen sektörleri içerdiğinden, .vdi'leri kronolojik sırayla kopyalamak bize önceki tüm anlık görüntülerin tam bir kopyasını içeren bir .vdi'yi netleştirmelidir.

...

Orijinalinize bağlı olarak yeni bir .vdi dosyası oluşturmak için “VBoxManage clonehd” komutunu kullanın, ardından yalnızca oluşturduğunuz mevcut .vdi'ye veri eklemek için “–existing” bağımsız değişkenini kullanarak sonraki her bir dosyayı ekleyin. Aşağıdaki komut listesi yukarıdaki örneğime dayanmaktadır:

VBoxManage clonehd Machine.vdi Makine-full.vdi

VBoxManage clonehd Anlık Görüntüler {UUID1} .vdi Machine-full.vdi

VBoxManage clonehd Anlık Görüntüleri {UUID2} .vdi Machine-full.vdi

VBoxManage clonehd Fotoğrafları {UUID3} .vdi Machine-full.vdi

VBoxManage clonehd Fotoğrafları {UUID4} .vdi Machine-full.vdi

Bu, üst .vdi dosyalarıyla herhangi bir ilişki olmadan etkin durumdaki makinenizin tam durumunu temsil eden bir “Machine-full.vdi” dosyası verecektir. Artık bu “Machine-full.vdi” dosyasını yeni bir sanal makinede kullanabilir veya mevcut VM'nizi düzenleyerek eski .vdi dosyasını kaldırabilir ve bu .vdi'yi ekleyebilirsiniz.

Benim için işe yarayan küçük bir değişiklikle:

Bu sabit disk ve anlık görüntüleri:

<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>

Bunlar çalıştırdığım komutlar (üzgünüm, bazıları pencerelerinden kesiliyor ...):

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

Bok MediaRegistry-> HardDisks altında VirtualBox.xml bir girdi eklemek gerekiyor gibi görünüyor, ama her kopya sonra her anlık görüntü kronolojik sırayla eklemek emin olmak zorunda. Yani şöyle:

Copy VM
Add entry to VirtualBox.xml
Copy VM ...

Ve kimseye yardım etmesi durumunda yaptığımın geri kalanı:

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

Ve sonra temel olarak ft_full.vdi'yi kullanarak yeni bir VM oluşturdum. Gui ayarları bölmesindeki diğer ayarlarla eşleşti.


1
Görünüşe göre çok daha hızlı yapabilirsin superuser.com/questions/590968/…
Andrey Regentov

4

Bu baş ağrısından geçtim ve görünüşte aptalca bir çözüm var. Buraya gelmem tam bir günümü aldı.

VBoxManage.exe internalcommands dumphdinfo'ya bakarsanız, her VDI'nın üst öğesi hakkında bilgi sahibi olduğunu görebilirsiniz. Yani, yaptığım boş bir makine oluşturmak ve ikincil sürücü olarak "kırık" Ebeveyn HD ekledi. Bunu Media Manager'a yerleştirdi.

Sonra boş VM'ye bir SATA denetleyicisi ekledim ve katman 3 anlık görüntüsünü ekledim. Tamam'ı tıklayın. Tekrar düzenleyin ve katman 2 anlık görüntüsünü ekleyin, Tamam'ı tıklayın. Düzenleyin, katman 1 ek çekim ekleyin.

Bu onları VM içinde ayrı sürücüler yapar, ancak Media Manager içinde hepsi birbirine bağlıdır.

Son adım, banka VM'sini silmek ve Eski VM'nizi eklemektir. Bitti ... ve evet, o kadar aptalca / basit.

c:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands dumphdinfo D:
\Virtual_box\Virtual_box_HD_C.vdi

1 Header: uuidCreation={13ea5785-58db-4ad9-8459-9b13d89a3aaa}
1 Header: uuidModification={b1bfd84d-6fcc-4640-80fc-b7c1a6b929cb}
1 Header: uuidParent={19ed1b87-d127-402d-b463-59899c683a47}
  2 Header: uuidCreation={19ed1b87-d127-402d-b463-59899c683a47}
  2 Header: uuidModification={709f1fad-68a3-47c7-9336-f3409fcae95b}
  2 Header: uuidParent={436c1ffd-04ee-4d6b-968c-de95e65d8a5a}
    3 Header: uuidCreation={436c1ffd-04ee-4d6b-968c-de95e65d8a5a}
    3 Header: uuidModification={049d869e-89c2-48aa-b0cc-eb324895f3b9}
    3 Header: uuidParent={e09c65f4-828d-4a53-8ecc-20365d43a52e}
      4 Header: uuidCreation={e09c65f4-828d-4a53-8ecc-20365d43a52e}
      4 Header: uuidModification={6c397704-fe65-4661-b60f-767e207ffb58}
      4 Header: uuidParent={00000000-0000-0000-0000-000000000000}

Bir basitleştirme, sadece üst ve sonra anlık görüntü disk dosyasını dosya yöneticisinden sanal disk yöneticisine bıraktım. Sonra .vbox dosyasını açabildim (linux kurulumumda mevcut olmayan paylaşılan klasöre referansta bulunan iki satırı yorumlamak zorunda kaldım.
zoechi

0

Eski yol adı ( H:sürücüde), yalnızca .vboxXML dosyası olan VM dosyasında belirtilebilir . Öyleyse, o dosyanın bir kopyasını kaydedebilir, yol adını yeni yol adı ( N:sürücüdeki ad) olacak şekilde düzenleyebilir ve sorunun giderilip giderilmediğine bakabilirsiniz.


1
<HardDisk> düğümündeki ilgili özniteliği değiştirdim ve VM'yi yeniden ekledim. Ancak şu hatayı döndürür: A differencing image of snapshot {xxx} could not be found. Could not find an open hard disk with UUID {yyy}
jmathew

Belki bana sadece UUID eski disk uuid geri ayarlayabilirsiniz. Mümkün mü?
jmathew

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.