Живая миграция относится к процессу перемещения работающей виртуальной машины или приложения между разными физическими машинами без отключения клиента или приложения. Память, хранилище и сетевое подключение виртуальной машины передаются с исходной гостевой машины на место назначения.
Два метода перемещения состояния памяти виртуальной машины из источника к месту назначения - это миграция памяти перед копированием и миграция памяти после копирования.
При миграции памяти перед копированием Гипервизор обычно копирует все страницы памяти из источника в пункт назначения, пока виртуальная машина все еще работает на источнике. Если некоторые страницы памяти изменяются (становятся «грязными») во время этого процесса, они будут повторно скопированы до тех пор, пока скорость повторного копирования страниц не превысит скорость загрязнения страницы.
После фазы прогрева виртуальная машина будет остановлена на исходном хосте, оставшиеся грязные страницы будут скопированы в место назначения, а виртуальная машина будет возобновлена на целевом хосте. Время между остановкой виртуальной машины на исходном хосте и возобновлением ее работы в месте назначения называется «временем простоя» и варьируется от нескольких миллисекунд до секунд в зависимости от размера памяти и приложений, запущенных на виртуальной машине. Существует несколько методов сокращения времени простоя динамической миграции, например использование функции плотности вероятности изменения памяти.
Миграция ВМ после копирования инициируется путем приостановки ВМ у источника. Когда виртуальная машина приостановлена, минимальное подмножество состояния выполнения виртуальной машины (состояние ЦП, регистры и, необязательно, невыгружаемая память) передается целевому объекту. Затем виртуальная машина возобновляет работу на целевой машине. Одновременно с этим источник активно проталкивает оставшиеся страницы памяти виртуальной машины к целевой - действие, известное как предварительная подкачка. На целевой машине, если виртуальная машина пытается получить доступ к странице, которая еще не была передана, она генерирует отказ страницы. Эти сбои, известные как сбои сети, улавливаются на цели и перенаправляются источнику, который отвечает страницей с ошибкой. Слишком большое количество сетевых сбоев может снизить производительность приложений, работающих внутри виртуальной машины. Следовательно, предварительный поисковый вызов может динамически адаптировать порядок передачи страниц к сетевым сбоям, активно проталкивая страницы в непосредственной близости от последней ошибки. Идеальная схема предварительного разбиения на страницы могла бы замаскировать большую часть сетевых ошибок, хотя ее производительность зависит от шаблона доступа к памяти рабочей нагрузки виртуальной машины. После копирования каждую страницу отправляет по сети ровно один раз. Напротив, предварительная копия может передавать одну и ту же страницу несколько раз, если страница неоднократно загрязнялась в источнике во время миграции. С другой стороны, предварительная копия сохраняет актуальное состояние виртуальной машины в источнике во время миграции, тогда как при посткопировании состояние виртуальной машины распределяется как по источнику, так и по месту назначения. Если место назначения выходит из строя во время миграции, предварительное копирование может восстановить виртуальную машину, а посткопирование - нет.
Когда простой виртуальной машины во время динамической миграции не заметен для конечного пользователя, это называется плавной динамической миграцией. Бесшовная живая миграция зависит от структуры динамического интерфейса, подчиняющей процесс протоколам шифрования с отложенной последовательностью.