虚拟机在线迁移研究报告


    虚拟机迁移是指将虚拟机从一台主机(源主机)迁移到另一台主机上运行(目标主机)。虚拟机在物理机之间的迁移分为两种:离线迁移和在线迁移。离线迁移是指在虚拟机关机或者暂停的状态下从一台物理机转移到另一台物理机。在这种情况下只需要拷贝虚拟机镜像、相应的配置文件和虚拟机状态到另一台主机,并在目标主机上恢复运行就可以完成。这种方式实现简单,但是迁移过程中虚拟机需要较长的停机时间,此时其上的服务需要中断。对于要求服务可用性的场合不适用。
    在线迁移在保持虚拟机运行并对外提供服务的同时从一台主机迁移到另一台主机。在线迁移与离线迁移的逻辑步骤几乎是一致的,只是要求迁移过程中仅有短暂的停机时间,用户不会明显的感知到服务的中断,虚拟机上的服务可以正常运行。虚拟机迁移包括磁盘、内存、CPU 状态和I/O 设备。
1.磁盘迁移
    目前主流的虚拟化工具如VMware,Xen,HyperV,KVM 都提供了迁移组件,一般都要求物理机之间采用SAN(storage area network),NAS(network-attached storage)之类的集中式共享外存设备,只需考虑操作系统内存和执行状态的迁移。以Xen 的xenMotion 为例,它采用预拷贝机制,在源虚拟机运行的同时,向目的主机循环的迁移内存页面,同时记录内存脏页面,在下一轮循环中传输脏页面到目的主机。当绝大部分内存同步以后,暂停虚拟机,将最后一轮循环产生的脏页面同步到目的主机。在目的主机上恢复虚拟机运行。但是在一些应用场景中,源主机和目的主机之间没有共享存储设备,本地磁盘数据也必须传输到目的主机,这些外存数据量非常大,是影响虚拟机迁移性能的关键。
    目前主要存在两种外存迁移方式。
1.1.按需取页

    文献[1]采用按需取页策略,首先迁移虚拟机的内存数据和CPU 状态,在迁移过程中,磁盘读写在源节点上进行。当虚拟机在目的主机上恢复运行后,根据读写磁盘的请求,从源节点按需取数据块,并在目的节点缓存。当所有需要的块均被缓存后,在目的节点上即可实现磁盘的本地操作。


                                                                                                           图1.总体结构图(左)和按需获取机制(右)

    如图1 左所示,整个磁盘迁移机制由两部分完成,在源主机和目的主机分别部署一个目标服务器和代理服务器。这两者都是一个网络块设备(NBD)。采用按需获取和后台拷贝机制完成磁盘的迁移工作。迁移工作分为两个阶段进行:
    1.迁移工作开始时,保持虚拟机在源端运行的同时,虚拟机控制器平台调用其内存迁移功能将虚拟机内存状态从源端迁移到目的端。同时后台把磁盘文件透明传输到目的端。所有的I/O 操作在源端进行。

    2.在内存状态传输基本完成后在目的端恢复虚拟机继续运行。所有的I/O 操作通过代理服务器在目的端进行。此时代理服务器开始磁盘迁移工作。I/O 请求被转发给源端的目标服务器,同时相应的块也被拷贝到目的端的本地文件中。当所有的块全部被拷贝到目的端后,停止NBD 连接,虚拟机将不再依赖源端运行。

    按需获取机制如上图所示,a) 当虚拟机要读的位置不在目标端时,代理服务器从源端获取块数据提供给虚拟机使用,并且把它写入本地缓存文件中,当所有的块数据都被传输过来后,把这些缓存文件变成完整的磁盘映像文件,在bitmap结构中标记这个块数据。b)当虚拟机要对某区域进行写操作时,可直接对源端执行写操作,并把它标记为已缓存。c)当虚拟机要读的位置在缓存块中,则直接对缓存块进行操作,无需再从源端获取数据。

     后台拷贝机制是指通过网络将块数据从源端拷贝到目的端。它的优先级低于按需获取机制,以保证最小的I/O 阻塞时间。虚拟机及其中应用对磁盘的I/O 操作具有一定的规律, 即I/O 操作偏移位置具有阶段连续性。



图2.代理服务器实现过程

    如图2 所示,代理服务器通过三个异步队列和四个线程来处理I/O 请求,客户端的I/O 请求(按需获取)处在较高优先级,后台拷贝请求处在校低的优先级。当收到一个客户端的读请求时,代理服务器首先判断请求的区域是否在缓存中,若无,则向远端的目标服务器发送请求。后台拷贝则由一个外部程序控制,以控制传输速度。


1.2 预迁移结合回放的同步方式

    文献[2]提出了预迁移结合回放的同步方式实现外存迁移。首先预迁移虚拟机的外存数据,在此过程中截获所有写外存的请求,包括写数据、写的位置及数据长度,并同时转发到目的主机按序保存。当外存预迁移结束后,在目的主机重做这些写操作.。在内存预迁移过程中发生的写操作同样记录到目的主机的队列中。当虚拟机在目的主机恢复运行后,阻塞磁盘I/O 直到重做完队列中的写操作。


<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值