Come funziona lo snapshot della macchina virtuale?


16

Avendo utilizzato il software di imaging delle unità per oltre un decennio, trovo sbalorditivo che le macchine virtuali possano essere istantanee e ripristinate in pochi secondi, mentre l'imaging delle unità spesso richiede ore.

Posso eseguire l'istantanea di una macchina virtuale, reinstallarla su un altro sistema operativo, quindi eseguire un ripristino e in qualche modo magicamente in pochi secondi la mia vecchia macchina virtuale esegue il backup perfettamente nello stato in cui si trovava in precedenza.

Come è potuto succedere? Cosa fa effettivamente l'host di macchine virtuali alla macchina virtuale che lo rende possibile?

Risposte:


16

Quando si crea un'istantanea, tutte le modifiche apportate all'immagine del disco virtuale iniziale non vengono effettivamente apportate sull'immagine stessa, ma vengono scritte in un nuovo file del disco (istantanea). Questa azione è così veloce perché non è necessario copiare l'intera immagine del disco virtuale, perché funziona in base al principio della copia in scrittura (solo modificato, ovvero i blocchi scritti vengono scritti nell'immagine dell'istantanea). Si noti che l'immagine dell'istantanea cresce man mano che si modificano sempre più dati sull'immagine del disco virtuale originale (che rimane come nel momento in cui è stata acquisita l'istantanea). Molto probabilmente sarà molto più piccola dell'immagine originale, ma nel peggiore dei casi avrà esattamente le stesse dimensioni (se tutti i blocchi fossero cambiati).

Esistono due azioni che è possibile eseguire con questa nuova immagine di istantanea:

  1. Elimina istantanea : azione molto veloce. Il gestore della macchina virtuale elimina semplicemente il file di immagine dell'istantanea e restituisce il controllo sull'immagine del disco originale o su alcune delle istantanee precedenti
  2. Unisci istantanea : il gestore della macchina virtuale unisce i blocchi modificati (ovvero l'immagine dell'istantanea) con l'immagine originale. Questa azione richiederà tempo a seconda della quantità di blocchi dell'immagine originale modificata. Ancora una volta, lo scenario peggiore è che l'intera immagine originale verrà sovrascritta nel caso in cui tutti i blocchi dell'immagine originale siano stati scritti dopo la creazione di un'istantanea.

Tutte le procedure sopra descritte funzionano anche per più istantanee. In tal caso, l'immagine originale può essere un'istantanea e la successiva istantanea può fare riferimento al blocco su quella (prima) istantanea. In questo modo puoi avere molte istantanee che puoi scartare o unire con facilità.


1
scartare l'istantanea, come qualsiasi processo di eliminazione delle immagini, può effettivamente essere piuttosto lento, se si attiva la cancellazione dopo l'eliminazione. È una funzione di sicurezza per cancellare lo spazio utilizzato da un'immagine o un'istantanea pulita prima che venga liberata per essere utilizzata da altre VM, altrimenti, utilizzando la lettura di blocchi di basso livello, è possibile leggere i dati utilizzati dalla VM precedente. E qualsiasi soluzione di virtualizzazione che non ha questa funzionalità ha un enorme difetto di sicurezza
dyasny,

Ho provato a spiegare lo scenario della creazione di più snapshot e come vengono mantenute le modifiche con ogni snapshot. Guarda questa breve spiegazione sul funzionamento delle istantanee di VMware: cubicrace.com/2012/02/…
Piyush Chordia,

5

Con un'istantanea, il software di virtualizzazione deve tenere traccia di quattro elementi: stato della CPU, RAM, configurazione (quante schede di rete nella VM?) E disco. Sto ignorando le prime tre cose perché non sono enormi quantità di dati, il software può semplicemente fare copie delle strutture di dati relativamente piccole e archiviarle in un file. Quindi, ciò lascia solo la spiegazione del disco per spiegare.

Prima di tutto, ciò che la VM vede come un disco rigido è in realtà solo un insieme di file nel file system host. Per eseguire un'istantanea, il software della macchina virtuale prende il disco della VM in un determinato momento, lo conserva, apre un nuovo file del disco vuoto ed esegue uno schema di copia su scrittura con ogni successivo accesso al disco.

Supponiamo che il tuo file su disco sia BigVM.disk. Fai un'istantanea e ora il tuo software VM rinomina il tuo disco in BigVM-s1.disk, quindi crea un nuovo BigVM.disk vuoto. Quando la VM è in esecuzione, tutte le richieste di lettura passano attraverso BigVM.disk. Se quel file non ha una voce per la parte del disco richiesta dalla VM, vengono restituiti i dati da BigVM-s1.disk. Durante una scrittura, i dati vengono scritti su BigVM.disk anziché su BigVM-s1.disk. Una lettura futura nello stesso settore restituirà i dati da BigVM.disk invece dell'istantanea originale contenuta in BigVM-s1.disk. BigVM-s1.disk contiene lo stato del disco rigido della VM al momento dell'istantanea, mentre BigVM.disk contiene tutte le differenze sul disco da quella istantanea.

Cosa succede quando si ritorna a un'istantanea più vecchia? Il software VM elimina il contenuto di BigVM.disk e ricomincia da capo, con un nuovo BigVM.disk vuoto che punta ancora su BigVM-s1.disk.


2

Sta solo scrivendo le differenze nei file modificati dal momento dello snapshot, non il disco completo della macchina virtuale. Come unix diff e patch, tranne una versione più sofisticata che differisce a livello binario e conosce altri dettagli della tua macchina virtuale.


1

Almeno nelle istantanee VMware, ciò che accade è che l'istantanea è sostanzialmente un segnale per VMX per avviare un nuovo checkpoint per le scritture su disco e lo stato della macchina. A seconda che la VM sia spenta o accesa, il ripristino dell'istantanea può comportare semplicemente il nuking di tutto ciò che è accaduto oltre quel punto di controllo. Altrimenti, tutti i settori del disco della VM diventano copia su scrittura, il che significa che quando si esegue un ripristino di istantanee a caldo, deve solo riscrivere i settori che sono cambiati da quando è stata scattata l'istantanea. Ecco perché è più veloce.


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.