Chinaunix首页 | 论坛 | 博客
  • 博客访问: 821594
  • 博文数量: 94
  • 博客积分: 1767
  • 博客等级: 上尉
  • 技术积分: 1168
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 23:16
个人简介

ha

文章分类

全部博文(94)

文章存档

2014年(2)

2013年(17)

2012年(6)

2011年(15)

2010年(23)

2009年(23)

2008年(8)

我的朋友

分类: LINUX

2010-11-26 18:39:05

本文详细介绍了迁移Xen客户机Domain的两种方式:存储还原法和动态迁移法。前一种方法类似便携式计算机的深度休眠;后一种方式以最少的中断和停机时间来动态改变处于运行状态中的domain的运行位置。一、迁移的准备工作  在进行迁移之前,有一些准备工作要做,主要是目的主机和源主机及其网络方面。下面分别加以介绍。  首先,在源主机和目的主机方面,两者必须都运行有Xen和xend守护进程 。必须确保目的主机具有足够的磁盘空间、内存容量和资源,以供迁移后的domain运行之用。此外,源主机和目的主机还必须具有相同的体系结构和虚拟化扩展,例如,如果源主机使用的是具有虚拟化扩展的x86 -64体系结构的话,目的主机也必须如此。之所以这样做,是为了防止由于内核和用户库使用的指令集不匹配而导致domain迁移之后无法正常工作的情况。  其次,在网络方面,要求源主机和目的主机还必须位于同一子网上。迁移domain时,如果目的地结点位于不同的子网上,那么迁移将会失败,因为该domain的MAC和IP地址也随之迁移。如您运行了防火墙,你可能需要创建相应的iptables规则来准许迁入连接。  再者,迁移时,xend守护进程 会 中止domain在源主机上的运行,接着将其复制到目的主机,然后重新启动该domain 。默认时,xend守护进程从本机接受迁移请求。为了使迁移目标接受来自远程主机的迁入请求,您必须修改目的主机在/etc/xend- config.sxp文件中的xen-relocation-hosts-allow 参数。因为没有提供认证,所以为安全起见您必须限定允许迁移的主机。  下面,我将分别介绍Xen虚拟机迁移的两大方法:存储还原法和动态迁移发。二、存储还原迁移法  存储还原法的过程是这样的:首先,将一个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动态迁移可谓好处多多,先将其主要优点列举如下:  1)Xen的动态迁移随同诸如heartbeat之类的高可用性解决方案一起使用,能给我们带来一个“永不抛锚”的系统。最新版本的Enterprise SuSe Linux Server 和Red Hat Enterprise Linux 也是利用Xen来提供各种高可用性解决方案的。您可以轻而易举的满足各种服务的苛刻要求,同时还能保证所有关键商业服务不会出现中断。  2)它使我们能够以“治未病”方式来维护寄放虚拟机的物理服务器。您可以监视服务器,然后通过转移系统来即时解决潜在的和可疑的问题。  3)它使得在多个服务器之间实现负载均衡 成为可能,使我们能够更好地利用企业中的所有计算资源,使其利用情况达到最佳状态。需要注意的是,Xen的开源版本目前还不支持在dom0上感应到故障时自动进行动态迁移的功能。  4)它使得在需要时向系统配置添加计算能力变得更加轻松。  5)您可以根据需要更换硬件,而无需中断运行在该硬件上的服务。  只知道动态迁移的好处还不够,现在介绍一下具体的使用方法。  具体操作  首先对动态迁移时涉及到的服务器做一下介绍,它们是:  。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的影子了。
阅读(1143) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~