Миграция — перенос виртуальной машины с одного узла кластера над другой. Миграция выполняется полностью средствами libvirt. Для успешного переноса на узле-источнике и узле-приёмнике должны быть одинаковые версии QEMU-KVM и virsh.

При миграции виртуальной машины с локальным хранилищем копируется память и копируется диск. Форматы хранилища-источника и хранилища-приемника должны совпадать (RAW или Qcow2).

При миграции виртуальной машины с сетевым хранилищем копируется только память, а диск подключается к узлу кластера, на который осуществляется миграция. Виртуальная машина с сетевым диском при обычной миграции или миграции со статусом "остановлена" переносится, как правило, за несколько минут.

Типы миграции


Существует два типа миграции:

  • живая миграция — используется, как правило, для переноса неактивно используемых виртуальных машин и в случае использования локального хранилища — с небольшим размером диска. Виртуальная машина доступна и продолжает работать в течение процесса переноса. 
  • миграция остановленной виртуальной машины  — выполняется, если перед началом миграции статус виртуальной машины — "остановлена". Используется, как правило, для переноса виртуальных машин с большим размером диска.

Алгоритм живой миграции виртуальной машины:

  1. Копируется XML-описание виртуальной машины на сервер назначения;
  2. Выполняется перенос диска виртуальной машины:
    1. Если диск в локальном хранилище, он копируется на сервер назначения;
    2. Если диск в сетевом хранилище, он подключается к серверу назначения.
  3. Во время переноса QEMU периодически проверяет состояние виртуальной машины и, если данные изменились, то скопированные данные переписываются на изменённые. Если виртуальная машина активно используется и данные постоянно меняются, из-за чего миграция не может быть завершена, то через некоторое время виртуальная машина приостанавливается и миграция завершается;
  4. Виртуальная машина удаляется на старом сервере;
  5. Виртуальная машина запускается на новом сервере.

Алгоритм миграции остановленной виртуальной машины:

  1. Копируется XML-описание виртуальной машины на сервер назначения;
  2. Выполняется перенос диска виртуальной машины:
    1. Если диск в локальном хранилище, он копируется на сервер назначения;
    2. Если диск в сетевом хранилище, он подключается к серверу назначения.
  3. Виртуальная машина удаляется на старом сервере;
  4. Виртуальная машина запускается на новом сервере.

Обратите внимание!

В случае живой миграции активно используемой виртуальной машины, процесс переноса может занимать продолжительное время и приводить к потере данных.

Живая миграция может быть прервана, если во время выполнения процесса переноса произойдет перезагрузка виртуальной машины. В таком случае миграция завершится, а виртуальная машина останется на исходном узле кластера.

Обратите внимание!

Если ВМ находится в сетевом хранилище, при миграции её снапшоты будут удалены.

Запуск миграции


Нажмите Управление → Виртуальные машины → Миграция, чтобы мигрировать виртуальную машину.

Укажите:

  • Сервер назначения — узел кластера для миграции. По умолчанию — "автоматически". При автоматическом выборе VMmanager определяет узел кластера с наибольшей свободной оперативной памятью. Узел не должен иметь зарегистрированных проблем со связью, libvirt и NFS. Если автоматически выбран узел, с которого мигрирует виртуальная машина, то перенос не будет выполняться;
  • Живая миграция — опция живой миграции.

Состояние миграции


После подтверждения указанных данных начинается процесс миграции. В статусе виртуальной машины появится иконка:

Отмена миграции виртуальной машины осуществляется по нажатию данной иконки.