Начиная с версии 3.1, VirtualBox поддерживает функцию "миграции (teleporting)" -- которая позволяет перемещать виртуальные машины по сети с одного хоста VirtualBox на другой, не прерывая работы машины. Данная возможность не зависит от операционной системы хоста: например, вы можете переносить виртуальные машины между хостами Solaris и Mac.
Для выполнения миграции необходима работающая виртуальная машина на хосте, которую будем называеть "источник" . Хост система на которую мигрирует виртуальная машина будем называть "целевой" ; машина на целевой системе должна быть настроена на ожидание соединения с источником. Тогда работающая виртуальные машины будет перенесена с источника с минимальным временем простоя.
Миграция производится через сеть TCP/IP; для источника и цели необходимо только назначить номера портов TCP/IP, которые указываются в настройках миграции.
В настоящее время, имеется несколько требований для реализации миграции:
На целевом хосте, вы должны настроить виртуальную машину с точно такими же виртуальными аппаратными составляющими как и на источнике. Это не относится к описательным настройкам, таким как наименование ВМ, но очевидно что для работы миграции целевая машина должна иметь такой же размер памяти. В противном случае миграция завершится с ошибкой.
Обе виртуальных машины должны иметь общую систему хранения данных (использовать один и тот же жесткий диск, дисковод и/или образ CD/DVD). Это значит, что они обе должны использовать один iSCSI targets или хранилище виртуальных носителей должны находиться в сети и они обе должны иметь доступ к нему через NFS или SMB/CIFS.
Это означает также, что виртуальная машина-источник и машина-цель не должны иметь снимков состояний.
Далее выполняются следующие шаги:
На целевом хосте, виртуальная машина настраивается на ожидание запроса миграции. Это выполняется командой VBoxManage :
VBoxManage modifyvm <targetvmname> --teleporter on
VBoxManage modifyvm <targetvmname> --teleporterport <port>
где
<targetvmname>
это имя виртуальной машины на целевом хосте, а
<port>
это номер порта TCP/IP используемый обоими хостами. Например, используете 6000. За подробностями обращайтесь к
Раздел 8.7.5, “Настройки миграции”
.
Запустите ВМ на целевом хосте. Вы увидите, что вместо обычного запуска будет показано диалоговое окно выполнения процесса, указывающее что выполняется ожидание поступления запроса миграции.
Как обычно, запустите машину на хосте-источнике . Когда она запустится и вы будете готовы начать миграцию, выполните следующую команду на хосте-источника:
VBoxManage controlvm <sourcevmname> teleport --host <targethost> --port <port>
где
<sourcevmname>
имя виртуальной машины источника (машина которая в настоящее время работает),
<targethost>
имя хоста или IP адрес целевого хоста на котором машина ожидает запроса миграции, а
<port>
должен иметь тот же номер, что и указанный в команде выше для целевого хоста. За подробностями обратитесь к
Раздел 8.11, “VBoxManage controlvm”
.
Для тестирования, вы можете также выполнять миграцию на одном хосте; в данном случае, в качестве имени хоста укажите "localhost" для хоста-источника и хост-цели.
В редких случаях, если процессоры источника и цели сильно различаются, миграция может завершиться с ошибкой, или целевой хост может зависнуть. Это обычно случается если программное обеспечение на ВМ оптимизировано для работы с процессором, без корректной проверки, с предположением того что нужные функции ЦП всегда присутствуют. VirtualBox фильтрует возможности CPU которые предоставлены гостевой ОС. Опытные пользователи могут ограничить эти виртуальные возможности ЦП с помощью команды
VBoxManage --modifyvm --cpuid
; см.
Раздел 8.7.5, “Настройки телепортации”
.