Xen虚拟机动态迁移法

首先对动态迁移时涉及到的服务器做一下介绍,它们是:

  ·hostA :一个linux NFS 服务器,通过网络为XenDomain提供存储空间。

  ·hostB :一个Xen主机服务器,它使用NFS导出的目录运行一个客户机Domain:Ubuntu Fuwa 。

  ·hostC :一个Xen主机服务器,它是来自hostB 服务器的客户机Domain 即Ubuntu Fuwa 的迁移目的地。

  下图向我们展示了具体配置情况:

Xen虚拟机动态迁移法_第1张图片

  ⒈ 动态迁移要求共享存储器。现实中,除了第一节所提要求外,对网速的最低要求是100MB。为了共享存储器,我们将在我们在上图顶部的Xen主机上建立一个NFS服务器,欲迁移的Domain使用的就是NFS 服务器上的共享存储器空间。

  ⒉ 编辑/etc /exports 文件,加入下面一行来导出存储器目录:

  # /xen-storage *(r,sync,no_root_squash)

  ⒊ 保存文件,并重启NFS 服务器。将NFS 服务器添加到该服务器的服务中,并设为系统重启时运行:

  # service nfs startchkconfig nfs on

  ⒋ 我们将建立两个Xen 服务器,并让他们使用NFS 服务器提供的存储器。为了挂载导出目录,需要为两个Xen 服务器都添加安装点:

  # mount hostB:/xen-storage

  #- mount hostC:/xen-storage

  ⒌ 修改Xend配置文件,以允许动态迁移。编辑/etc/xen/xend-config.sxp 文件,并确保以下两行没有被注释掉:

  (xend-relocation-port 8002)

  (xend-relocation-address '')

  其作用是启动Xen 守护进程,以侦听和响应动态迁移的各种请求。

  ⒍ 建立一个运行在NFS 服务器存储器上的Xen Domain,并在hostB上启动该客户机Domain。并让该客户机Domain使用以下配置:

  cat > /home/pchaganti/xen-images/ubuntu_fuwa_nfs_domU.cfg <<"EOF"

  kernel = "/boot/vmlinuz-2.6.16.38-xenU"

  memory = 256

  name = "ubuntu_fuwa_nfs_domU"

  vif = [ 'ip=192.168.1.111' ]

  nfs_server = '192.168.1.67'

  nfs_root = '/xen-storage'

  root = '/dev/nfs'

  EOF

  ⒎ 现在,我们有了一个运行于hostB的客户机Domain,它使用NFS 导出的目录进行存储。我们可以在hostB上运行下列命令来检查该Domain的运行是否正常:

  ⒏ 接下来,我们将这个客户机Domain动态迁移至hostC 服务器,为此可能需要几分钟的时间。如果迁移失败,会在控制台显示一个指示失败的消息。

  # xm migrate --live ubuntu_fuwa_nfs_domU hostC

  ⒐ 以上就是将正在运行的Domain动态迁移至另一个Xen 服务器的全部工作!现在使用xm命令来显示当前运行于hostB 和hostC 这两个服务器上的Domain,您将发现,所迁移的Domain目前只能在hostC 服务器上找到,列出的正在hostB服务器上运行的Domain中已经找不到被迁移的Domain的影子了。

  相关说明

  动态迁移就是在“带电”情况下,将一个虚拟机从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。

  需要注意的是,要想改变Domain的运行地点,必须修改默认的Xend配置文件。此外,要使所做的修改在主机上生效,必须重新启动Xen 服务器所在的主机。 我们需要修改以下配置:

  ·Xend-relocation-server :该标志用于启用/取消服务器迁移功能。默认时,该标志设为no ,即不允许改变服务器的位置。在迁移过程中,Domain虚拟内存将变成未经任何加密的原始形式。所以,在不可信的网络上启用该选项时一定要倍加小心。

  ·Xend-relocation-port :xend守护进程通过该端口进行迁移。这个端口的缺省值是8002。

  另外,还有两个无需修改的参数,当在企业部署环境进行迁移时也要注意一下:

  ·Xend-relocation-address :该标志将Domain的迁移限制到特定的接口上。指定的地址是侦听用于Domain迁移的入局连接的接口地址。只有启用xend-relocation-server参数后,才会用到这个标志。

  ·Xend-relocation-hosts-allow:这个标志定义了允许跟迁移端口进行通信的主机。其值为一个由空格分隔的正则表达式序列。如果该值为空,那么将允许全部输入连接,否则,该值要么与一个IP地址相匹配,要么与一个完整域名相匹配。

  事实上,从hostB到hostC的迁移过程,是分为多个阶段进行的,如下所示:

  第一阶段:迁移之前。

  这时,Fuwa Domain运行于hostB,并且是一个活动的Domain。

  第二阶段:预定。

  在hostB上发出一个迁移请求,然后检查和确认在hostC上可用的资源。然后,Xend在hostC上按照所需的尺寸准备一个VM容器。如果Xend无法在hostC上获得所需的资源,那么一切就此结束。该Domain依旧运行在hostB上,就像什么事情也没发生一样,此次迁移尝试就此放弃。

  第三阶段:重复预拷贝。

  先将所有内存页面从hostB传送到hostC,然后继续传输在先前传送过程中发生变化的页面。最终,所以页面都被拷贝到hostC。

  到第三阶段为止,Fuwa Domain仍然正常运行于hostC之上。

  第四阶段:中止并拷贝。

  在hostB上运行着的Domain被挂起,其所有网络流量也被重定向至hostC。这个阶段结束后,除了在hostB上有一个挂起的Domain外,hostB上还有了这个被挂起的Domain的副本。这时,hostB上被挂起的Domain还可以作为原始副本,万一这一步失败,它还能在hostB上恢复运行。

  第五阶段:交付。

  如果这一步没有错误或失败的话,hostC会向hostB发送一个指示信息,指出它已经拥有了一个跟hostB完全一致的Domain映像。现在,hostB将从它的Xen 服务器中删除该Domain。从这时起,hostC将成为这个Domain的第一宿主机。

  在第四阶段至第五阶段期间,Fuwa Domain处于停机状态。

  第六阶段:激活。

  在hostC上激活被迁移的Domain。该Domain内部的全部设备驱动程序现在关联至新的机器上。至此,Fuwa Domain又在hostC上复活了。

  这些步骤都是在幕后进行的,正是这一系列默默无闻的操作,才使得迁移能够如此平稳的和无缝的过渡!

  四、结束语

  本章我们研究了迁移Xen客户机Domain的两种方式:存储还原法和动态迁移法。前一种方法类似便携式计算机的深度休眠,它先将捕获的domain运行状态作为映像存放在磁盘上,之后再用该映像对这个domain 进行还原。后一种方式以最少的中断和停机时间来动态改变处于运行状态中的domain的运行位置。综合使用这两种迁移方法,定能使虚拟化技术的功效更上一层楼。

你可能感兴趣的:(虚拟化技术)