移植是把运行的虚拟域从一台物理主机搬迁到另外一台主机。红帽虚拟化系统支持两种移植方式 — offline 和 live。Offline 移植通过暂停虚拟机、转移内存然后在目的主机上恢复执行的方式把虚拟机从一台主机移到另外一台主机。Live 移植做相同的事情,但不直接影响域。当执行 live 移植时,域继续它平常的活动,从用户的角度来看它并没有值得注意的地方。要初始化一个 live 移植,两台主机都必须运行红帽虚拟化系统以及 xend 守护进程。目的主机必须有足够的资源(如内存)来容纳移植后的域带宽(bandwidth)。源主机和目的主机都必须有相同的体系结构和虚拟化扩展(如 i386-VT、x86-64-VT、x86-64-SVM 等)且必须都位于相同的 L2 子网。
当域在移植时,它的 MAC 和 IP 地址也随之转移。只有具有相同的 layer-2 网络和子网的虚拟机才能成功移植。如果目的节点是在不同的子网里,管理员必须手工地配置在 domain0 的远程节点里的合适的 EtherIP 或 IP 管道。xend 守护进程停止域,然后把它复制到新的节点并重新启动它。除了 localhost (请参阅 /etc/xend-config.sxp 文件),红帽虚拟化系统的 RPM 软件包不启用来自其他任何主机的移植。如果目的主机要接受远程主机的移植请求,你必须修改目的主机的 xen-relocation-hosts-allow 参数。因为没有验证机制,请小心配置允许哪些主机进行移植。
既然这些域涉及如此大的文件分配,这个过程可能会消耗较久的时间。如果你移植带有开放网络连接的域,这些连接将在目的主机上保留,SSH 连接应该仍然可用。缺省的红帽虚拟化系统的 iptables 规则将不允许传入的移植连接。如要允许这种连接,你必须创建显性的 iptables 规则。
你可以使用 xm migrate 命令来执行 offline 移植:
xm migrate domain-id [destination domain]
你可以使用 xm migrate 命令来执行 live 移植:
xm migrate domain-id -l [destination domain]
你可能需要重新连接到新机器的域控制台。你可以使用 xm console 命令来进行重新连接。