Formatul qcow2 oferă permanent stocare internă pentru memoria mașinii virtuale. Când faceți instantanee ale unei mașini virtuale care rulează cu suport qcow2, starea RAM este descărcată în același fișier qcow2 folosit pentru stocare.
De la pagina oficială qcow2:
Fiecare instantaneu este descris de un antet:
typedef struct QCowSnapshotHeader {
/* antetul este aliniat pe 8 octeți */
uint64_t l1_table_offset;
uint32_t l1_size;
uint16_t id_str_size;
uint16_t name_size;
uint32_t data_sec;
uint32_t date_nsec;
uint64_t vm_clock_nsec;
uint32_t vm_state_size;
uint32_t extra_data_size; /* pentru extensie */
/* urmează date suplimentare */
/* id_str urmează */
/* numele urmează */
} QCowSnapshotHeader;
care explica in continuare:
vm_state_size
oferă dimensiunea stării mașinii virtuale care a fost
salvat ca parte a acestui instantaneu. Statul este salvat în locația de
tabelul L1 original, direct după antetul imaginii.
Pe de altă parte, ce se întâmplă atunci când faceți un instantaneu al unui fișier imagine brut (adică: nu folosiți qcow2)? Libvirt numește acest tip de instantanee un instantaneu extern (comparați-l cu instantaneu intern a unui fișier qcow2), deoarece un nou fișier qcow2 este generat și legat la fișierul brut original (și acum numai pentru citire). Libvirt salvează apoi starea mașinii virtuale (adică: conținutul său RAM) într-un anumit fișier, în general într-un subdir al /var/lib/libvirt/
. În cele din urmă, este creat un fișier XML de metadate pentru a „lipi” fișierul dump la starea discului salvat în fișierul de suprapunere.
Suportul Libvirt pentru instantanee externe nu este foarte robust; de exemplu (dacă lucrurile nu s-au schimbat foarte recent) puteți crea un instantaneu extern cu o singură comandă, dar aveți nevoie de mai multe comenzi complexe pentru a o șterge/revoca. În același timp, pentru volumul de lucru de producție, RedHat recomandă oficial utilizarea instantaneelor externe, deoarece acestea sunt ceva mai robuste și mai rapide decât un lanț lung de instantanee interne (și vând RHEV care ascunde complexitatea instantaneelor externe departe de utilizator).