Назад | Перейти на главную страницу

Миграция доменов Xen с использованием libvirt API и сбоя perl

Я пытаюсь выполнить миграцию в автономном режиме, используя 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.