1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-stratovirt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
migration.md 8.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 4 месяцев назад 123faeb

Миграция в реальном времени

Введение

Миграция виртуальной машины в реальном времени — ключевая функция, предоставляемая StratoVirt. Она необходима для выполнения миграции виртуальной машины при возникновении следующих ситуаций:

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

Транспорты

Поток миграции может быть передан через любой из следующих транспортов:

  • миграция в режиме TCP: использование TCP-сокетов для выполнения миграции;
  • миграция в UNIX-режиме: использование UNIX-соклетов для выполнения миграции.

Примечание: UNIX-режим поддерживает миграцию только двух виртуальных машин на одном хосте ОС. Режим TCP поддерживает миграцию как на одном, так и на разных хостах ОС.

Миграция

Запустите исходную виртуальную машину:

./stratovirt \
    -machine q35 \
    -kernel ./vmlinux.bin \
    -append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \
    -drive file=path/to/rootfs,id=rootfs,readonly=off,direct=off \
    -device virtio-blk-pci,drive=rootfs,id=rootfs,bus=pcie.0,addr=0 \
    -qmp unix:path/to/socket1,server,nowait \
    -serial stdio \

Запустите целевую виртуальную машину:

./stratovirt \
    -machine q35 \
    -kernel ./vmlinux.bin \
    -append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \
    -drive file=path/to/rootfs,id=rootfs,readonly=off,direct=off \
    -device virtio-blk-pci,drive=rootfs,id=rootfs,bus=pcie.0,addr=0 \
    -qmp unix:path/to/socket2,server,nowait \
    -serial stdio \
    -incoming tcp:192.168.0.1:4446 \

Примечание:

  • Параметр командной строки целевой виртуальной машины должен соответствовать исходной виртуальной машине.
  • Если необходимо изменить передачу данных с сетевого протокола TCP на UNIX-сокет, параметр -incoming tcp:192.168.0.1:4446 необходимо заменить на -incoming unix:/tmp/stratovirt-migrate.socket.
  • Протокол UNIX-сокета поддерживает миграцию только двух виртуальных машин на одной хост-ОС.

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

$ ncat -U path/to/socket1
<- {"QMP":{"version":{"StratoVirt":{"micro":1,"minor":0,"major":0},"package":""},"capabilities":[]}}
-> {"execute":"migrate", "arguments":{"uri":"tcp:192.168.0.1:4446"}}
<- {"return":{}}

Примечание:

  • При использовании протокола UNIX-соклета для миграции виртуальной машины необходимо изменить команду QMP "uri":"tcp:192.168.0.1:4446" на "uri":"unix:/tmp/stratovirt-migrate.socket".

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

Отмена миграции

Если вы хотите отменить миграцию в реальном времени, выполните следующую команду:

$ ncat -U path/to/socket1
<- {"QMP":{"version":{"StratoVirt":{"micro":1,"minor":0,"major":0},"package":""},"capabilities":[]}}
-> {"execute":"migrate_cancel"}
<- {"return":{}}

Запрос состояния миграции

Используйте команду QMP query-migrate, чтобы проверить состояние миграции:

$ ncat -U path/to/socket
<- {"QMP":{"version":{"StratoVirt":{"micro":1,"minor":0,"major":0},"package":""},"capabilities":[]}}
-> {"execute":"query-migrate"}
<- {"return":{"status":"completed"}}

В настоящее время существует 5 состояний во время миграции:

  • None: ресурс не подготовлен полностью.
  • Setup: ресурс настроен, готов к миграции.
  • Active: в процессе миграции.
  • Completed: миграция завершена.
  • Failed: миграция не удалась.
  • Canceled: миграция отменена.

Ограничения

Поддержка миграции типов машин:

  • q35 (на платформе x86_64);
  • virt (на платформе aarch64).

Некоторые устройства и функции пока не поддерживают миграцию:

  • vhost-net;
  • vhost-user-net;
  • устройства vfio;
  • balloon;
  • mem-shared,backend file of memory;
  • pmu;
  • sve;
  • gic-version=2.

Атрибуты некоторых устройств не могут быть изменены:

  • virtio-net: mac;
  • virtio-blk: файл (только обычный файл или копирование файла), serial_num;
  • device: шина, адрес;
  • smp;
  • m.

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

Перед «живой» миграцией: — исходный и целевой хосты должны использовать одинаковую архитектуру процессоров; — образ виртуальных машин должен быть общим для исходного и целевого хостов; — «живая» миграция может завершиться ошибкой, если виртуальная машина выполняет операции жизненного цикла, такие как перезагрузка или выключение. — команда для запуска виртуальной машины должна быть одинаковой на исходном и целевом хостах.

Во время «живой» миграции: — нельзя разрывать соединение между исходной и целевой сетями; — запрещено выполнять операции жизненного цикла виртуальной машины, включая использование команд QMP и выполнение операций внутри виртуальной машины. — на время «живой» миграции влияют производительность сети, общий объём памяти виртуальной машины и приложений.

После «живой» миграции: — необходимо дождаться освобождения ресурсов исходной виртуальной машиной перед тем, как повторить операцию «живой» миграции.

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openeuler-stratovirt.git
git@gitlife.ru:oschina-mirror/openeuler-stratovirt.git
oschina-mirror
openeuler-stratovirt
openeuler-stratovirt
master