一、迁移的准备工作

在进行迁移之前,有一些准备工作要做,主要是目的主机和源主机及其网络方面。下面分别加以介绍。

首先,在源主机和目的主机方面,两者必须都运行有Xen和xend守护进程。必须确保目的主机具有足够的磁盘空间、内存容量和资源,以供迁移后的domain运行之用。此外,源主机和目的主机还必须具有相同的体系结构和虚拟化扩展,例如,如果源主机使用的是具有虚拟化扩展的x86-64体系结构的话,目的主机也必须如此。之所以这样做,是为了防止由于内核和用户库使用的指令集不匹配而导致domain迁移之后无法正常工作的情况。

其次,在网络方面,要求源主机和目的主机还必须位于同一子网上。迁移domain时,如果目的地结点位于不同的子网上,那么迁移将会失败,因为该domain的MAC和IP地址也随之迁移。如您运行了防火墙,你可能需要创建相应的iptables规则来准许迁入连接。

再者,迁移时,xend守护进程会中止domain在源主机上的运行,接着将其复制到目的主机,然后重新启动该domain 。默认时,xend守护进程从本机接受迁移请求。为了使迁移目标接受来自远程主机的迁入请求,您必须修改目的主机在/etc/xend-config.sxp文件中的xen-relocation-hosts-allow 参数。因为没有提供认证,所以为安全起见您必须限定允许迁移的主机。

下面,我们开始介绍用于迁移domain的第一种方法:存储还原法。

二、存储还原迁移法

存储还原法的过程是这样的:首先,将一个domain的当前运行状态保存到硬盘上的一个文件中,然后,Xend 再利用该文件实现对该domain原状态的还原。其实这与便携式计算机的休眠功能非常相像:休眠时,便携式计算机会保存硬盘状态的映像,然后自动关机。退出休眠时,它会使用保存的磁盘映象将系统还原到之前的运行状态。

本节中,我们为读者介绍如何将一个运行中的domain 保存为一个文件,之后再用它将domain还原到之前的工作状态,至于在哪里还原,既可以在同一个服务器上,也可以在之外的Xen 服务器上。但在将domain 保存成映像文件之前,一定要腾出足以存放该文件的磁盘空间来。

操作过程

好了,下面开始介绍在Xen 服务器上迁移Domain的具体操作步骤。具体要做的是:创建一个Debian domain ,然后将它的状态保存到一个文件,该文件将用于还原这个Debian domain。

1、创建Debian guest domain :

# xm create debian_etch_domU.cfg –c

2、检查该domain的运行是否正常。因为我们给上述的xm 命令提供了-c参数,这将在当前控制台中启动客户机Domain。但是要想检查该Domain是否已经启动,就必须使用另外一个控制台会话。

3、我们将要把这个Domain的当前状态保存到/xen-saved-images 目录,当然也可以保存到您选择的其他目录:

# xm save 1 /xen-saved-images/etch.save    源虚机被关闭

4、保存的Domain会从当前运行的Domain列表中删除,我们可以用xm 命令列出眼下运行的Domain,看看它有没有被删掉。

5、从文件还原保存的Domain:

xm restore /xen-saved-images/etch.save

6、再次执行xm 命令,我们将看到,还原后的Domain又回到当前Domain列表中了。

相关说明

把工作中的Domain的运行状态保存到一个磁盘文件的时候,文件没有经过任何形式的加密,所以恶意用户只要能够访问保存映像文件目录,就能对这些映像做手脚。因此,确保对存放这些映像的文件夹的访问的安全就显得格外重要。

一个Domain的运行状态就是该Domain在被保存时刻的快照或者映像。所有运行中的进程的信息和状态都被存放到这个文件中。 查看该文件时,您会发现这是一个庞大的二进制文件,其大小等于该Domain被保存时所使用的内存量。 因为Xen Domain通常会运行一些企业应用程序,所以这个文件一般小不了,通常都在几GB左右。因此,你必须保证有足够的存储空间来存放这个文件。虽然本例将状态保持到了一个硬盘文件之上,但是您还可以将这个文件存放到一个足够大的网络文件夹上,甚至一个U盘上。将Domain保存到U盘的确不错,这样就可以随身携带,需要时还可以在不同的服务器上将其还原。

我们能够使用xm 命令加restore 选项来还原存储的Domain,这会再次启动该Domain,并将其还原至被保存时的状态。当使用存储还原法时,有一些事项需要时刻注意:因为Domain还原后的ID不同于其保存时刻的Domain ID,所以使用xm 查看还原后的Domain时,一定要注意ID 的变化。虽然Domain被恢复到了原先的状态(被存储时刻的状态),却不能自动连接到该domain的控制台,相反,我们必须显式的运行xm 命令才能连接到控制台。

虽然这种迁移Domain的方式简单易行,但是一定要注意,由于Domain在保存时就已经从活动Domain中删除,所以运行于该Domain上的各种服务也就无法使用或访问了。如果您对于这种业务中断情况无法接受,那么就应该考虑采用在下一节中介绍的Xen 的动态迁移特性

三、动态迁移法

上面,我们介绍了在Xen 服务器上迁移Domain时的存储还原法。虽然这种方法很简单,但是如果您的服务器上有不许中断的关键业务,或者您想最小化业务中断时间,那么您还是不能采用这种迁移方法。

这时,Xen还为我们提供了一种强大的功能就派上用场了,它就是动态迁移法。它能让Domain在运行期间,以最小的服务中断为代价,将Domain迁移到另外的Xen 服务器上。

使用Xen动态迁移可谓好处多多,先将其主要优点列举如下:

·Xen的动态迁移随同诸如heartbeat之类的高可用性解决方案一起使用,能给我们带来一个“永不抛锚”的系统。最新版本的Enterprise SuSe Linux Server 和Red Hat Enterprise Linux 也是利用Xen来提供各种高可用性解决方案的。您可以轻而易举的满足各种服务的苛刻要求,同时还能保证所有关键商业服务不会出现中断。

·它使我们能够以“治未病”方式来维护寄放虚拟机的物理服务器。您可以监视服务器,然后通过转移系统来即时解决潜在的和可疑的问题。

·它使得在多个服务器之间实现负载均衡成为可能,使我们能够更好地利用企业中的所有计算资源,使其利用情况达到最佳状态。需要注意的是,Xen的开源版本目前还不支持在dom0上感应到故障时自动进行动态迁移的功能。

·它使得在需要时向系统配置添加计算能力变得更加轻松。

·您可以根据需要更换硬件,而无需中断运行在该硬件上的服务。

只知道动态迁移的好处还不够,现在介绍一下具体的使用方法。
  要求:
    1. 两者必须都运行有Xen和xend守护进程
    2. 必须确保目的主机具有足够的磁盘空间、内存容量和资源
    3. 源主机和目的主机还必须位于同一子网上
    4. 源主机和目的主机还必须具有相同的体系结构和虚拟化扩展
配置文件:

[root@host1 ~]# vi /etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts- allow '')
再执行: /etc/init.d/xend restart 

具体操作

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

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

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

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

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

⒈ 动态迁移要求共享存储器。现实中,除了第一节所提要求外,对网速的最低要求是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的运行位置。综合使用这两种迁移方法,定能使虚拟化技术的功效更上一层楼

本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2011/11/27/2310350.html,如需转载请自行联系原作者

Xen虚拟机迁移技术相关推荐

  1. 虚拟机迁移技术漫谈(转)

    http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm1/index.html 如何在虚拟机和物理机以及虚拟机和虚拟机之间的迁移系统 虚拟机迁移技 ...

  2. 数据中心内虚拟机迁移带来的网络技术难题

    虚拟机是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统.通过虚拟化软件,用户可以在一台物理服务器上模拟出一台或多台虚拟的服务器,服务器硬件资源经过虚拟化技术变成一个可 ...

  3. 阿里云迁移工具推荐最佳实践:Xen虚拟化迁移到阿里云

    1.迁移需求分析 Xen虚拟化是早期半虚拟化技术,现有部分本地还在使用,像Citrix公司开发的XenServer虚拟化管理平台,底层就是运用的xen虚拟化技术底座,但是目前市场使用比较多的还是开源K ...

  4. 华为云迁移工具推荐最佳实践:Xen虚拟化迁移到华为云

    1.迁移需求分析 Xen虚拟化是早期半虚拟化技术,现有部分本地还在使用,像Citrix公司开发的XenServer虚拟化管理平台,底层就是运用的xen虚拟化技术底座,但是目前市场使用比较多的还是开源K ...

  5. 移动云迁移工具:Xen虚拟化迁移到移动云

    1.迁移需求分析 Xen虚拟化是早期半虚拟化技术,现有部分本地还在使用,像Citrix公司开发的XenServer虚拟化管理平台,底层就是运用的xen虚拟化技术底座,但是目前市场使用比较多的还是开源K ...

  6. 今天,体验了一把Xen虚拟机

    前段时间,接到上海某公司的实习的电话面试,说他们是做xen虚拟机的,并且在邮件中得知他们可以同时让Windows,Linux在同一台计算机上跑起来,听起来好像很让人神往,于是最近忙里偷闲,抽了点时间了 ...

  7. Xen虚拟机两大迁移方法详解

    一.迁移的准备工作 在进行迁移之前,有一些准备工作要做,主要是目的主机和源主机及其网络方面.下面分别加以介绍. 首先,在源主机和目的主机方面,两者必须都运行有Xen和xend守护进程.必须确保目的主机 ...

  8. 利用虚拟机实时迁移技术可以实现服务器的,VMware vMotion虚拟机的实时迁移技术概述...

    vMotion 可在主机之间迁移正在运行的虚拟机,因此进行计划内服务器维护时无需中断应用的使用. 概览 vSphere vMotion 能在实现零停机和服务连续可用的情况下将正在运行的虚拟机从一台物理 ...

  9. xen是服务器虚拟化,xen虚拟化实战系列(十二)之xen虚拟机高可用之在线迁移

    xen虚拟化实战系列文章列表 xen虚拟化实战系列(十三)之xen虚拟机集中管理之convirt 1. 方案背景概述 本文是有对我们一个xen虚拟化生产环境将要改造的一个方案而来,在项目上线初期,没有 ...

最新文章

  1. 零的突破!双非高校教师荣获杰青!曾把自己P成女娲,登上学术期刊封面
  2. FILE操作:删除与需要拷贝文件同名的文件
  3. eclipse打包项目为aar_Eclipse中使用AAR
  4. sqlite随机读取N条记录
  5. Leet Code OJ 102. Binary Tree Level Order Traversal [Difficulty: Easy]
  6. Z-BlogPHP导航主题模版源码 绿色完美版
  7. Dubbo消费者代理的创建
  8. ThinkPHP3.2.3 语言包切换中英文切换
  9. TThread类详解转
  10. Google搜索命令语法大全
  11. 【日常学习】【二叉树遍历】Uva548 - Tree题解
  12. 企业手机装配线平衡改善研究
  13. 收据模板_使用智能收据简化支出报告
  14. windows下的内存型下载者病毒
  15. linux新建目录自动777权限,linux 777权限目录可疑进程检测
  16. r语言library什么意思_汽车自动挡上的P、R、N、D、S、L和M,都表示什么意思?
  17. PHP7底层设计与源码剖析PDF,【PHP7底层设计与源码分析】部分勘误
  18. Atom编辑器折腾记_(22)二次翻译快捷键【追加1.8新版本新增快捷键】
  19. 企业办公oa系统、医药OA办公后台管理、会议管理、用户管理、物料管理、活动管理、日常拜访、Axure医药内部管理平台、web端后台管理系统原型、医药OA系统、权限管理、Axure原型、rp原型
  20. 上海疫情后一个前端的面试心路历程

热门文章

  1. Boost::context模块callcc的无限循环测试程序
  2. boost::callable_traits添加member右值引用的测试程序
  3. Boost:bind绑定的function<>测试程序
  4. Boost:bimap双图lambda表达式的测试程序
  5. Boost:can_queryr的使用测试程序
  6. OpenCV图像监视:在Visual Studio调试器中查看内存中图像
  7. OpenGL绘制带有索引的矩形的实例
  8. QT的QHBoxLayout类的使用
  9. C++对C的加强之 “实用性”增加
  10. C++ Queues(队列)