KVM虚拟机在不同主机之间的迁移,是个复杂的问题,有非常多的解决方案,但是不同的解决方案都有其优点和缺点,下面来分析下当前几种可用的KVM虚拟机迁移的方案。
1. 虚拟机迁移过程中数据的传输(磁盘镜像和内存数据)
  通常有两种常用的数据传输方式:
  — 基于hypervisor的传输机制,即通过host之间连接来进行数据传输
  — 基于libvirtd的传输机制,即两个libvirtd进程之间的数据传输
(1)基于hypervisor的数据传输
       这种传输方式具有最低的overload,因为传输的是裸数据,不支持数据的加密。另外,因为依赖于hypervisor的网络,所以需要对hypervisor networks进行一些特定的配置,比如打开某些端口。
  


(2)基于libvirtd的数据传输
   这种传输方式支持加密,是通过libvirt内建的RPC协议来进行数据的传输的,但是缺点是除了传输裸数据外,还需要传输一些额外的数据,这对镜像尺寸 很大的虚拟机来说是个大问题。优点是由于不依赖与hypervisor network,所以不需要hypervisor对network做过多的配置,仅仅打开某个指定的port即可。


  (2)虚拟机迁移过程中的控制流


 

 带有管理端的直接迁移,这种迁移方式是由一个管理客户端发起,管理客户端完全控制整个迁移流程,所以它必须能够且有权限访问源主机和目的主机上 libvirtd的权限,因为外加一个管理客户端,所以不需要源libvirtd和目的libvirtd之间进行直接的交流,只需要按照管理客户端的指示 来办事就好了。这种方式的优点是:
   If the client application crashes, or otherwise loses its connection to libvirtd during the migration process, an attempt will be made to abort the migration and restart the guest CPUs on the source host. There may be scenarios where this cannot be safely done, in which cases the guest will be left paused on one or both of the hosts


 带有管理端的点对点的迁移,这种迁移方式下,管理客户端至于源libvirtd交互,然后源libvirtd完全控制整个迁移过程。优点是,即使管理客户端挂掉了,迁移还是能正常完成的。

http://blog.chinaunix.net/uid-20940095-id-3616577.html