Backup degli ospiti qcow2 kvm


13

Non riesco a trovare buone informazioni sul backup degli ospiti di qcow2 kvm. Non sono veramente interessato allo stato di esecuzione degli ospiti, ma solo al file system. Questa domanda suggerisce l'utilizzo savevmma che crea un'istantanea in atto. Vorrei fare il backup del filesystem da remoto.

C'è un modo migliore di:

  1. sospendi virt_machine # pause macchina virtuale
  2. rsync --sparse /home/vm/image.qcow2 /tmp/image.dec_14_2010.qcow2 # copia l'immagine sulla stessa unità
  3. riprendi virt_machine
  4. rsync --sparse /tmp/image.dec_14_2010.qcow2 ssh: // backup @ backupmachine: / vmbackups

Ci sono un paio di aspetti negativi a questo. Innanzitutto, la copia di un enorme file di immagine richiede un tempo (relativamente) lungo. In secondo luogo, devo sempre assicurarmi di avere abbastanza spazio per eseguire il backup dei miei computer. Questo non è l'ideale. Esistono altri modi migliori per gestire i backup di KVM?

Grazie.

Risposte:


7

Vorrei suggerire la funzione di istantanea di qemu-nbd:

qemu-nbd --snapshot --connect=/dev/nbd0 image.qcow2

quindi monta / dev / nbd0p1 (partizione 1), rsync, smonta e infine disconnetti:

qemu-nbd --disconnect / dev / nbd0


5

Immagine sporca con questo (la tua pausa può probabilmente aiutare, ma potrebbe non essere del tutto coerente):

Esegui uno snapshot sul file system LVM che contiene il file sparse qcow2 (sempre supponendo che tu abbia spazio per lo snapshot LVM)

Montare l'istantanea LVM.

Montare il telecomando usando sshfs.

Copia sul mountpoint di sshfs usando la copia sparse (cp --sparse = sempre src dest)

Meno tempo per la copia, ma ci vorrà ancora tutto il tempo se l'immagine è per lo più piena.

I backup dei dati all'interno della VM sono probabilmente un'idea migliore (meno spazio / tempo). Tratta i singoli VM come host regolari per il backup / il ripristino, ovvero ottieni quello che ti serve e mantieni un set di VM stub senza i dati per eseguire il backup e funzionare velocemente.


Interessante, grazie. Non ho LVM in cima al mio filesystem, per semplicità. Preferirei copiare l'intera immagine perché ciò mi consentirebbe di disporre di un failover di riserva pronto per l'esecuzione nel caso in cui la macchina si guasti in qualsiasi momento.
Ottanta,

1
Nessun problema. LVM ti salverebbe dal dover mettere in pausa la VM e consentirti di eseguire lo snapshot mentre continuava a funzionare.
ax25

3

Personalmente, ho avuto un periodo MOLTO difficile con questo problema e ho scoperto che, anche quando sospeso, i backup dei guest erano spesso instabili. Ricorda: se non stai provando regolarmente a ripristinare questi backup, non hai davvero idea che funzionino.

Dopo molte sperimentazioni, ho puntato completamente sul backup delle immagini e ho optato per una soluzione di backup di rete tradizionale che si potrebbe usare per i server bare metal. Nel mio caso siamo andati con BackupPC, che è vecchio, ma super affidabile. Su ciascun server, ho configurato la soluzione di backup per le particolari applicazioni in uso. Ad esempio sqldump per MySQL, plugin per Joomla, ecc.

È un PIA, ma è molto più veloce e molto affidabile.


Grazie @hdave. Sento che con questo approccio sto perdendo uno dei principali vantaggi delle macchine virtuali, il contenimento. Per ripristinare, dovrei reinstallare tutto manualmente e configurare. Non proprio l'approccio che voglio adottare. Tuttavia, grazie comunque, è una tecnica valida.
Ottanta,

Il 100% concorda sul fatto che si tratta di un dolore reale. Se hai mai rotto questo dado, facci sapere come hai fatto!
hdave,

@EightyEight: consiglio vivamente un software di gestione della configurazione come Chef o Puppet. È molto più flessibile e anche meno doloroso se si desidera configurare un secondo server identico (fisico o virtuale, non importa). Chef ha plugin per quasi tutti gli hypervisor e può aiutarti a effettuare il provisioning e configurare un host. In questo modo si ha il vantaggio di utilizzare meno spazio per i backup (un'intera VM è più grande rispetto a set di dati specifici) e tempi di implementazione più rapidi in nuovi ambienti. Inoltre CM è come la documentazione dell'infrastruttura nel codice.
Rafael Bugajewski,

2

Indipendentemente da dove esegui l'istantanea: LVM o qcow2, la VM deve comunque essere sospesa prima di eseguirla. Altrimenti si perdono dati e immagini corrotte.


non più di quanto faresti se hai tirato il cavo di alimentazione però?

1
niente di più e niente di meno ovviamente :)
dyasny,

pensandoci ancora un po ', smettere di domare il dominio non aggiunge nulla - in entrambi i casi l'istantanea è "coerente con gli arresti anomali", niente di più, niente di meno, ho ragione?

errr, definire "coerente con gli arresti anomali". Il sistema operativo guest potrebbe avere alcuni dati in volo destinati al disco virtuale, che andranno persi se si stacca la spina. Teoricamente, questi dati potrebbero essere scritti nell'istantanea dopo essere stata pubblicata, ma c'è una buona ragione per cui le istantanee live in tutte le piattaforme Virt includono la sospensione / scongelamento negli agenti guest. Inoltre, se i dati non vengono persi, finiranno comunque nell'istantanea anziché nell'immagine di base, il che
vanifica

"crash-coerente" significa semplicemente "coerente come ci si aspetterebbe in un incidente" iiuc - vale a dire affidarsi a riviste ecc. e accettare una perdita di dati a causa della mancanza di sincronizzazione tempestiva. "C'è una buona ragione per cui le istantanee dal vivo in tutte le piattaforme Virt includono la sospensione / lo scongelamento degli agenti guest", come intendo, la buona ragione è esattamente la stessa di scattare un'istantanea LVM - ne sai di diverso? KVM non sembra sincronizzare prima della sospensione più di quanto non farebbe un'istantanea LVM? Naturalmente, se non si utilizza LVM per lo snapshot, sarebbe sciocco non smettere di fumare, ma è diverso e non è quello che stai dicendo.
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.