Il modo più veloce per unire le istantanee in VirtualBox?


49

Ho vdi con un certo numero di istantanee prese da esso - diciamo, 50 o 70 istantanee. Voglio avere un semplice VDI con uno stato attuale. Queste istantanee occupano troppo spazio su disco e non sono necessarie come istantanee.

Lo so se chiamo

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing

Prenderò quello che voglio. Ma ci vuole molto tempo (più di 5 ore dati l'hardware e la dimensione iniziale del disco 16G).

E, naturalmente, ci ho provato VBoxManage snapshot deleteed è strano: non funziona su una macchina ferma, può non funzionare su una macchina in esecuzione e quando fallisce una volta, fallirà tutte le chiamate successive.

C'è un modo per rendere semplice VDI da un numero di istantanee: più veloce?

$ VBoxManage --version
3.2.14r75509

(chiesto su ServerFault ma deciso che questo posto è più appropriato per questa domanda)


Il comando che stai usando è il comando che vuoi usare non è un modo più veloce.
Ramhound,

Che ne dici di esportare l'intera VM? Il suo VDI conterrà ciò che voglio?
Andrey Regentov,

Dovresti provarlo. Alla fine, qualsiasi altro metodo impiegherà ancora un po 'a causa delle dimensioni della macchina virtuale.
Ramhound,

Risposte:


53

Ho trovato la soluzione È semplice come l'ultimo passo dai comandi che ho scritto qui. ie

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi

Quindi dovrei clonare solo l'ultima istantanea, non tutte le istantanee della catena. Ed è il mille percento più veloce.

L'UUID può essere trovato da VBoxManage list hdds | grep VmName | tail

Nella GUI (su Windows), seleziona la VM, seleziona Istantanee in alto a destra, fai clic con il pulsante destro del mouse sull'istantanea che desideri, seleziona Clona ... e seleziona Clone completo nella finestra di dialogo.


grazie ma non funziona sulla mia configurazione, dice che l'immagine esisterebbe già. Hai dimenticato il --esistente?
Andy,

3
se hai già un thedisk-full.vdifile sul disco, per favore cambia prima il nome nel comando in qualcosa del genere thedisk-full-new.vdi.
Andrey Regentov,

Il percorso completo deve essere quello registrato in VirtualBox, ovviamente. I collegamenti simbolici non funzioneranno, poiché VBox deve cercare tutte le istantanee
Andy,

non sei sicuro di cosa faccia la coda, vuoi dire " tail -1"?
Controlla il

1
In VirtualBox 5, clonehdè obsoleto e lasciato per compatibilità con le versioni precedenti, utilizzare clonemediuminvece.
George Sovetov,

22

Ecco una tecnica (testata su VirtualBox 4.3.4) che utilizza il comando 'Clone' per unire e compattare tutte le istantanee in una nuova macchina virtuale contenente un singolo file VDI:

  1. Rinominare la VM in modo da poter riutilizzare il nome corrente per la VM clonata (è possibile modificare il nome della VM dalla scheda "Base" delle impostazioni "Generali").

  2. Fare clic con il tasto destro del mouse sulla VM ed eseguire il comando "Clona ...":

    • Impostare il nome sul nome originale della VM.
    • Accetta i valori predefiniti rimanenti, ad es. Tipo di clone: ​​"Clone completo"; Istantanee: "Stato macchina corrente".
  3. Elimina la vecchia VM (fai clic con il pulsante destro del mouse sulla VM ed esegui il comando "Rimuovi ...").


A partire da VirtualBox 6.0.8, funziona ancora.
Paul Sturm,

3

Puoi provare a esportare in OVF e quindi importare nuovamente il file generato.

Come spiegato qui :

OVF non può descrivere le istantanee che sono state prese per una macchina virtuale. Di conseguenza, quando si esporta una macchina virtuale con snapshot, verrà esportato solo lo stato corrente della macchina e le immagini del disco nell'esportazione avranno uno stato "appiattito" identico allo stato corrente della macchina virtuale.

Di conseguenza, si avrà una macchina virtuale clonata con lo stato corrente senza altre istantanee.


Chiedo di vdis perché non riesco ad esportare la macchina - era rotta (stato inaccessibile dopo il riavvio dell'host), e tutto ciò che avevo era il gruppo di VDI - disco e una cinquantina di istantanee.
Andrey Regentov,

0

Tale operazione significa leggere e scrivere file molto grandi nello stesso disco fisico. L'unico modo per aumentare la velocità è inserire quei file in dischi diversi modificando i percorsi nel comando VBoxManage. Se la macchina ha un solo disco, è possibile utilizzare un'unità USB esterna o persino un disco in un'altra macchina tramite una condivisione di rete (a seconda della velocità della rete)


1
In genere la rete ha ordini di grandezza più lenti dell'interfaccia interna dell'HDD, quindi probabilmente questo non renderebbe il processo più veloce.
Andrey Regentov,

-2

Alcuni hanno 10Gib / s LAN, quindi può trasferire più di un gigabyte al secondo, quindi non sarà un collo di bottiglia.

Alcuni hanno 1Gib / s LAN, quindi può trasferire più di oltre 100 megabyte al secondo, quindi non sarà un collo di bottiglia (a meno che tu non abbia un SSD molto veloce).

I dischi meccanici, quando vengono letti e scritti sullo stesso disco contemporaneamente (o molto frammentati), scendono per circa 20 megabyte al secondo, mentre in sola lettura non frammentata o in sola scrittura possono arrivare a più di 100 megabyte al secondo.

Parli di LAN essere più lento, ma non di USB (2.0, per non parlare di 1.1 o 1.0) è molto più lento.

Quello che suggerirei sarebbe: utilizzare USB 3.1 Gen2 Tipo C o eSATA / SATA / SAS

Ma sempre: usa un secondo disco abbastanza veloce.

E sempre: la clonazione su un altro disco e la copia del file è molto più veloce rispetto all'utilizzo di uno solo del disco a meno che non sia un SSD o un disco rigido con bracci multi-head indipendenti (possono leggere e scrivere contemporaneamente su due luoghi di superficie, ogni testa ha il suo braccio, molto costoso, circa> 9876 €).

La cosa migliore è clonare solo il disco rigido virtuale dello stato desiderato, quindi verificare che funzioni, quindi RIPRISTINA livello superiore (eliminerà tutte le istantanee), quindi rimuoverà l'HDD in memoria e collegherà quello nuovo.

Quindi passi, per perdere tutti i vecchi stati su uno schema di snapshot senza albero:

  1. Clonare da un disco rigido a un altro, evitare colli di bottiglia
  2. Crea una nuova macchina, collega quel disco, disconnettilo, configuralo come inmutabile
  3. Test funziona (dato che è immutabile) avrai lo stesso stato
  4. Se non è necessario che sia immutabile, scollegarlo, tornare alla normalità, ecc
  5. Elimina le vecchie istantanee della macchina (ripristina prima)
  6. Elimina la macchina del test temporale
  7. Copia sul disco il disco virtuale
  8. Collegare il disco clonato

Ma sempre in mente, le istantanee possono essere come un albero pieno, un nodo può avere più di un figlio, ogni bambino può avere più di un figlio, ecc.

Per lavorare con alberi di immagini istantanee, pensa sempre a ELIMINA come eliminare un nodo senza influire sul resto dei nodi (perdi solo quello stato, ma non c'è riposo, nessun genitore e nessun figlio saranno interessati, i dati verranno uniti su tutto il primo sottotitolo bambini di livello, processo così lento) e su RESTORE come distruggere tutti i suoi figli su tutti i livelli secondari (perdendo tutti gli stati dopo quello ripristinato, elimina solo i file, quindi processo molto veloce, solo pochi secondi).

Questo è!

PD: Che nomi orribili ha dato VBOX a quelle due operazioni (elimina solo un nodo = ELIMINA; elimina tutti i nodi figlio su tutti i livelli secondari = RIPRISTINA)


Il ripristino non elimina le istantanee, ma solo lo stato corrente (non salvato).
Melebio
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.