Virtualbox, menggabungkan snapshot dan disk dasar

9

Saya memiliki mesin virtual dengan sekitar 30 foto di cabang. Jalur pengembangan saat ini adalah 22 foto ditambah disk dasar. Jumlah file tampaknya memiliki dampak sekarang pada IO dan laptop dev yang saya gunakan (tidak tahu apakah itu masalah kinerja disk host dengan ukuran total 140GB lebih dari banyak fragmen, atau hanya fakta bahwa itu adalah memukul sektor yang didistribusikan di banyak file).

Saya ingin menggabungkan cabang pengembangan snapshots saat ini dengan disk dasar, tetapi saya tidak yakin apakah perintah berikut akan menghasilkan hasil yang benar. Saya tidak dapat mem-boot disk ini setelah prosedur selesai (5-6 jam).

vboxmanage clonehd "C:\VPC-Storage\.VirtualBox\Machines\CRM\Snapshots\{245b27ac-e658-470a-b978-8e62137c33b1}.vhd" "E:\crm-20100624.vhd" --format VHD --type normal

Adakah yang bisa mengkonfirmasi apakah ini pendekatan yang benar atau tidak?

Henrik
sumber
Untuk menambahkan beberapa informasi, kesalahan yang saya dapatkan bukanlah kesalahan VirtualBox, tetapi kesalahan boot dari Windows. Ia ingin meluncurkan perbaikan startup, tetapi karena saya tidak tahu kesalahannya, saya tidak tahu cara memperbaikinya. Memulai windows biasanya menghasilkan menunggu lama dan layar biru. Apakah ini yang diharapkan atau sudahkah saya menggunakan metode yang salah saat mengkloning disk?
Henrik
Saya telah menggunakan VBoxManage (pada host Windows, tamu Ubuntu) seperti yang telah Anda sarankan dalam pertanyaan Anda dan itu benar menggabungkan snapshot ke dalam gambar disk output tunggal
Chaulky
1
Ya ini pendekatan yang benar. Lebih baik untuk menentukan sumber UUID daripada nama file-nya, maka Anda yakin VBox akan dapat menyelesaikan lampiran.
rustyx

Jawaban:

7

Apa yang ingin Anda lakukan adalah dari dialog snapshots, pilih snapshot orang tua Anda yang ingin Anda gabungkan semua snapshot sesudahnya menjadi satu VDI.

Dari uraian Anda, sepertinya ini adalah akar dari pohon.

Klik kanan dan pilih 'Hapus Snapshot'.

Ini akan melakukan apa yang Anda inginkan --- itu akan menggabungkan semua perubahan dari semua foto anak menjadi satu VDI.

Selain itu - mengkloning citra disk yang ada dalam snapshot terbaru - juga akan menggabungkan disk yang membedakan dengan induknya (dan induknya, seterusnya, hingga Anda mendapatkan jenis hard disk yang 'normal').

Saya menduga bahwa 'menghapus snapshot' menjalankan perintah clonehd.

Periksa pengaturan VM Anda (khususnya IO APIC diaktifkan / dinonaktifkan) dan pastikan cocok.

Adam
sumber
Saya kira ini saat ini adalah satu-satunya cara untuk melakukan ini, namun ini adalah manual, memakan waktu, multi klik dalam cara GUI untuk melakukannya.
Henrik
3

Jika Anda hanya ingin menyimpan satu snaphot, jadikan ini sebagai kondisi Anda saat ini & kemudian ekspor VM & impor kembali. Peralatan yang diekspor tidak menyimpan riwayat potretnya.

Atau Anda bisa menggunakan ini vboxmerge.py script untuk menangani penggabungan untuk Anda. Mengingat jumlah foto yang Anda miliki, saya berharap siklus ekspor / impor menjadi lebih cepat.

John Hart
sumber
2

Berikut adalah teknik (diuji pada VirtualBox 4.3.4) yang menggunakan perintah 'Klon' untuk menggabungkan dan memadatkan semua foto ke VM baru yang berisi file VDI tunggal:

  1. Ganti nama VM sehingga Anda dapat menggunakan kembali nama saat ini untuk VM kloning (Anda dapat mengubah nama VM dari tab 'Dasar' pada pengaturan 'Umum').

  2. Klik kanan pada VM dan jalankan perintah 'Klon ...':

    • Atur nama menjadi nama asli VM.
    • Terima default yang tersisa yaitu Jenis klon: 'Klon penuh'; Snapshots: 'Status mesin saat ini'.
  3. Hapus VM lama (klik kanan pada VM dan jalankan perintah 'Hapus ...').

Stuart Rackham
sumber
0

Jika host Anda adalah Windows atau Anda dapat mengakses file VHD dari windows, ada trik untuk MERGE semua perubahan menjadi induk, grand-orangtua, dll.

Itu menggunakan alat DiskPart dan dua perintah:

select vdisk file="whatever your file is, with full path"

merge vdisk depth=#

Di mana # adalah jumlah level hierarki yang ingin Anda pindahkan, 1 untuk orang tua dirent, 2 untuk grand parent, dll.

Itu melakukannya di tempat, jauh lebih sedikit memakan waktu daripada kloning, dll.

Ingat, setelah menggabungkan semua VHD perantara dapat dihapus (itu tidak menghapusnya untuk Anda) dan jangan lupa untuk melampirkan ke dalam VirtualBox bahwa induk tempat Anda bergabung.

Contoh:

Disk3.vhd adalah anak dari Disk2.vhd, Disk2.vhd adalah anak dari Disk1.vhd

Jika Anda ingin di Disk1.vhd semua perubahan pada Disk3.vhd cukup gunakan depth=2dan pilih Disk3.vhd. Jika Anda ingin di Disk1.vhd semua perubahan Disk2.vhd cukup gunakan depth=1pilih Disk3.vhd.

Juga ingat tidak perlu untuk Snapshots VirtualBox jelek, Anda dapat menggunakan DiskPart membuat perintah vdisk untuk membuat disk yang membedakan dari yang sudah ada (yang juga bisa menjadi disk pembeda, dll), juga dapat membuat pohon besar.

Untuk semua yang lain: Poster ini menggunakan VHD (bukan VDI) sehingga dapat menggunakan alat asli seperti DiskPart dan Disk Managment untuk mengakses disk tersebut dari Tamu (pada Host, jika Host adalah Windows).

Bagi Anda, poster: Ingatlah untuk selalu memiliki BackUp penuh sebelum Penggabungan, klon VirtualBox tidak berfungsi, itu membuat file baru (salin saat menulis), tetapi gabungan DiskPart berfungsi di tempat (ubah file, jangan buat yang baru).

Harapan yang dapat memberikan pendekatan berbeda karena VHD / VHDX sedang digunakan (tidak berlaku untuk VMDK, VDI, dll, hanya untuk Windows Host).

Catatan: Windows 7 dan Atas, XP dan Vista dapat me-mount VHD dengan alat M $ eksternal tetapi DiskPart tidak memiliki dukungan VHD pada XP & Vista ... semua ini juga berfungsi pada edisi Windows HOME (7 dan Atas), tidak perlu untuk Edisi SERVER.

Laura
sumber