В настоящее время я разрабатываю решение для резервного копирования виртуальных машин KVM в качестве дополнительной меры к традиционному резервному копированию.
К сожалению, все существующие на данный момент (август 2013 г.) решения, с которыми я столкнулся, либо:
Мне известно о функциональности QEMU / libvirt по созданию снимков, однако она еще не используется, поскольку:
По указанным выше причинам я сейчас реализую сценарий, который:
Если я все сделал правильно, это потребует постоянных резервных копий виртуальных машин с простоями всего за секунды (если вообще, поскольку 1-3 - это быстро, возможно, менее чем за секунду). Конечно, при восстановлении ВМ будет путь в прошлом, но, по крайней мере, давая мне возможность упорядоченного выключения / перезагрузки.
Мне что-то не хватает в этом решении? Или это действительно кто-то уже реализовал?
https://wiki.libvirt.org/page/Live-disk-backup-with-active-blockcommit
Это возможно с версиями: QEMU 2.1 (и выше), libvirt-1.2.9 (и выше).
$ virsh domblklist vm1
Target Source
------------------------------------------------
vda /export/images/base.img
$ virsh snapshot-create-as --domain vm1 guest-state1 \
--diskspec vda,file=/export/images/overlay1.qcow2 \
--disk-only --atomic --quiesce
$ rsync -avhW --progress /export/images/base.img \
/export/images/copy.img
$ virsh blockcommit vm1 vda --active --verbose --pivot
Остановка виртуальной машины не сбрасывает текущие операции ввода-вывода, вам следует использовать qemu-ga
чтобы остановить ВМ.
Поскольку QEMU представил миграцию блоков, вы можете попробовать использовать его для миграции виртуальной машины в образ резервной копии, сохранив как состояние памяти, так и диск.