2016-12-11 17 views
0

Я могу выполнять трансляцию KVM в реальном времени с одного узла на другой, когда он находится в режиме работы. Но когда я пытаюсь жить, мигрируйте это, когда подчеркивая с другого узла, используя инструмент стресса Кассандры для текущего узла узла Cassandra. Это приводит к сбою со следующим отображением.Невозможно выполнить живую миграцию KVM при наложении приложения cassandra на нее с помощью инструмента для стресса cassandra из узла разностей

Как это исправить?

Unable to migrate guest: operation failed: domain is no longer running 
Traceback (most recent call last): 
File "/usr/share/virt-manager/virtManager/asyncjob.py", line 90, in cb_wrapper 
callback(asyncjob, *args, **kwargs) 
File "/usr/share/virt-manager/virtManager/migrate.py", line 438, in _async_migrate meter=meter) 
File "/usr/share/virt-manager/virtManager/domain.py", line 1488, in migrate 
    self._backend.migrate(libvirt_destconn, flags, None, interface, 0) 

File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1535, in migrate 
    if ret is None:raise libvirtError('virDomainMigrate() failed', dom=self) 
libvirtError: operation failed: domain is no longer running 

ответ

1

Живая миграция должна скопировать все страницы гостевой памяти с исходного хоста на целевой хост. Время, затраченное на это, зависит от доступной пропускной способности сети и в меньшей степени производительности ЦП (если libvirt шифрует данные миграции). Несмотря на то, что это копирование происходит, гость все еще может изменять свою память, поэтому для повторного копирования могут быть скопированы одинаковые страницы памяти за &. Если страницы памяти гостя dirties быстрее, чем QEMU, они могут передавать их по сети, миграция никогда не будет завершена.

Выполнение интенсивных рабочих нагрузок, таких как Cassandra, вполне вероятно, что миграция не завершится. Существует множество опций, которые можно включить, чтобы заставить его работать, но наиболее полезными являются «Auto-конвергенция», которая дросселирует гостевые процессоры для замедления загрузки памяти и «Post copy», которая сразу же переключает гостя на целевой хост и копирует-на-запись, чтобы вытащить страницы из источника.

Post-copy - это наиболее эффективный способ перехода на завершение в течение ограниченного периода времени, но существует небольшой риск полностью потерять виртуальную машину, если исходный хост или сеть разбиваются до завершения копирования. Авто-конвергенция - хороший второй выбор, если пост-копия недоступна в вашей версии KVM, или если вы не желаете взять на себя такой небольшой риск потери копии после копирования.

Я не верю, что вы доступны в virt-manager, поэтому вам придется запускать миграцию, используя virsh, чтобы использовать эти функции.

+0

Я попытался с virsh too.It не работал.Я заменил стресс с помощью cassandra с бесконечной программой цикла, даже она не мигрировала –

+0

Если вы используете «virsh migrate --auto-converge» или «virsh migrate», -postcopy -postcopy-after-precopy ", это гарантирует завершение миграции – DanielB

+0

Спасибо, но я хочу жить мигрировать для эксперимента –