Я пытаюсь выполнить миграцию в автономном режиме, используя libvirt API в Perl. У меня 2 сервера (на обоих есть):
- сжатие debian
- ксен-гипервизор-4.0-i386
- libvirt (1-й сервер - 0.8.7 и 2-й сервер - 0.8.3)
В xend-config.sxp на обоих серверах я установил:
- (xend-relocation-server да)
- (xend-relocation-порт 8002)
- (xend-адрес-перемещения '')
У меня также есть 3-й сервер, с которого я запускаю этот скрипт:
use Sys::Virt;
my $vmm1 = Sys::Virt->new( uri=> "xen://hostA/" );
my $vmm2 = Sys::Virt->new( uri=> "xen://hostB/" );
my $dom = $vmm1->get_domain_by_name("test1");
my $ddom = $dom->migrate($vmm2,0,undef,"xenmigr://hostB/",0);
Когда я запускаю скрипт, я вижу на hostA после выполнения xm list:
migrating-test1 17 128 1 ---s-- 9.9
и на hostB я вижу в выводе 'xm list' миграцию домена test1, но через некоторое время он исчезает из этого вывода, потому что сценарий perl завершится ошибкой со следующей ошибкой:
libvirt error code: 42, message: Domain not found: xenUnifiedDomainLookupByName
Я пытался найти какие-то решения, но безуспешно. Я также попытался запустить «xm migrate» с hostA, чтобы перенести домен на hostB, но эта операция также началась, но не завершилась (я понимаю, что при завершении домен будет перенесен с hostA на hostB и останется работать на hostB).
РЕДАКТИРОВАТЬ: нужно ли мне общее хранилище для автономной миграции?
Я узнал, как это работает, через несколько дней после публикации этого вопроса.
Для автономной и динамической миграции необходимо общее хранилище. Поэтому не имеет значения, выполняется ли миграция в автономном режиме или в реальном времени, для обоих типов требуется общее хранилище (например, NFS, ...).
Этот код ошибки libvirt 42 был вызван автономной миграцией без использования общего хранилища. Сценарий попытался перенести домен с hostA на hostB, но скрипт не смог найти этот домен на hostB (автономная миграция не удалась из-за того, что не использовалось общее хранилище), потому что на hostB не было перенесенного домена с hostA.