Моя гостевая машина имеет 2 раздела (80 ГБ + 1 ТБ). Оба они находятся на LVM. Я хочу перенести все диски на другую машину с минимальным временем простоя. Перенёс другую машину с nc. Это занимает 4 дня, и во время переноса моя ВМ была выключена.
Я пытался сделать снимок после переноса грязных страниц. Но AFAIK с LVM это невозможно. Моя целевая машина не имеет установки LVM и свободного неразделенного пространства. Итак, на дисках целевой машины должны быть необработанные образы файлов.
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/vg-datastore/lv-vm-1138'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/vg-datastore-sata/lv-vm-1138-2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
Исходный хост:
Целевой хост:
KVM / libvirt поддерживает динамическую миграцию виртуальных машин с миграцией хранилища (установка без общего доступа), хотя и с некоторыми ограничениями. Ваша основная проблема в том, что пулы хранения имеют разную конфигурацию, поэтому я не уверен libvirt
без проблем перенесет образ виртуальной машины.
Команда для выполнения живой миграции + копии хранилища:
virsh migrate --live --copy-storage-all --persistent qemu+ssh://root@/system
Эта команда предполагает, что у вас есть действующее соединение с удаленным хостом на основе libvirt.
Если у вас возникли проблемы с переносом виртуальных дисков, вы можете попытаться создать заглушки целевых файлов виртуальных дисков, выполнив (на целевом хосте) что-то похожее на fallocate /dev/vg-datastore/lv-vm-1138 -l 80G
и /dev/vg-datastore-sata/lv-vm-1138-2 -l 1T
.
В любом случае, из-за различий между хозяевами это может быть ухабистая дорога.
Более простой способ перенести образы виртуальных машин - использовать метод инкрементного копирования дисков с использованием blocksync
. Коротко:
Обратите внимание, что связанный blocksync
программа представляет собой персональную форковую версию, основанную на этот оригинальный сценарий (который, кстати, является улучшенной версией этот сценарий). Я очевидно предполагаю ОТСУТСТВИЕ ОТВЕТСТВЕННОСТИ для кода, и я настоятельно рекомендую вам тщательно проверить это перед использованием на производственных виртуальных машинах / дисковых файлах. Как всегда ты ДОЛЖЕН прежде чем что-либо делать, нужно иметь подтвержденную резервную копию.
РЕДАКТИРОВАТЬ: как предлагается в комментарии ниже, еще одно отличное программное обеспечение для синхронизации файла блочного устройства / виртуального образа - bdsync
. Подход в основном тот же: возьмите первую «начальную» копию дискового файла во время работы виртуальной машины, затем остановите виртуальную машину и сделайте еще одну окончательную копию. Раньше я даже спрашивал bdsync
разработчик по аналогичному вопросу; Смотрите здесь для получения дополнительной информации.