KVM虚拟机迁移技术分析

时间:2022-08-16 02:19:57

KVM虚拟机迁移技术分析

摘 要:随着就计算机的发展,云计算技术已经深入到很多领域,云计算中重要的概念之一就是可伸缩性,而实现它的关键则是虚拟化。虚拟机的迁移技术使得云计算平台中的资源配置更加灵活,尤其是在线迁移技术,提高了虚拟服务器的可用性和可靠性。

关键词:kvm 虚拟机 迁移

1引言

虚拟机的迁移技术为服务器的虚拟化提供简便的方法,也提高了云计算中的资源利用率。目前流行的虚拟化产品VMware,Xen,Hyper-V,KVM都提供各自的迁移工具。其中Linux平台上开源的虚拟化工具KVM发展迅速,基于KVM的虚拟机的迁移特性也日趋完善。本文全面介绍KVM虚拟机在不同的应用环境下的静态迁移和动态迁移。

2.kvm虚拟机迁移的分类

kvm虚拟机的迁移是指在VMM(VirtualMachineMonitor)上运行的虚拟机系统,能够被转移到其他物理主机上的VMM上运行。VMM对硬件资源进行抽象和隔离,屏蔽了底层硬件细节。而迁移技术的出现,使得操作系统能在不同的主机之间动态的转移,进一步解除软、硬件资源之间的相关性。kvm虚拟机迁移主要分为两大类:静态迁移和动态迁移。

(1)静态迁移

静态迁移也叫做常规迁移、离线迁移(OfflineMigration)。就是在虚拟机关机或暂停的情况下从一台物理机迁移到另一台物理机。因为虚拟机的文件系统建立在虚拟机镜像上面,所以在虚拟机关机的情况下,只需要简单的迁移虚拟机镜像和相应的配置文件到另外一台物理主机上;如果需要保存虚拟机迁移之前的状态,在迁移之前将虚拟机暂停,然后拷贝状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。这种方式的迁移过程需要显式的停止虚拟机的运行。从用户角度看,有明确的一段停机时间,虚拟机上的服务不可用。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。

(2)动态迁移

动态迁移(LiveMigration)也叫在线迁移(OnlineMigration)。就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,虚拟机系统在目的主机上继续运行。对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的。动态迁移适用于对虚拟机服务可用性要求很高的场合。

3.kvm虚拟机动态迁移的实现方式:

静态迁移由于允许中断虚拟机的运行,所以相对简单,因此下面重点介绍动态迁移的实现方式。根据虚拟机连接存储方式的不同,动态迁移分为基于共享存储的动态迁移和基于本地存储的存储块迁移。

(1)基于共享存储的动态迁移

目前主流的动态迁移工具,VMware的VMotion,Citrix的XenMotion,他们都依赖于物理机之间采用SAN(storageareanetwork)或NAS(network-attachedstorage)之类的集中式共享外存设备,因而在迁移时只需要进行虚拟机系统内存执行状态的迁移,从而获得较好的迁移性能。

实现这种实时迁移的条件之一就是把虚拟机存储文件存放在公共的存储空间。因此需要设定一个共享存储空间,让源主机和目的主机都能够连接到共享存储空间上的虚拟媒体文件,包括虚拟磁盘、虚拟光盘和虚拟软盘。否则,即使迁移完成以后,也会因为无法连接虚拟设备,导致无法启动迁移后的虚拟机。

如图1中所示的动态迁移,为了缩短迁移时间和服务中断时间,源主机和目的主机共享了SAN存储。这样,动态迁移只需要考虑虚拟机系统内存执行状态的迁移,从而获得较好的性能。

(2)基于本地存储的动态迁移

动态迁移基于共享存储设备,为的是加速迁移的过程,尽量减少宕机时间。但是在某些情况下需要进行基于本地存储的虚拟机的动态迁移,这就需要存储块动态迁移技术,简称块迁移。

为了拓宽动态迁移技术的应用范围,有必要实现一个包括虚拟机外存迁移在内的全系统动态迁移方案。使得在采用分散式本地存储的计算机集群环境下,仍然能够利用迁移技术转移虚拟机环境,并且保证迁移过程中虚拟机系统服务的可用性。

相比较基于共享存储的动态迁移,数据块动态迁移的需要同时迁移虚拟机磁盘镜像和虚拟机系统内存状态,延长了迁移时间,在迁移性能上打了折扣。

4.KVM虚拟机的管理工具

KVM仅仅是Linux内核的一个模块,管理和创建完整的KVM虚拟机,需要更多的辅助工具,当然,在使用之前需要在Linux系统中安装KVM软件包并加载KVM模块。下面是常用的一些辅助工具。

QEMU-KVM:QEMU是一个强大的虚拟化软件,它可以虚拟不同的CPU构架。比如说在x86的CPU上虚拟一个Power的CPU,并利用它编译出可运行在Power上的程序。KVM使用了QEMU的基于x86的部分,并稍加改造,形成可控制KVM内核模块的用户空间工具QEMU-KVM。所以Linux发行版中分为kernel部分的KVM内核模块和QEMU-KVM工具。

Libvirt:RedHat为KVM开发了更多的辅助工具,比如libvirt、libguestfs等。Libvirt是一套提供了多种语言接口的API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持KVM,而且支持Xen等其他虚拟机。使用libvirt,你只需要通过libvirt提供的函数连接到KVM或Xen宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt不仅提供了API,还自带一套基于文本的管理虚拟机的命令――virsh,你可以通过使用virsh命令来使用libvirt的全部功能。virt-manager是图形用户界面,是一套用python编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。Virt-manager就是利用libvirt的API实现的。

5.小结

虚拟化是未来云计算架构的关键组成模块,而衡量一个“云”能力的关键也正是其虚拟化实施能力。本文对kvm虚拟机迁移的分类和实现进行了全面的介绍和分析,尤其是对如何实现虚拟机动态迁移进行了重点讲述。对于系统管理员全面了解迁移方法和策略,进行虚拟机迁移规划有参考意义;而且对于虚拟机的开发和测试人员也有指导意义。

参考文献

[1]LiuPengcheng,YangZiye,SongXiang,etal.HeterogeneoursLiveMigrationofVirtualMachines[C]//Proc.oftheInt’lWorkshoponVirtualizationTechnologyBeijing,China[s.n],2008.

[2]孙国飞,古建华,胡金华,赵天海。基于预拷贝的虚拟机动态内存迁移机制改进。计算机工程2011-07

[3]杨子夜,周逸勋,陈海波,臧斌宇。利用虚拟机动态迁移技术整合虚拟和模拟环境,小

[4]刘鹏程,陈榕,面向云计算的虚拟机动态迁移框架,计算机工程,2010-03

上一篇:品“活教育”,促“活”教学活动 下一篇:甲醇装置精馏塔塔盘安装及安装问题分析