Формат qcow2 обеспечивает постоянный внутреннее хранилище для памяти виртуальной машины. При создании моментального снимка работающих виртуальных машин с поддержкой qcow2 состояние их ОЗУ сбрасывается в тот же самый файл qcow2, который используется для хранения.
От официальная страница qcow2:
Каждый снимок описывается заголовком:
typedef структура QCowSnapshotHeader {
/* заголовок выровнен по 8 байтам */
uint64_t l1_table_offset;
uint32_t l1_size;
uint16_t id_str_size;
uint16_t имя_размер;
uint32_t дата_сек;
uint32_t дата_nsec;
uint64_t vm_clock_nsec;
uint32_t vm_state_size;
uint32_t дополнительный_размер_данных; /* для расширения */
/* следуют дополнительные данные */
/* следует id_str */
/* следует имя */
} QCowSnapshotHeader;
что далее объясняет:
vm_state_size
дает размер состояния виртуальной машины, которое было
сохраняется как часть этого снимка. Состояние сохраняется в местоположении
исходная таблица L1, сразу после заголовка изображения.
С другой стороны, что происходит при создании моментального снимка файла необработанного изображения (т. е. без использования qcow2)? Libvirt называет такие моментальные снимки внешний снимок (сравните с внутренний снимок файла qcow2), потому что новый файл qcow2 создается и связывается с исходным (и теперь доступным только для чтения) необработанным файлом. Затем Libvirt сохраняет состояние виртуальной машины (т. е. содержимое ее ОЗУ) в определенном файле, как правило, в подкаталоге /var/lib/libvirt/
. Файлы метаданных XML, наконец, создаются, чтобы «приклеить» файл дампа к состоянию диска, сохраненному в файле наложения.
Поддержка Libvirt для внешних моментальных снимков не очень надежна; например (если в последнее время ничего не изменилось), вы можете создать внешний снимок с помощью одной команды, но вам потребуется несколько сложных команд, чтобы удалить/откатить его. В то же время, для рабочей нагрузки RedHat официально рекомендует использовать внешние снэпшоты, потому что они несколько надежнее и быстрее, чем длинная цепочка внутренних снэпшотов (и они продают RHEV, который скрывает сложность внешних снэпшотов от пользователя).