vmwar 和 IBM 虚拟机实时迁移技术
来源:互联网 发布:战舰世界乌达洛伊数据 编辑:程序博客网 时间:2024/06/08 18:09
出处:pconline 2009年06月30日 作者:小蚁 责任编辑:heyaorong 虚拟化正在改变人们对计算机的认识,说起虚拟化,VMotion估计是给人印象深刻的诸多亮点中的一个。VMware公司一直在虚拟化技术中占据领先的地位。因此VMware VMotion就好像站在了VMware这个巨人的肩膀上一样,在实时迁移技术领域,立于高峰之巅。 VMware VMotion概述 VMware VMotion能够在两台正在运行的服务器之间进行实时迁移,具有零停机性能,能够大幅度提高了服务器的可用性,保证交易数据的完整性。VMotion是创建动态,自动优化数据中心的关键因素,对完善服务器虚拟化,存储器虚拟化和网络虚拟化等技术产生重大的影响。 VMware VMotion的功能 对于服务器管理员来说,VMotion允许管理员:1、在资源库中不断地自动分配虚拟机;2、在不中断业务运作的情况下进行各项维修工作,从而令服务器获得最高的可用性。 对于用户来说,VMotion允许用户:1、自动优化和分配资源库,从而大大地提高了硬件的利用率,灵活性和可用性。2、进行定期的硬件设备维护操作,但却不需要预先设定停机时间。3、在服务器发生故障或者表现不佳之前,进行迁移。 VMotion中运用的技术 VMotion从一台物理服务器将虚拟机迁移到另外一台虚拟机要用到下述三项技术: 1. 虚拟机的全部状态信息被压缩在一套存储于共享存储器的文件中。作为载体的存储器类型可以是光纤通道(Fibre Channel),iSCSI存储区域网络(iSCSI Storage Area Network,SAN)或者网络附加存储器(Network Attached Storage,NAS)。VMware的群集虚拟机系统(VMFS)允许多台ESX服务器同时访问同一个虚拟机文件。 2. 虚拟机的动态内存和执行状态在一个高速的网络上进行快速传输,允许虚拟机即时地在源ESX服务器和目标ESX服务器之间进行信息交换。在迁移过程中,VMotion只是在点阵图里对信息交换进行监控,所以整个转移过程对用户来说是透明的。一旦整个内存和系统状态全部复制到目标ESX服务器中,VMotion就会自动终止源虚拟机,同时将点阵图转移到目标ESX服务器中,并在目标ESX服务器中重新启动虚拟机。上述整个操作假如是在一个千兆以太网络中进行,那么不用两秒的时间就可以完成。 3. 虚拟机使用的网络同样也会被目标ESX服务器虚拟化,确保在实时迁移之后,虚拟机的网络身份和连接能够得到保留。VMotion将MAC地址作为进程的一部分来进行管理。一旦目标机被激活,VMotion会检查网络路由器来确保它能识别虚拟机MAC地址新的物理位置。由于虚拟机使用VMotion来进行实时迁移,它的执行状态,网络身份和动态链接都能够得到保护,所以对于用户来说,整个迁移过程并没有引起服务器停机或者网络中断。 VMware VMotion的关键特点 可靠性:自从2004年推出了该产品之后,在成千上万的用户的支持下,VMotion一直不断地为最可靠的实时迁移性能调整标准。 高可用性:最终用户无法觉察到实时迁移所带来的服务器的停机。CPU和网络资源的最大利用确保了实时迁移迅速和有效地进行。 互操作性:无论虚拟机运行在什么操作系统上,实时迁移都可以在任何类型的硬件设备和网络上进行,只要VMware ESX服务器支持该设备和网络。支持由管线通信连接的存储区域网络(SAN)。实行的实时迁移的虚拟机利用带宽高达4GB的光纤通道连接的存储区域网络系统(SAN)。 支持网络附属存储(NAS)和iSCSI的存储区域网络(SAN)。实行实时迁移的虚拟机花费更低的成本,使用更容易管理的存储器。可自定义的CPU兼容性设置。确保虚拟机可以在不同版本的硬件设备上进行迁移,以便虚拟机可以永远处于最新的CPU革新浪潮之中。 易操作:迁移向导。通过迁移向导提供的即时信息,可以为一台虚拟机快速辨别最好的转移对象。 多个并行迁移。在整个IT工作环境中,进行多个并行迁移,来持续不断的优化虚拟机的布局。 优先等级。为每一个实时迁移操作分配一个优先等级,确保当前最需要进行的迁移可以及时反问它们所需要的资源。 安排迁移任务。在每个预定好的时间点上,不需要管理员在场启动,迁移就能够自发进行。 迁移检查追踪。每次迁移都有一份详细的操作报告,包括日期/时间和管理程序初始化迁移的回复信息。 VMotion的具体操作 使用VMotion进行实时迁移允许虚拟机在不中断工作进程的情况下进行。虚拟机的所有状态信息连同它的配置文件都会被迁移到新的主机上。然而与之相连接的虚拟磁盘将会保留在两主机共享的存储器中。在虚拟机的状态信息全部钱一到替换的主机上之后,虚拟机就可以在新的主机上运行了。 需要迁移的状态信息包括当前的内存内容以及所有能够定义和识别该虚拟机的信息。其中,内存信息包括交换数据,操作系统的位数以及存储在内存中的应用程序。而虚拟机的定义和识别信息包括所有映射到虚拟机硬件上的数据,比如BIOS,设备,CPU, 网卡的MAC地址 ,芯片的设置状态等。另外,作为替换的主机还必须满足兼容性要求。 使用VMotion来进行实时迁移一般要经历下述三个步骤: 1. 当VMotion收到实时迁移的请求时,vCenter服务器就会检查当前主机上的虚拟机是否处于稳定的状态。 2. 假如VMotion通过了实时迁移请求,那么虚拟机的所有状态信息(包括内存,注册表和网络连接)就会被复制到目标主机上。 3. 信息复制完毕之后,虚拟机将在新的主机上重新启动,投入运作。 如果在迁移过程中发生了错误,那么虚拟机将会自动恢复到原来的状态和位置。 vSphere 4中的VMotion 近日,VMware公布了新一代服务器虚拟化软件,其产品名称由VMware Infrastructure 3改为VMware vSphere 4,这表明了VMware对于服务器虚拟化已经从一个虚拟化的基础平台,走向一个由虚拟化建构起来的资料中心。VMotion在vSphere 4中也得到了很大的改进。最明显的特点就是能够将一台正在运行的虚拟机从一台物理ESX主机上迁移到一台虚拟ESX主机上。 从ESX 3.5升级到vSphere 4的过程中,ESX 3.5的VMotion可以不需要做任何改变就也可适用于vSphere 4。但是,如果使用的是不同的处理器芯片,并且还需要开启以太网虚连接(EVC),那么就需要做一点小变动,而且EVC的连接可能还会有停机的危险。另外,vSphere 4的VMotion却无法兼容ESX 3.5版本的主机。 Storage VMotion Storage VMotion功能只存在于ESX 3.5和vCenter 2.5以及以上版本。是ESX系列的一个重要的改进。很到人可能会以为Storage VMotion是VMotion中的一项功能,事实上并非如此,两者其实是并行的。VMotion针对的是服务器中虚拟机的迁移,而Storage VMotion针对的是虚拟机中存储信息的迁移,主要是移动虚拟机的个人主目录,配置文件(vmx),日志,交换文件(VSWP),快照,磁盘或者逻辑硬盘(vmdk),操作系统磁盘,数据盘以及所有跟该虚拟机相关的文件。 Storage VMotion的性能要求 Storage VMotion的性能要求要比VMotion严格得多: 安装带有VMware VMotion 许可证的VMware vCenter;VMware VMotion在ESX服务器上必须被激活并且进行了适当的配置(可以参考VMware管理员基础指南)。 1. 虚拟机不能使用任何VMotion禁用的设备(比如软盘,CD-ROM)。 2. Storage VMotion并不要求一定要连接上物理网络。 ESX服务器必须拥有足够的资源来完成Storage Vmotion的完整操作。 虚拟机的磁盘必须通过快找技术创建一个子磁盘,用来将原有磁盘的数据复制到新的节点上。如果没有这项功能,Storage VMotion将无法正常工作。 ESX服务器必须能够访问员服务器和目标服务器的存储器。 Storage VMotion一次最多可以在同一个数据存储器中同时执行四个迁移操作。 只支持光纤通道和iSCSI存储序列。 虚拟机要求Storage VMotion不能与内部虚拟交换机的网络相连接。 虚拟机要求Storage VMotion不能跟其他虚拟机有群级关系,特别是使用微软群集服务器或者Sun群集器的时候。 在同一台虚拟机上不允许同时使用Storage VMotion和VMotion。一台虚拟机的数据存储中心必须先使用Storage VMotion搬移到目标服务器的存储器中。然后虚拟机才可以使用VMotion迁移到目标ESX服务器上。两者的迁移顺序并没有限制。 Storage VMotion的操作步骤 1. 复制虚拟机的个人主目录到新的节点。这个步骤使用近距离无线通信技术(NFC)复制器来将文件复制的到新的节点上。 2. 自我迁移(Self-VMotion)到新的虚拟机主目录上。Self-VMotion的进程跟正常的VMotion是一样的。这一步使用新的转换文件,并重新打开其他复制文件,比如虚拟机配置文件以及其他类似的文件。 3. 对磁盘进行快照处理。这一步骤创建了一个子磁盘,用来记录所有虚拟机数据上的变化。 4. 复制虚拟机磁盘到目标服务器。 5. 将步骤四创建的子磁盘整合进拷贝磁盘中。 6. 删除原来虚拟机的主目录和磁盘,并将新的拷贝磁盘的状态设置为可读。 vSphere 4中的Storage VMotion 在vSphere 4中可以使用图形用户界面(GUI)来运行Storage VMotion。整个操作过程因为可视化的操作界面而变得非常简单。Storage VMotion的所有功能都集成在vCenter中,不需要任何外部插件。 在第一个界面中选择修改数据存储(Change datastore)。值得注意的是,选项一是用于虚拟机之间的VMotion,选项三只能在虚拟机的电源被断开之后才可用。 选择合适的数据存储中心来迁移你的信息,并且点击继续。 确认前已成功之后,就选择你所需要的选项。第一个选项是用来保留虚拟机之前的配置。第二个选项是进入thin provisioned模式。点击下一步(next),开始进行Storage VMotion操作。对于管理员来说,这个功能可以大大地简化Storage VMotion的进程。 如何在虚拟机和物理机以及虚拟机和虚拟机之间的迁移系统 简介: 虚拟机迁移技术为服务器虚拟化提供了便捷的方法。目前流行的虚拟化工具如 VMware,Xen,HyperV,KVM 都提供了各自的迁移组件。尽管商业的虚拟软件功能比较强大,但是开源虚拟机如 Linux 内核虚拟机 KVM 和 XEN 发展迅速,迁移技术日趋完善。本系列文章介绍了虚拟机迁移的三种方式 P2V、V2V 和 V2P,及他们在内核虚拟机 KVM 上的实现方法,分成五个部分。本文是第一部分,全面介绍了虚拟机迁移的各种方法和相应的迁移工具 , 并且着重分析了 Linux 平台上开源的虚拟化工具 KVM 和 XEN 实时迁移中的的内存预拷贝技术。 本文的标签: 虚拟技术 发布日期: 2010 年 9 月 09 日 前言 系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化。 本系列文章全面介绍了虚拟机迁移的三种方式 P2V、V2V 和 V2P,及他们在内核虚拟机 KVM 上的实现方法,分成五个部分。第一部分,介绍虚拟机迁移的各种方法和相应的迁移工具,并且着重分析 Linux 平台上开源的虚拟化工具 KVM 和 XEN 实时迁移中的的内存预拷贝技术; 第二部分介绍 KVM 虚拟机之间的 V2V 迁移技术,包括离线迁移和在线迁移;第三部分介绍基于 VMware 或 XEN 的虚拟机如何迁移到基于 KVM 的虚拟机;第四部分介绍物理机到虚拟机迁移 P2V 和虚拟机到物理机迁移 V2P 在 KVM 虚拟机上的实现;第五部分介绍和虚拟机迁移密切相关的虚拟机克隆、快照和备份技术。 回页首 虚拟机迁移简介 为什么要迁移服务器 迁移服务器可以为用户节省管理资金、维护费用和升级费用。以前的 x86 服务器,体积比较“庞大”;而现在的服务器,体积已经比以前小了许多,迁移技术使得用户可以用一台服务器来同时替代以前的许多台服务器,这样就节省了用户大量的机房空间。另外,虚拟机中的服务器有着统一的“虚拟硬件资源”,不像以前的服务器有着许多不同的硬件资源(如主板芯片组不同,网卡不同,硬盘,RAID 卡,显卡不同)。迁移后的服务器,不仅可以在一个统一的界面中进行管理,而且通过某些虚拟机软件,如 VMware 提供的高可用性工具,在这些服务器因为各种故障停机时,可以自动切换到网络中另外相同的虚拟服务器中,从而达到不中断业务的目的。总之,迁移的优势在于简化系统维护管理, 提高系统负载均衡,增强系统错误容忍度和优化系统电源管理。 虚拟机迁移的性能指标 一个优秀的迁移工具,目标是最小化整体迁移的时间和停机时间,并且将迁移对于被迁移主机上运行服务的性能造成的影响降至最低。当然,这几个因素互相影响,实施者需要根据迁移针对的应用的需求在其中进行衡量,选用合适的工具软件。虚拟机迁移的性能指标包括以下三个方面: 回页首 虚拟机迁移的分类及原理 物理机到虚拟机的迁移(Physical-to-Virtual) P2V 指迁移物理服务器上的操作系统及其上的应用软件和数据到 VMM(Virtual Machine Monitor)管理的虚拟服务器中。这种迁移方式,主要是使用各种工具软件,把物理服务器上的系统状态和数据“镜像”到 VMM 提供的虚拟机中,并且在虚拟机中“替换”物理服务器的存储硬件与网卡驱动程序。只要在虚拟服务器中安装好相应的驱动程序并且设置与原来服务器相同的地址(如 TCP/IP 地址等),在重启虚拟机服务器后,虚拟服务器即可以替代物理服务器进行工作。 P2V 迁移方法 虚拟机到虚拟机的迁移(Virtual-to-Virtual) V2V 迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件。虚拟机从一个物理机上的 VMM 迁移到另一个物理机的 VMM,这两个 VMM 的类型可以相同,也可以不同。如 VMware 迁移到 KVM, KVM 迁移到 KVM。可以通过多种方式将虚拟机从一个 VM Host 系统移动到另一个 VM Host 系统。 V2V 离线迁移 离线迁移(offline migration):也叫做常规迁移、静态迁移。在迁移之前将虚拟机暂停,如果共享存储,则只拷贝系统状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。如果使用本地存储,则需要同时拷贝虚拟机镜像和状态到目的主机。到这种方式的迁移过程需要显示的停止虚拟机的运行。从用户角度看,有明确的一段服务不可用的时间。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。 V2V 在线迁移 在线迁移(online migration):又称为实时迁移 (live migration)。是指在保证虚拟机上服务正常运行的同时,虚拟机在不同的物理主机之间进行迁移,其逻辑步骤与离线迁移几乎完全一致。不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机运行,当迁移进行到一定阶段,目的主机已经具备了运行系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,服务在目的主机上继续运行。对于服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。在线迁移适用于对服务可用性要求很高的场景。 目前主流的在线迁移工具,如 VMware 的 VMotion,XEN 的 xenMotion,都要求物理机之间采用 SAN(storage area network), NAS(network-attached storage)之类的集中式共享外存设备,因而在迁移时只需要考虑操作系统内存执行状态的迁移,从而获得较好的迁移性能。 另外,在某些没有使用共享存储的场合,可以使用存储块在线迁移技术来实现 V2V 的虚拟机在线迁移。相比较基于共享存储的在线迁移,数据块在线迁移的需要同时迁移虚拟机磁盘镜像和系统内存状态,迁移性能上打了折扣。但是他使得在采用分散式本地存储的环境下,仍然能够利用迁移技术转移计算机环境,并且保证迁移过程中操作系统服务的可用性,扩展了虚拟机在线迁移的应用范围。V2V 在线迁移技术消除了软硬件相关性,是进行软硬件系统升级,维护等管理操作的有力工具。 V2V 内存迁移技术 对于 VM 的内存状态的迁移,XEN 和 KVM 都采用了主流的的预拷贝(pre-copy)的策略。迁移开始之后,源主机 VM 仍在运行,目的主机 VM 尚未启动。迁移通过一个循环,将源主机 VM 的内存数据发送至目的主机 VM。循环第一轮发送所有内存页数据,接下来的每一轮循环发送上一轮预拷贝过程中被 VM 写过的脏页内存 dirty pages。直到时机成熟,预拷贝循环结束,进入停机拷贝阶段,源主机被挂起,不再有内存更新。最后一轮循环中的脏页被传输至目的主机 VM。预拷贝机制极大的减少了停机拷贝阶段需要传输的内存数据量,从而将停机时间大大缩小。 然而,对于更新速度非常快的内存部分,每次循环过程都会变脏,需要重复 pre-copy,同时也导致循环次数非常多,迁移的时间变长。针对这种情况,KVM 虚拟机建立了三个原则:集中原则,一个循环内的 dirty pages 小于等于 50;不扩散原则, 一个循环内传输的 dirty pages 少于新产生的;有限循环原则,循环次数必须少于 30。在实现上,就是采取了以下措施: KVM 的预拷贝在线迁移过程详解: Virtual-to-Physical 虚拟机到物理机的迁移 V2P 指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作。它可以同时迁移虚拟机系统到一台或多台物理机上。尽管虚拟化的基本需求是整合物理机到虚拟机中,但这并不是虚拟化的唯一的应用。比如有时虚拟机上的应用程序的问题需要在物理机上验证,以排除虚拟环境带来的影响。另外,配置新的工作站是件令 IT 管理者头痛的事情,但虚拟化的应用可以帮助他解决这个难题。先配置好虚拟机,然后运用硬盘克隆工具复制数据至工作站硬件,比如赛门铁克的 Save & Restore (Ghost)。不过这种克隆方法有两个局限:一个镜像只能运用在同种硬件配置的机器上;要想保存配置的修改,只能重做新的镜像。 V2P 的迁移可以通过确定目标的物理环境来手动完成,如把一个特定的硬盘加载到虚拟系统中,然后在虚拟环境中安装操作系统、应用程序和数据,最后手动修改系统配置和驱动程序。这是一个乏味且不确定的过程,特别是在新的环境比旧的环境包含更多大量不同的硬件的情况下。为了简化操作,我们可以利用专门的迁移工具以自动的方式来完成部分或全部迁移工作。目前支持 V2P 转换的工具有 PlateSpin Migrate 和 EMC HomeBase。使用这样的工具使得 V2P 转换过程更简易,并且比使用第三方磁盘镜像工具更快捷。 V2P 迁移方法 V2P 的不确定性导致自动化工具不多,目前主要有以下几种解决方案: 回页首 Linux 系统在虚拟机迁移中的技术难点 通常我们期望虚拟机的迁移能够全部自动化或者部分自动化完成,但实际上 Linux 系统在 P2V 和 V2V 的迁移中可能遇到一些困难。本节列举了 Linux 迁移中需要注意的地方。 如你所见,P2V 和 V2V 最大的问题在于硬件的改变。Linux 发行版本身应该可以处理所有的硬件变化:在系统启动的时候去检查所有的硬件,操作系统内核识别新的设备并寻找新的驱动处理它们 ,所有应用软件都不要和硬件绑定,设计一个很好的模式来应对突然的环境变化。 回页首 目前流行的虚拟机软件的迁移特性介绍 P2V 迁移工具 虚拟机所呈现出来的虚拟硬件通常与原始服务器上的物理硬件不同。P2V 迁移工具是这样解决这个问题的: V2V 迁移工具 支持 V2V 迁移是虚拟机的管理工具的重要功能,所以各种虚拟化软件都提供了实现 V2V 迁移的模块或工具。V2V 在线迁移大大的减少了虚拟机的迁移的停机时间。这使动态迁移成了用户在需要不间断工作时迁移虚拟机的首选。通常的在线迁移方案,是虚拟机使用共享存储,迁移时只拷贝虚拟机的内存。原理参见前面的小节“V2V 内存迁移技术”。 VMware VMotion VMware 的在线迁移是由 VMotion 这个组件实现的 。Vmotion 的实时解决方案的特点是有其自己的 Cluster File System: VMFS,此外也支持 NFS。Vmotion 把整个虚拟机包括其完整状态封装在几个文件中,存放在 SAN/NAS 等共享存储中。迁移的过程是把内存和运行状态通过高速网从源复制到目标。 Citrix XenMotion XenMotion 是 XenServer 的一项功能,能够将正在运行的虚拟机从一台 XenServer 主机上迁移到另外一台,而不带有停机的危险。这就意味着在整个迁移过程中,被移动的虚拟机在任意时刻都可以访问。XenMotion 的主要目的是在某台服务器进行计划维修时,使终端用户觉察不到应用程序出现过极短暂的中断,令整个服务过程正常顺畅。 Microsoft Hyper-V 微软的 Hyper-V 从 2.0 开始支持了动态迁移技术。利用 Hyper-V 动态迁移,在不中断任何服务或者不允许停机的前提下,将一个运行中的虚拟机从一个 Hyper-V 物理主机移动到另外一个上面,通过预复制迁移的虚拟机中的内存到目的主机。管理员或者脚本在启动动态迁移的时候控制选择此次迁移的目标计算机,客户使用被迁移系统时是不会感觉到迁移在进行的。 QEMU-KVM/Libvirt 内核虚拟机 KVM 技术的原创公司 Qumranet 在 2008 年被 RedHat 收购以后,得到了全面快速的发展。在 2009 年发布的 Redhat Enterprise Linux 5.4 全面支持了 KVM 虚拟机,其中已经包含了离线迁移和在线迁移的技术。2010 年发布的 Redhat Enterprise Linux 5.5 和 Suse Linux Enterprise Server 11 Service Pack 1 中集成了图形化的 KVM 虚拟机管理工具 virt-manager,使虚拟机的迁移更加直观和方面。在本系列文章的下一篇中将详细介绍如何迁移 KVM 虚拟机。 回页首 自动化迁移的未来 目前许多企业都已将包括 CPU、内存、I/O、存储、网络在内的数据中心设备进行了虚拟化,如何更好管理和利用这些虚拟的和物理的资源,已经成为数据中心异构虚拟化时期急需解决的问题。P2V 迁移工具使物理资源虚拟化、数据中心转移更加简单;V2V 迁移工具使虚拟资源达到最优化配置;而 V2P 迁移工具可以快速部署虚拟机到物理机。在不远的将来,P2V/V2P/V2V 工具都会失去原有的意义,所有功能的实现都集成到一个智能化、自动化、自治化数据中心的优化系统中去。 高度自动化的监测模块将 24 小时扫描整个数据中心,寻找过载和闲赋的虚拟机;规划模块根据监测报告和收集的信息选择最好的迁移工具进行资源优化,迁移过程将在应用程序正常运行的状况下自动执行。那时,整个环境就像液体一样可以自由流动,负载不停地在各服务器上保持着均衡,虚拟环境与物理环境对用户将再无差别。 虚拟化和云计算 云计算就是以服务的形式提供计算资源。云计算背后最重要的概念之一就是可伸缩性,而实现它的关键则是虚拟化。虚拟化在一台共享计算机上聚集多个操作系统和应用程序,以便更好地利用服务器。虚拟化还允许在线迁移,因此,当一个服务器超载时,可以将其中一个操作系统以及它的应用程序迁移到一个新的、不繁忙的服务器上。在云中,可以在多个操作系统和应用程序之间共享虚拟化服务器,从而减少服务器的数量。更少的服务器意味着需要更少的空间(减少数据中心占用的空间)和更少用于制冷的电力(减少碳污染)。 IBM 认为,虚拟化是未来云计算架构的关键组成模块,而衡量一家 IT 企业的“云”能力的关键也正是其虚拟化实施能力。虚拟化技术正在普及,也许不用太久,我们每天都会与虚拟机打交道。 回页首 小结 本文介绍了虚拟机迁移的各种方法及工具,分析了内存预拷贝技术的原理,还列举了虚拟机迁移中应该注意的问题。不仅对于系统管理员全面了解迁移方法和策略,进行虚拟机迁移规划有参考意义;而且对于虚拟机的开发和测试人员也有指导意义。本系列后面的文章中,将具体介绍在 KVM 虚拟机上,如何操作和实现系统迁移。 如何从一台物理主机上迁移 KVM 虚拟机到另一台物理主机 简介: 虚拟机的迁移使资源配置更加灵活,尤其是在线迁移技术,提高了虚拟服务器的可用性和可靠性。本文是虚拟机迁移技术漫谈系列的第二部分,详细介绍 KVM 虚拟机在物理主机之间的静态迁移和在线迁移特性,而且包括基于数据块的在线迁移实现。 本文的标签: kvm虚拟机迁移, linux_virtualization 发布日期: 2010 年 11 月 04 日 前言 虚拟机的迁移技术为服务器的虚拟化提供简便的方法。目前流行的虚拟化产品 VMware,Xen,Hyper-V,KVM 都提供各自的迁移工具。其中 Linux 平台上开源的虚拟化工具 KVM 发展迅速,基于 KVM 的虚拟机的迁移特性也日趋完善。本文全面介绍 KVM 虚拟机在不同的应用环境下的静态迁移(离线迁移)和动态迁移(在线迁移),并且在最新发布的 Suse Linux Enterprise Edition 11 SP1 上分别演示如何应用 libvirt/virt-manager 图形化工具和基于命令行的 qemu-kvm 工具进行迁移操作。 回页首 V2V 虚拟机迁移的介绍 V2V 虚拟机的迁移是指在 VMM(Virtual Machine Monitor)上运行的虚拟机系统,能够被转移到其他物理主机上的 VMM 上运行。VMM 对硬件资源进行抽象和隔离,屏蔽了底层硬件细节。而迁移技术的出现,使得操作系统能在不同的主机之间动态的转移,进一步解除软,硬件资源之间的相关性。本系列的第一篇文章“虚拟机迁移技术漫谈”中,介绍了 V2V 迁移的三种方式,本文将更加详细的说明三种方式的不同和实现方法。 V2V 迁移方式的分类 静态迁移 静态迁移: 共享存储的动态迁移 动态迁移(Live Migration):也叫在线迁移(Online Migration)。就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,虚拟机系统在目的主机上继续运行。对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。动态迁移适用于对虚拟机服务可用性要求很高的场合。 目前主流的动态迁移工具,VMware 的 VMotion,Citrix 的 XenMotion,他们都依赖于物理机之间采用 SAN(storage area network)或 NAS(network-attached storage)之类的集中式共享外存设备,因而在迁移时只需要进行虚拟机系统内存执行状态的迁移,从而获得较好的迁移性能。 如图 1 中所示的动态迁移,为了缩短迁移时间和服务中断时间,源主机和目的主机共享了 SAN 存储。这样,动态迁移只需要考虑虚拟机系统内存执行状态的迁移,从而获得较好的性能。 本地存储的动态迁移 动态迁移基于共享存储设备,为的是加速迁移的过程,尽量减少宕机时间。但是在某些情况下需要进行基于本地存储的虚拟机的动态迁移,这就需要存储块动态迁移技术,简称块迁移。 为了拓宽动态迁移技术的应用范围,有必要实现一个包括虚拟机外存迁移在内的全系统动态迁移方案。使得在采用分散式本地存储的计算机集群环境下,仍然能够利用迁移技术转移虚拟机环境,并且保证迁移过程中虚拟机系统服务的可用性。 相比较基于共享存储的动态迁移,数据块动态迁移的需要同时迁移虚拟机磁盘镜像和虚拟机系统内存状态,延长了迁移时间,在迁移性能上打了折扣。 回页首 KVM 虚拟机的管理工具 准确来说,KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。 以上这些就是 Linux 系统上 KVM 虚拟化技术的大致架构了。本文正是演示了如何使用这些工具实现了 KVM 虚拟机的迁移操作。 本文的实验环境介绍 本文中的 KVM 虚拟机软件基于 Novell 公司的 Suse Linux Enterprise Server 11 Service Pack 1 发行版。SLES11 SP1 发布于 2010 年 5 月 19 日,基于 Linux 内核 2.6.32.12,包含了 kvm-0.12.3,libvirt-0.7.6,virt-manager-0.8.4,全面支持 KVM 虚拟机。本文中的物理服务器和外部共享存储配置如下表: 创建 KVM 虚拟机 迁移虚拟机之前,我们需要创建虚拟机。创建虚拟机可以使用 QEMU-KVM 命令或者通过 virt-manager 图形化管理工具。 回页首 KVM 虚拟机静态迁移 静态迁移由于允许中断虚拟机的运行,所以相对简单。首先在源主机上关闭虚拟机,然后移动虚拟机的存储镜像和配置文件到目的主机,最后在目的主机上启动虚拟机,恢复服务。根据虚拟机镜像存储方式的不同,静态迁移的实现方法稍有不同。 虚拟机之间使用共享存储 如果源主机和目的主机都能够访问虚拟机的镜像,则只需要迁移虚拟机配置文件。比如在本例中的 SLES11 SP1 系统,virt-manager 管理的虚拟机配置文件在 /etc/libvirt/qemu/”your vm name.xml”。拷贝 XML 配置文件到目的主机的相同目录后,进行适当的修改,比如:与源主机相关的文件或路径等。无论你何时在 /etc/libvirt/qemu/ 中修改了虚拟机的 XML 文件,必须重新运行 define 命令,以激活新的虚拟机配置文件。 虚拟机镜像使用本地存储 本地存储是指虚拟机的文件系统建立在本地硬盘上,可以是文件或者磁盘分区。 保存虚拟机的运行状态 静态迁移虚拟的过程中,虚拟机系统处于关机状态,这样虚拟机关机前的运行状态不会保留。如果希望保留迁移前的系统状态,并且在迁移后能够恢复,需要对虚拟机做快照备份或者以休眠的方式关闭系统,详细内容和实现方法将在本系列文章的第五部分介绍。 回页首 基于共享存储的动态迁移 本文前面“V2V 迁移方式的分类”小节中介绍过,跟据虚拟机连接存储方式的不同,动态迁移分为基于共享存储的动态迁移和基于本地存储的存储块迁移。本小节实现了目前使用最广泛的基于共享存储的动态迁移。实现这种实时迁移的条件之一就是把虚拟机存储文件存放在公共的存储空间。因此需要设定一个共享存储空间,让源主机和目的主机都能够连接到共享存储空间上的虚拟媒体文件,包括虚拟磁盘、虚拟光盘和虚拟软盘。否则,即使迁移完成以后,也会因为无法连接虚拟设备,导致无法启动迁移后的虚拟机。 设置实验环境 动态迁移实际上是把虚拟机的配置封装在一个文件中,然后通过高速网络,把虚拟机配置和内存运行状态从一台物理机迅速传送到另外一台物理机上,期间虚拟机一直保持运行状态。现有技术条件下,大多虚拟机软件如 VMware、Hyper-V、Xen 进行动态迁移都需要共享存储的支持。典型的共享存储包括 NFS 和 SMB/CIFS 协议的网络文件系统,或者通过 iSCSI 连接到 SAN 网络。选用哪一种网络文件系统,需要根据具体情况而定。本文的实验采用了 NFS 文件系统作为源主机和目的主机之间的共享存储。 使用 virt-manager 进行动态迁移 virt-manager 是基于 libvirt 的图像化虚拟机管理软件,请注意不同的发行版上 virt-manager 的版本可能不同,图形界面和操作方法也可能不同。本文使用了 SLES11 SP1 发行版上的 virt-manager-0.8.4。 首先在源主机和目的主机上添加共享存储。这里以源主机为例,目的主机做相同的配置。 源主机上创建基于共享存储的 KVM 虚拟机。 连接远程物理主机上的 VMM。这里以源主机为例,目的主机做相同的配置。 从源主机动态迁移 KVM 虚拟机到目的主机。 回页首 基于数据块的动态迁移 从 qemu-kvm-0.12.2 版本,引入了 Block Migration (块迁移)的特性。上一小节“基于共享存储的动态迁移”中,为了实现动态迁移,源主机和目的主机需要连接共享存储服务。有了块迁移技术以后,可以在动态迁移过程中,把虚拟磁盘文件从源主机迁移至目的主机。QEMU-KVM 有了这个特性以后,共享存储不再是动态迁移的必要条件,从而降低了动态迁移的难度,扩大了动态迁移的应用范围。SLES11 SP1 集成了 kvm-0.12.3,支持块迁移特性。但是 SLES11 SP1 上的 libvirt-0.7.6、virt-manager-0.8.4 暂时没有引入块迁移的功能。所以本文下面的块迁移实验仅基于 QEMU-KVM 的命令行模式。 设置实验环境 块迁移过程中,虚拟机只使用本地存储,因此物理环境非常简单。只需要源主机和目的主机通过以太网连接,如”图 2. 本地存储的动态迁移示意图”所示。 QEMU 的控制终端和迁移命令 QEMU 控制终端的开启,可以在 QEMQ-KVM 的命令中加参数“-monitor”。 QEMU-KVM 提供了的“-incoming”参数在指定的端口监听迁移数据。目的主机上需要此参数接收来自源主机的迁移数据。 使用 QEMU-KVM 进行数据块动态迁移 在源主机上创建和启动虚拟机。 在目的主机上创建和启动虚拟机。 迁移源主机上的虚拟机到目的主机。 回页首 小结 本文实现了在 Suse Linux Enterprise Server 11 SP1 发行版上 KVM 虚拟机的静态迁移和动态迁移,特别是基于数据块的动态迁移,使虚拟机的资源配置更加灵活。在其他支持 KVM 的 Linux 发行版上如 Ubuntu、Fedora 也可以完成类似的迁移操作。KVM 虚拟机在不断的增强和完善中,开源社区和 Linux 的系统集成商也在开发各种各样的基于 KVM 的管理工具,将来的 KVM 迁移工具会在性能,功能,可操作性和自动化程度上大大增强。虚拟化技术的明珠 VMotion实时迁移详解
VMware VMotion的迁移示意图
VMware VMotion操作界面
VMware VMotion错误提示界面
物理ESX主机和虚拟ESX主机之间的迁移
Storage VMotion操作示意图
虚拟机主目录拷贝
自我迁移
子磁盘的创建
虚拟机磁盘的拷贝
子磁盘的结合
移除源虚拟机
Storage VMotion操作界面
Storage VMotion操作界面
Storage VMotion操作界面虚拟机迁移技术漫谈,第 1 部分
级别: 初级
访问情况 4908 次浏览
建议: 4 (查看或添加评论)
图 1. 源服务器和目标服务器简图
图 2. 内存镜像复制示意图
图 3. 进行有变化的内存复制
图 4. 所需复制的数据在减少
图 5. 状态信息的复制
图 6. 停止源服务器,启动目标服务器
是
一个麻烦的事情。尽管不是必须的,但是最好配置系统从 DHCP 服务器自动获得所有的网络配置信息。KVM 虚拟机在物理主机之间迁移的实现
级别: 初级
访问情况 11110 次浏览
建议: 0 (添加评论)也叫做常规迁移、离线迁移(Offline Migration)。就是在虚拟机关机或暂停的情况下从一台物理机迁移到另一台物理机。因为虚拟机的文件系统建立在虚拟机镜像上面,所以在虚拟机关机的情况下,只需要简单的迁移虚拟机镜像和相应的配置文件到另外一台物理主机上;如果需要保存虚拟机迁移之前的状态,在迁移之前将虚拟机暂停,然后拷
贝状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。这种方式的迁移过程需要显式的停止虚拟机的运行。从用户角度看,有明确的一段停机时间,虚拟机上的服务不可用。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。
图 1. 共享存储的动态迁移示意图
图 2. 本地存储的动态迁移示意图
表 1. 硬件配置物理主机 硬件配置 Host OS Host Name IP Address 源主机
Source HostXeon(R) E5506 x 4 core
MEM: 10GBSLES11 SP1vicorty3192.168.0.73目的主机
Destination HostXeon(R) E5506 x 8 core
MEM: 18GBSLES11 SP1victory4192.168.0.74NFS ServerPentium(R) D x 2 core
MEM: 2GSLES11 SP1server17192.168.0.17
清单 1. 激活虚拟机配置文件 # virsh define /etc/libvirt/qemu/”your vm name.xml”
清单 2. 转换逻辑卷为镜像文件 dd if=/dev/VolGroup00/lv001 of=lv001.img bs=1M
图 3. 共享存储的动态迁移实验配置图
清单 3. 配置 NFS 服务修改 /etc/exports 文件,添加 /home/image *(rw,sync,no_root_squash) rw:可读写的权限; ro:只读的权限; no_root_squash:登入到 NFS 主机的用户如果是 ROOT 用户,他就拥有 ROOT 权限,此参数很不安全,建议不要使用。 sync:资料同步写入存储器中。 async:资料会先暂时存放在内存中,不会直接写入硬盘。 重新启动 nfsserver 服务 # service nfsserver restart
图 4. 存储池配置图
图 5. 添加共享存储池
图 6. 存储池设置
图 7. 添加存储卷
图 8. 添加远程 VMM 连接
图 9. 管理远程 VMM
图 10. 虚拟机迁移设置
图 11. 虚拟机迁移进度
清单 4. 迁移相关的 QEMU 命令 (qemu) help migrate migrate [-d] [-b] [-i] uri -- migrate to URI (using -d to not wait for completion) -b for migration without shared storage with full copy of disk -i for migration without shared storage with incremental copy of disk (base image shared between src and destination)
清单 5. 源主机上创建虚拟机victory3:~ # qemu-img create -f qcow2 /var/lib/kvm/images/sles11.1ga/disk0.qcow2 10G
清单 6. 源主机上安装虚拟机 victory3:~ # /usr/bin/qemu-kvm -enable-kvm -m 512 -smp 4 -name sles11.1ga -monitor stdio -boot c -drive file=/var/lib/kvm/images/sles11.1ga/disk0.qcow2, if=none,id=drive-virtio-disk0,boot=on -device virtio-blk-pci,bus=pci.0, addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=/media/83/software/Distro/SLES-11-SP1-DVD-x86_64-GM-DVD1.iso, if=none,media=cdrom,id=drive-ide0-1-0 -device ide-drive,bus=ide.1, unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -device virtio-net-pci,vlan=0, id=net0,mac=52:54:00:13:08:96 -net tap -vnc 127.0.0.1:3
清单 7. 源主机上启动虚拟机 victory3:~ # /usr/bin/qemu-kvm -enable-kvm -m 512 -smp 4 -name sles11.1ga -monitor stdio -boot c -drive file=/var/lib/kvm/images/sles11.1ga/disk0.qcow2, if=none,id=drive-virtio-disk0,boot=on -device virtio-blk-pci,bus=pci.0,addr=0x4, drive=drive-virtio-disk0,id=virtio-disk0 -drive if=none,media=cdrom, id=drive-ide0-1-0 -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0, id=ide0-1-0 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:13:08:96 -net tap -vnc 127.0.0.1:3
清单 8. 目的主机上创建虚拟机 victory4:~ # qemu-img create -f qcow2 dest.img 20G Formatting 'dest.img', fmt=qcow2 size=21474836480 encryption=off cluster_size=0
清单 9. 目的主机上的迁移命令 victory4:~ # /usr/bin/qemu-kvm -enable-kvm -m 512 -smp 4 -name sles11.1ga -monitor stdio -boot c -drive file=/root/dest.img,if=none,id=drive-virtio-disk0, boot=on -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0, id=virtio-disk0 -drive if=none,media=cdrom,id=drive-ide0-1-0 -device ide-drive, bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -device virtio-net-pci,vlan=0, id=net0,mac=52:54:00:13:08:96 -net tap -vnc 127.0.0.1:8 -incoming tcp:0:8888 QEMU 0.12.3 monitor - type 'help' for more information (qemu) info status VM status: paused
图 12. 等待迁移的虚拟机中开启 TOP 服务
清单 10. 源主机迁移命令 (qemu) migrate -d -b tcp:victory4:8888 -d 可以在迁移的过程中查询迁移状态,否则只能在迁移结束后查询。 -b 迁移虚拟机存储文件 tcp:ivctory4:8888 数据迁移的协议、目的主机和端口。协议和端口必须和目的主机上虚拟机的 -incoming 参数一致。
清单 11. 监视虚拟机迁移过程源主机 QEMU 控制台显示正在迁移的数据 (qemu) info migrate Migration status: active transferred ram: 52 kbytes remaining ram: 541004 kbytes total ram: 541056 kbytes transferred disk: 2600960 kbytes remaining disk: 5787648 kbytes total disk: 8388608 kbytes 目的主机 QEMU 控制台显示迁移完成的百分比 (qemu) Receiving block device images Completed 28 %
- vmwar 和 IBM 虚拟机实时迁移技术
- Xen虚拟机迁移技术
- 虚拟机迁移技术漫谈
- 虚拟机迁移技术漫谈,第 1 部分(转) 出自IBM
- 使用virt-manager进行虚拟机实时迁移
- 虚拟机迁移技术漫谈,第 1 部分
- 虚拟机迁移技术漫谈(转)
- 虚拟机迁移技术漫谈,第 2 部分(KVM 虚拟机在物理主机之间迁移的实现)
- KVM虚拟机的创建,管理和迁移
- kvm虚拟机静态和动态迁移
- VirtualBox迁移虚拟机和磁盘VDI
- [虚拟技术]Xen虚拟机迁移到KVM六步走
- [虚拟技术]升级迁移虚拟机 图文教您五步轻松搞定
- 恒天云技术分享系列(一)—虚拟机热迁移
- 一张图带你了解虚拟机在线迁移技术
- 一张图带你了解虚拟机在线迁移技术
- IBM InfoSphere DataStage 实时监控和统一运维平台
- 常用IBM技术和产品资源链接
- 替换数据库字段为大写
- 为raw数据添加图像头,并保存为bmp图像(改进)
- 致软5全体同志们的一封信
- 使用jpeglib库实现bmp转jpg
- 代码换行中间空格处理
- vmwar 和 IBM 虚拟机实时迁移技术
- Oracle 扩展表空间
- directdraw直接读写显存的方法
- 堆(heap)和栈(stack)有什么区别?
- C-内存地址对齐及大小端
- sqlCmd下的备份还原执行sql脚本和事务等处理
- 256位图转为灰度位图
- 如何突破PHP程序员的技术瓶颈
- 敏捷实施笔记:第0章 之前的错误