KVM

Istantanee degli ospiti KVM con Libvirt

Istantanee degli ospiti KVM con Libvirt
Le VM hanno molti casi d'uso, uno dei quali è la capacità delle VM di essere utilizzate come macchine di test. Puoi sperimentare all'interno di una VM, applicare patch e testare gli aggiornamenti prima di fare lo stesso sui tuoi sistemi di produzione o sulla tua workstation. Puoi anche utilizzare macchine virtuali usa e getta, prive di dati personali o sensibili, per i test del malware come fa la maggior parte della comunità della sicurezza, assicurati solo che la rete della macchina virtuale sia isolata dal tuo host e dalla LAN.

Tuttavia, reinstallare il sistema operativo all'interno della VM più e più volte diventa faticoso. Ostacola il tuo flusso di lavoro e, quindi, hai bisogno di un modo affidabile per:

  1. Scatta un'istantanea della tua VM in qualsiasi momento.
  2. Avere un meccanismo per utilizzare l'istantanea per riportare la VM a uno stato precedentemente funzionante working.

In precedenza ho discusso di come funzionano le istantanee in VirtualBox e questa volta volevo discutere delle istantanee all'interno di Libvirt. Userò QEMU-KVM come hypervisor di backend per la mia installazione di Libvirt. Il tuo caso potrebbe essere diverso, ma la funzionalità e l'interfaccia generali non dovrebbero essere molto diverse, poiché libvirt fa del suo meglio per standardizzare l'interfaccia frontend.

Se non hai familiarità con libvirt e qemu-kvm, ecco una guida su come configurare KVM su Debian.

Creazione di un'istantanea

Esistono diversi modi con cui puoi acquisire e gestire snapshot della tua VM. Le applicazioni GUI come virt-manager e oVirt offrono la funzionalità e puoi persino scrivere script personalizzati per interfacciarti con l'API libvirt che gestisce l'intera gamma di snapshot per te.

Tuttavia, utilizzerò l'interfaccia della riga di comando di virsh per mostrare come gestire le tue macchine virtuali e le loro istantanee. Questa utility viene fornita con quasi tutte le installazioni di libvirt predefinite e dovrebbe essere disponibile su un'ampia gamma di distribuzioni.

Per i comandi seguenti assicurati di sostituire il nome della mia VM, VM1, con il nome effettivo della tua VM. Libvirt si riferisce spesso a macchine virtuali e contenitori come Domini. Quindi, se vedi un messaggio di errore che suggerisce, ad esempio, "specifica il nome di dominio", devi fornire il nome della tua VM come uno degli argomenti del comando. Usa il seguente comando per elencare tutte le VM sotto la gestione di Libvirt.

$ lista virsh --all

Per acquisire uno snapshot di una VM è sufficiente eseguire:

$ virsh snapshot-create VM1

E per elencare tutte le istantanee di una determinata VM usa il comando:

$ virsh snapshot-list VM1
Nome                 Tempo di creazione             Stato
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 in esecuzione

Puoi vedere che l'istantanea è stata creata. Per impostazione predefinita, il nome dello snapshot è il suo timestamp di creazione (il numero di secondi dall'epoca UNIX). La colonna Ora di creazione mostra l'ora di creazione in un modo leggibile dall'uomo e la colonna Stato mostra lo stato della VM quando è stata scattata. Poiché questa VM era in esecuzione, anche lo stato dello snapshot è "in esecuzione", ma ciò non significa che lo snapshot stesso sia in esecuzione. Non cambierà con il tempo. Questa funzione è anche nota come snapshot live ed è piuttosto preziosa poiché ti consente di scattare un'istantanea della tua VM senza tempi di inattività. Gli ospiti KVM, almeno, funzionano bene con le istantanee in tempo reale.

Alcuni carichi di lavoro, tuttavia, richiedono l'arresto della VM prima che venga eseguito lo snapshot. Ciò garantisce che i dati nell'istantanea siano coerenti e che non ci siano file scritti a metà o dati mancanti. Se il carico di lavoro in esecuzione nella tua VM ha un IO elevato, probabilmente devi spegnere la VM prima di creare lo snapshot. Creiamone uno in questo modo.

$ virsh spegnimento VM1

Il dominio VM1 è in fase di chiusura

$ virsh snapshot-create VM1

Istantanea del dominio 1556533868 creata

[email protected]:~# virsh snapshot-list VM1
Nome                 Tempo di creazione             Stato
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 in esecuzione
1556533868           2019-04-29 16:01:08 +0530 spegnimento
 
$ virsh start VM1
Dominio VM1 avviato

Se vuoi nominare le istantanee qualcosa di diverso da timestamp, usa il comando:

$ virsh snapshot-create-as VM1 --name snap1
Nome                 Tempo di creazione             Stato
------------------------------------------------------------
1556533387           2019-04-29 15:53:07 +0530 in esecuzione
1556533868           2019-04-29 16:01:08 +0530 spegnimento
snap1                2019-05-02 22:27:48 +0530 in esecuzione

Ovviamente, non devi chiamarlo snap1, puoi scegliere qualsiasi nome conveniente.

Ripristino da un'istantanea

Scattare un'istantanea non serve a niente se non puoi tornare indietro. Nel caso in cui sia necessario ripristinare un'istantanea, utilizzare semplicemente il comando:

$ virsh snapshot-revert $VMName $snapshot-name

Il nome può essere il timestamp o il nome assegnato dall'utente allo snapshot.

Assicurati che non ci siano dati importanti nella tua VM attuale, o se c'è qualcosa di importante, quindi scatta un'istantanea della tua VM attuale e poi torna a un'istantanea precedente.

Vantaggi di QCOW2

Il meccanismo di copia su scrittura dei file qcow2 consente a ciascuna istantanea di occupare uno spazio molto ridotto. Lo spazio occupato da un'istantanea aumenta nel tempo man mano che l'immagine in esecuzione diverge dall'istantanea. Quindi, finché non riscrivi molti dati, le tue istantanee occuperanno solo pochi MB di spazio di archiviazione.

Significa anche che le istantanee sono anche molto veloci. Poiché, il meccanismo di copia su scrittura deve solo contrassegnare il timestamp quando è stata scattata l'istantanea. I blocchi di dati scritti nel file qcow2 dopo lo snapshot non gli appartengono, ma quelli più vecchi sì. È così semplice. Il mio banco di prova utilizza un disco rigido da 5400 RPM che non è affatto al massimo delle sue prestazioni, ci vogliono comunque meno di pochi secondi per scattare un'istantanea live di una VM su questo disco.

Conclusione

Come con la maggior parte delle utility correlate a libvirt e virsh, la funzionalità snapshot fornisce un'interfaccia molto flessibile con funzionalità di livello aziendale come snapshot live insieme ai vantaggi del meccanismo copy-on-write.

La convenzione di denominazione predefinita rende inoltre più semplice per gli script di shell rimuovere periodicamente le vecchie istantanee e sostituirle con quelle più recenti. Uno dei miei vecchi articoli sugli snapshot OpenZFS e sulle policy snapshot può essere applicato anche al tuo ospite KVM. Per maggiori informazioni sull'utility virsh snapshot puoi usare il comando virsh help snapshot. La pagina di aiuto è molto piccola, precisa e di facile comprensione.

Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...
Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....
Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...