Я создал несколько виртуальных машин KVM, используя образы QCOW2.
Каждая виртуальная машина имеет свой собственный файл qcow2 и не основана ни на каком резервном файле.
Мой вопрос конкретно касается снимков изображений QCow2 на этих запущенных виртуальных машинах.
Если я запустил следующую команду на работающей виртуальной машине:
qemu-img snapshot -c backup /vms/vm10001.qcow2
Повредит ли приведенная выше команда файловой системе работающих виртуальных машин?
Я намерен затем преобразовать снимок в изображение qcow2, используя следующее:
qemu-img convert -s backup /vms/vm10001.qcow2 /vms/output.qcow2
Я не могу использовать команды "virsh" и поэтому пытаюсь найти способ выполнить свою задачу с помощью qemu-img
Ответ / Обновление 1 :
Хорошо, поэтому я протестировал это на нескольких моих тестовых виртуальных машинах, и это невозможно. Ты не можешь бежать qemu-img snapshot
на живой виртуальной машине, не ставя ее на паузу.
Единственный способ сделать это на базовых узлах RHEL - использовать:
virsh snapshot-create <dom>
Вышеупомянутое сохранит состояние виртуальной машины и внутренне вызовет qemu-img snapshot -c
. Однако это может занять некоторое время, что подводит меня ко второму вопросу.
Вопрос 2 : virsh snapshot-create <dom> --disk-only --atomic
не поддерживается на базовых узлах типа RHEL (включая RHEL 7), потому что qemu-kvm очень старый.
Так что единственный вариант - использовать virsh snapshot-create <dom>
что довольно медленно.
Можно ли сделать следующее:
virsh suspend <dom>
qemu-img snapshot -c backup /vms/<dom>.qcow2
virsh resume <dom>
Вышеупомянутая операция кажется намного быстрее, чем создание моментального снимка.
Ответ / Обновление 2 :
Даже вышеупомянутый вопрос 2 невозможен. Проведя много исследований, я пришел к такому же выводу.
Вопрос 3:
Есть ли способ создать моментальный снимок для онлайн-виртуальной машины, имеющей диск Qcow2 на базовом узле RHEL 6/7, а затем сделать резервную копию моментального снимка для восстановления позже?
мой опыт работы с KVM на самом деле довольно ограничен, но, находясь в очень похожей ситуации, у меня сработало следующее:
Прежде всего, я делаю резервную копию конфигурации для виртуальной машины с именем MACHINE:
# virsh dumpxml MACHINE > /path/to/configfile.xml
Затем я приостанавливаю виртуальную машину с именем MACHINE, чтобы предотвратить повреждение вновь созданной машины:
# virsh suspend MACHINE
Затем я создаю снимок с именем MACHINE-BAK.qcow2 из виртуальной машины с именем MACHINE с помощью команды qemu-img, даже если обычно используется для преобразования между форматами:
# qemu-img convert -O qcow2 /path/to/MACHINE.qcow2 /path/to/MACHINE-BAK.qcow2
Затем я возобновляю нормальную работу исходной виртуальной машины с именем MACHINE:
# virsh resume MACHINE
Применяя эти простые шаги в сценарии, который запускается через автоматизацию crontab, я могу получать периодическую полную резервную копию работающих виртуальных машин с минимальным временем простоя (в зависимости от размера исходной виртуальной машины, поскольку, как сказано выше, лучше приостановить оригинальная ВМ при дублировании)
Это не точный ответ, но он покажет вам путь.
Мы давно используем Linux KVM. Раньше qcow2 не поддерживал снимки. В нашем первом хосте KVM мы не хотели использовать моментальные снимки LVM, и из-за этого мы не могли делать резервные копии в реальном времени.
Затем мы нашли Инструменты горячего копирования Linux.
Используя этот инструмент; мы могли заморозить всю файловую систему хоста и скопировать qcows на внешние диски с помощью специального сценария резервного копирования.
Наш сценарий резервного копирования выглядел примерно так;
# Mount Usb
mount /dev/sdb1 /USBDISK
# Mount file system as ro to temp folder
hcp --read-only --mount-point /SNAPSHOT /dev/md1
# Copy files out
cp /SNAPSHOT/*.qcow2 /USBDISK
# Stop Hot Copy
hcp --remove /dev/hcp1
# Remove Usb
umount /USBDISK