文明之精神,野蛮之体魄。
全部博文(64)
分类: LINUX
2013-05-25 13:51:05
前言
系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化。
本系列文章全面介绍了虚拟机迁移的三种方式 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 虚拟机上,如何操作和实现系统迁移。