三、动态迁移法
上面,我们介绍了在Xen 服务器上迁移Domain时的存储还原法。虽然这种方法很简单,但是如果您的服务器上有不许中断的关键业务,或者您想最小化业务中断时间,那么您还是不能采用这种迁移方法。这时,Xen还为我们提供了一种强大的功能就派上用场了,它就是动态迁移法。它能让Domain在运行期间,以最小的服务中断为代价,将Domain迁移到另外的Xen 服务器上。
使用Xen动态迁移可谓好处多多,先将其主要优点列举如下:
·Xen的动态迁移随同诸如heartbeat之类的高可用性解决方案一起使用,能给我们带来一个“永不抛锚”的系统。最新版本的Enterprise SuSe Linux Server 和Red Hat Enterprise Linux 也是利用Xen来提供各种高可用性解决方案的。您可以轻而易举的满足各种服务的苛刻要求,同时还能保证所有关键商业服务不会出现中断。
·它使我们能够以“治未病”方式来维护寄放虚拟机的物理服务器。您可以监视服务器,然后通过转移系统来即时解决潜在的和可疑的问题。
·它使得在多个服务器之间实现负载均衡成为可能,使我们能够更好地利用企业中的所有计算资源,使其利用情况达到最佳状态。需要注意的是,Xen的开源版本目前还不支持在dom0上感应到故障时自动进行动态迁移的功能。
·它使得在需要时向系统配置添加计算能力变得更加轻松。
·您可以根据需要更换硬件,而无需中断运行在该硬件上的服务。
只知道动态迁移的好处还不够,现在介绍一下具体的使用方法。
具体操作
首先对动态迁移时涉及到的服务器做一下介绍,它们是:
·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的影子了。