Xen虚拟机的详细迁移步骤详解

对于安装使用xen虚拟机大家已是很熟悉的操作了,但有些对于xen migrate的操作有的还不太熟悉。想要了解的朋友可以参考一下。

一、迁移的准备工作

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

首先,在源主机和目的主机方面,两者必须都运行有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的运行位置。综合使用这两种迁移方法,定能使虚拟化技术的功效更上一层楼。

(0)

相关推荐

  • Xen虚拟化基础篇第1/2页

    一.xen的简介 Xen是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达128个有完全功能的操作系统. 在旧(无虚拟硬件)的处理器上执行Xen,操作系统必须进行显式地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性).这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化. Xen的架构如图: Xen虚拟机的组成: Xen Hypervisor:         虚拟化技术通过在现有平台(机器)上添加一层薄的虚拟机监控程序(Virtual Machi

  • XenServer 虚拟机扩容LVM磁盘分区的方法

    说明:XenServer里面安装的虚拟机,分区的时候采用的是LVM磁盘分区 需求:现在需要扩容虚拟机根分区/ 具体操作: 一.使用XenCenter增大虚拟机磁盘容量,如下图所示 增大当前磁盘到50GB 注意:必须在虚拟机关机状态下进行 二.查看硬盘容量 df -h #可以看到此时根分区还是12G,没有变化 fdisk -l #已经可以看到整个磁盘容量变为53.6GB了 三.创建新的磁盘分区 fdisk /dev/xvda #对磁盘/dev/xvda进行操作 p #查看当前分区 n #创建新分区

  • 使用xenocode代码混淆加密的操作步骤

    步骤如下: 1.选中Application标签 2.点击Add按钮,加载要混淆的Dll.Exe文件 3.如果是Dll文件则选中Preset列表框中的第二项,反之选中第一项 4.点击Apply按钮 5.选中Protect标签 6.点击Select   String按钮进行设置 8.点击Bulid Application按钮完成混淆工作 从网上了解到,凡是需要序列化成二进制的代码,是不能用混淆器的.混淆后的代码将不能正常序列化.

  • XenServer 6.5 安装配置图文教程

    废话少说,直接上马 首先下载好xenserver6.5的iso镜像文件,物理机就刻盘安装,虚拟机就直接使用iso镜像安装 XenServer6.5下载地址:http://www.jb51.net/softs/391981.html 1.安装界面 2.键盘模式选择默认-美式,ok 3.这里提醒你安装将清除磁盘信息,做好备份,ok 4.想什么呢,当然是Accept了 5.服务器的CPU没有开启虚拟化,请开启虚拟化后继续 6.选择安装在本地硬盘,第一项,ok 7.安装介质选择本地光盘,第一项,ok 8

  • CentOS 5.X xen虚拟机的安装配置及基本使用

    CentOS 5.X下安装配置xen虚拟机及基本使用 1.前提需求 1.1.简介 Xen是以GNU的GPL授权发布的自由软件,目的在于提供高效能.可支援不同操作系统同时运行且各个操作系统之间彼此相互独立的系统环境,Xen是基于X86架构开发出来的虚拟机控制器(Virtual Machine Hypervisor).Xen虚拟化包括两种虚拟化方式,半虚拟化(Para-virtualization)和全虚拟化(Fully-virtualization).这两种虚拟化都需要cpu的支持.半虚拟化的架构

  • Xen虚拟化进阶篇 Xen平台下虚拟机的实时迁移

    Xen的虚拟机的实时迁移简介 Xen为我们提供了一种强大的功能,它就是动态迁移法.它能让Domain在运行期间,以最小的服务中断为代价,将Domain迁移到另外的Xen 服务器上. 使用Xen动态迁移的主要优点列举如下: 1.Xen的动态迁移随同诸如heartbeat之类的高可用性解决方案一起使用,能给我们带来一个"永不抛锚"的系统.最新版本的Enterprise SUSE Linux Server 和Red Hat EnterpriseLinux 也是利用Xen来提供各种高可用性解决

  • Xen虚拟机在CentOS系统中的安装和使用方法

    一.原理讲解 虚拟化的概念:将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU.内存.磁盘.I/O等硬件变成可以动态管理的"资源池",从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力--------这就是服务器的虚拟化. XEN是目前Linux上的最佳的虚拟化解决方案,特别适合于服务器应用,如用于将多个服务器合并到一台物理服务器上,以节省运营成本(机房空间.电力消耗):或者是出于安

  • Citrix XenServer 6.1 的安装与配置方法

    一.XenServer 6.1简介 Citrix XenServer服务器虚拟化系统通过更快的应用交付,更高的IT 资源可用性和利用率,让数据中心变得更加灵活.高效.XenServer 在提供了关键工作负载(操作系统.应用和配置)所需的先进功能的同时,不会牺牲大规模部署必需的易于操作的特点.利用独特的流技术,XenServer可通过虚拟或物理服务器快速交付各种工作负载,成为企业每台服务器的理想虚拟化平台. 而在2012年10月17日,北京--思杰公司日前宣布推出业界领先的企业级虚拟化平台XenS

  • Xen虚拟机的详细迁移步骤详解

    对于安装使用xen虚拟机大家已是很熟悉的操作了,但有些对于xen migrate的操作有的还不太熟悉.想要了解的朋友可以参考一下. 一.迁移的准备工作 在进行迁移之前,有一些准备工作要做,主要是目的主机和源主机及其网络方面.下面分别加以介绍. 首先,在源主机和目的主机方面,两者必须都运行有Xen和xend守护进程.必须确保目的主机具有足够的磁盘空间.内存容量和资源,以供迁移后的domain运行之用.此外,源主机和目的主机还必须具有相同的体系结构和虚拟化扩展,例如,如果源主机使用的是具有虚拟化扩展

  • asp.net mvc CodeFirst模式数据库迁移步骤详解

    利用Code First模式构建好基本的类后,项目也开始搭建完毕并成功运行,而且已经将数据库表结构自动生成了. 但是,我有新的类要加入,有字段需要修改,那怎么办呢,删库,跑路 ? 哈哈 利用数据库迁移,将原有结构不改动,将新建类进行单独建表操作,或者是已有数据库表,改变字段,那就修改表. 迁移步骤: 1.打开程序包管理器控制台:工具->NuGet包管理器->程序包管理器控制台.(当然还有其它方式也可以打开,我比较喜欢这种) 点击后将弹出程序包管理器控制台 极其要注意的是默认项目!!! 2.启动

  • Git 2.27.0详细安装步骤详解

    Git 最新版 2.27.0详细安装,感兴趣的朋友参考下吧. 1.下载 进入官网 https://www.git-scm.com/download www.git-scm.com 根据自己的系统选择 进行下载 2.安装 根据如下步骤 安装完毕!加油吆青年 总结 到此这篇关于Git 2.27.0详细安装步骤的文章就介绍到这了,更多相关Git 2.27.0详细安装内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • 解析dedecms空间迁移步骤详解

    1.在新空间重新安装一次原版本的DEDECMS,然后把旧站的所有数据,这里的数据指的是文件,即除了根目录下文件夹include下的配置文件config_base.php外的所有文件覆盖到新空间下 2.在旧网站后台系统管理-数据备份哪里备份数据,这里的数据指的是DEDECMS自己后台所采取的备份文件,类似用phpmyadmin等工具所作的备份.备份完成后,DEDECMS会将备份文件放到根目录下的dede目录(默认是dede,如果你修改了,就是你修改后的目录)下的backup_data文件夹里面,你

  • 使用VMware 15 安装虚拟机和使用CentOS 8的步骤详解

    前言: 最近在学习Linux和.Net Core,学习一些跨平台的知识.首先我用的虚拟机软件是VMware-15.1.0,Linux系统是CentOS-8-x86_64-1905-dvd1. 一.安装VMware 15.0 首先从网上下载该软件,安装比较无脑就不多做介绍了. 二.安装Linux系统 1. 打开上一步安装VM软件,看到如下图界面 2. 点击新建,会弹出新建虚拟电脑弹窗,选择典型就行,如果有需要可以选择自定义. 3. 设置安装程序光盘/镜像文件,可以选择稍后安装操作系统, 4 . c

  • 使用git迁移Laravel项目至新开发环境的步骤详解

    对于如何创建一个Laravel项目,相信对新接触Laravel的朋友并不存在太多的问题,但是今天我们要来看一下如何将已有的Laravel项目迁移(复制)到新的开发环境. 我们需要用到的工具是git,如果你不知道git是什么,这里有一个传送门,看完之后再回来: http://github.com 简单说来,git就是Github开发的VCS(Version Control System),即版本控制系统.如果你使用过SVN,那么你应该很清楚版本控制是什么. 本文的示例环境是Ubuntu 16.04

  • Docker新手实践及部署NGINX的步骤详解

    docker是什么 官方文档入口 在知乎上看到关于docker的思想讲的挺好的:如何通俗解释Docker是什么?.这里直接引用了. Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响.那么我就不需要专门运送水果的船和专门运送化学品的船了.只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走. docker就是类似的理念.现在都流行云计算了,云计算就好比大货轮.docker

  • java 中JDBC连接数据库代码和步骤详解及实例代码

    java 中JDBC连接数据库代码和步骤详解 JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤:  1.加载JDBC驱动程序:  在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(Class

  • python的mysqldb安装步骤详解

    python的mysqldb安装步骤详解 安装MySQLdb: 一. 什么是MySQLdb? 解释:MySQLdb是Python操作MySQL的一个接口包.这里要理解一个概念,python操作数据库,都是需要一个类似MySQLdb这样的中间层,这些中间层抽象了具体的实现,提供了统一的API供开发者使用. 二. 如何安装MySQLdb? python2环境下: sudo pip install MySQL-python. MySQL-python目前暂时还不支持python3,有些小问题,可以安装

  • Centos中root密码重置的实现及步骤详解

    Centos中root密码重置的实现及步骤详解            在虚拟机安装了Centos,今天要开机却忘记了密码,于是开始上网查找重新设置的方法,经过实验操作,确实有效,现将方法记录如下: 1.开机后按"e",进入编辑选择,如图: 2.然后再按"e",进入另外一个选择框: 3.选择第二项,然后在按"e". 4.在后入输入" single" , 记住有个空格,然后回车.又出现了下面的选择框. 5.这时候选择第二项,然后输

随机推荐