KVM虚拟机创建管理及迁移技术.docx

上传人:b****5 文档编号:30757505 上传时间:2023-08-20 格式:DOCX 页数:33 大小:1.99MB
下载 相关 举报
KVM虚拟机创建管理及迁移技术.docx_第1页
第1页 / 共33页
KVM虚拟机创建管理及迁移技术.docx_第2页
第2页 / 共33页
KVM虚拟机创建管理及迁移技术.docx_第3页
第3页 / 共33页
KVM虚拟机创建管理及迁移技术.docx_第4页
第4页 / 共33页
KVM虚拟机创建管理及迁移技术.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

KVM虚拟机创建管理及迁移技术.docx

《KVM虚拟机创建管理及迁移技术.docx》由会员分享,可在线阅读,更多相关《KVM虚拟机创建管理及迁移技术.docx(33页珍藏版)》请在冰豆网上搜索。

KVM虚拟机创建管理及迁移技术.docx

KVM虚拟机创建管理及迁移技术

 

KVM虚拟机创建、管理及迁移技术

(初稿)

 

********公司

2014年1月20日

KVM虚拟机创建、管理及迁移技术

1虚拟化技术

虚拟化(Virtualization)技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System370系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(VirtualMachineMonitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(VirtualMachine)实例。

随着近年来多核系统、集群、网格以及云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,它不仅降低了IT成本,而且还增强了系统安全性和可靠性。

虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。

在计算机科学领域中,虚拟化通常是指计算元件在虚拟的基础上而不是真实的基础上运行,代表着对计算资源的抽象,是一个为了简化管理、优化资源的解决方案。

虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程,可以把有限的固定的资源根据用户的不同需求进行重新规划以达到资源的最大利用率。

CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

1.1服务器虚拟化

服务器虚拟化就是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力。

图1中所示为服务器虚拟化及迁移示意图。

图1服务器虚拟化及迁移示意图

1.2虚拟化的分类

虚拟化技术主要分为以下几个大类:

a)平台虚拟化(PlatformVirtualization):

针对计算机和操作系统的虚拟化;

b)资源虚拟化(ResourceVirtualization):

针对特定的系统资源的虚拟化,比如CPU、内存、存储、网络资源等;

c)应用程序虚拟化(ApplicationVirtualization),包括仿真、模拟、解释技术等。

我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(ControlProgram,也被称为VirtualMachineMonitor或Hypervisor)隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。

虚拟机中运行的操作系统被称为客户机操作系统(GuestOS),运行虚拟机监控器的操作系统被称为主机操作系统(HostOS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如VMWARE的ESX产品),运行虚拟机的真实系统我们称之为主机系统。

1.3虚拟机迁移

虚拟机迁移技术为服务器虚拟化提供了便捷的方法。

目前流行的虚拟化工具如VMware,Xen,HyperV,KVM都提供了各自的迁移组件。

迁移服务器可以为用户节省管理资金、维护费用和升级费用。

以前的x86服务器,体积比较“庞大”;而现在的服务器,体积已经比以前小了许多,迁移技术使得用户可以用一台服务器来同时替代以前的许多台服务器,这样就节省了用户大量的机房空间。

另外,虚拟机中的服务器有着统一的“虚拟硬件资源”,不像以前的服务器有着许多不同的硬件资源(如主板芯片组不同,网卡不同,硬盘,RAID卡,显卡不同)。

迁移后的服务器,不仅可以在一个统一的界面中进行管理,而且通过某些虚拟机软件,如VMware提供的高可用性工具,在这些服务器因为各种故障停机时,可以自动切换到网络中另外相同的虚拟服务器中,从而达到不中断业务的目的。

总之,虚拟机迁移的优势在于简化系统维护管理、提高系统负载均衡、优化系统电源管理、增强系统错误容忍度以及增强系统抗毁伤能力。

1.3.1虚拟机迁移性能指标

一个优秀的迁移工具,目标是最小化整体迁移的时间和停机时间,并且将迁移对于被迁移主机上运行服务的性能造成的影响降至最低。

当然,这几个因素互相影响,实施者需要根据迁移针对的应用的需求在其中进行衡量,选用合适的迁移工具。

虚拟机迁移的性能指标包括以下三个方面:

a)对应用程序的性能影响:

迁移对于被迁移主机上运行服务性能的的影响程度;

b)停机时间:

迁移过程中,源主机、目的主机同时不可用的时间;

c)整体迁移时间:

从源主机开始迁移到迁移结束的时间。

1.3.2虚拟机迁移方式

虚拟机迁移有三种方式:

P2V(物理机到虚拟机的迁移Physical-to-Virtual),V2V(虚拟机到虚拟机的迁移Virtual-to-Virtual),V2P(虚拟机到物理机的迁移Virtual-to-Physical)。

1.3.2.1P2V迁移

P2V指迁移物理服务器上的操作系统及其上的应用软件和数据到VMM(VirtualMachineMonitor)管理的虚拟服务器中。

这种迁移方式,主要是使用各种工具软件,把物理服务器上的系统状态和数据“镜像”到VMM提供的虚拟机中,并且在虚拟机中“替换”物理服务器的存储硬件与网卡驱动程序。

只要在虚拟服务器中安装好相应的驱动程序并且设置与原来服务器相同的地址(如TCP/IP地址等),在重启虚拟机服务器后,虚拟服务器即可以替代物理服务器进行工作。

P2V迁移方式分为热迁移、半自动迁移和手动迁移三种。

随着P2V技术的发展,VMwarevCenterConverter和MicrosoftHyper-V已经能够提供热迁移功能,避免宕机。

目前,P2V热迁移仅在Windows物理服务器可用,未来将添加对Linux的支持。

半自动迁移是指利用专业工具辅助P2V的迁移,把某些手动环节进行自动化。

如利用RedHat的开源工具virt-p2v,MicrosoftVirtualServerMigrationToolkit等工具将物理机的磁盘数据转换成虚拟机格式。

手动迁移是指用户手动完成所有迁移操作,需要用户对物理机系统和虚拟机环境非常了解。

首先,关闭原有的物理机上的服务和操作系统,并且从其他媒质上启动一个新的系统;再把物理机系统的磁盘做成虚拟机镜像文件,如有多个磁盘则需要做多个镜像,并且拷贝镜像到虚拟主机上;最后,为虚拟机创建虚拟设备,加载镜像文件启动虚拟机,调整系统设置,并开启服务。

1.3.2.2V2V迁移

V2V迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件。

虚拟机从一个物理机上的VMM迁移到另一个物理机的VMM,这两个VMM的类型可以相同,也可以不同,如VMware迁移到KVM,KVM迁移到KVM。

可以通过多种方式将虚拟机从一个VMHost系统移动到另一个VMHost系统。

V2V迁移方式分为离线迁移、在线迁移两种。

离线迁移(offlinemigration)也叫做常规迁移、静态迁移。

在迁移之前需要将虚拟机暂停,如果使用共享存储,则只拷贝系统状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行;如果使用本地存储,则需要同时拷贝虚拟机镜像和状态到目的主机。

采用这种方式的迁移需要显示地停止虚拟机的运行,从用户角度看,有明确的一段服务不可用的时间,这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。

在线迁移(onlinemigration)也称为实时迁移(livemigration),它是指在保证虚拟机上服务正常运行的同时,虚拟机在不同的物理主机之间进行迁移,其逻辑步骤与离线迁移几乎完全一致。

不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。

迁移的前面阶段,服务在源主机运行,当迁移进行到一定阶段,目的主机已经具备了运行系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,服务在目的主机上继续运行。

对于服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的,在线迁移适用于对服务可用性要求很高的场景。

目前主流的在线迁移工具,如VMware的VMotion、XEN的xenMotion、libvirt/virt-manager图形化工具,都要求物理机之间采用SAN(storageareanetwork),NAS(network-attachedstorage)之类的集中式共享外存设备,因而在迁移时只需要考虑操作系统内存执行状态的迁移,从而获得较好的迁移性能。

1.3.2.3V2P迁移

V2P指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是P2V的逆操作,它可以同时迁移虚拟机系统到一台或多台物理机上。

尽管虚拟化的基本需求是整合物理机到虚拟机中,但这并不是虚拟化的唯一的应用,比如有时虚拟机上的应用程序的问题需要在物理机上验证,以排除虚拟环境带来的影响。

先配置好虚拟机,然后运用硬盘克隆工具如赛门铁克的Save&Restore(Ghost)复制数据至工作站硬件,最后在物理机上运行。

1.4KVM虚拟机迁移工具

虚拟机的迁移技术为服务器的虚拟化提供简便的方法,目前流行的虚拟化产品VMware,Xen,Hyper-V,KVM都提供各自的迁移工具。

其中Linux平台上开源的虚拟化工具KVM发展迅速,基于KVM的虚拟机迁移特性也日趋完善。

本文全面介绍如何在Ubuntu12.04LTS系统上安装KVM虚拟机和所需的开源软件,以及虚拟机静态迁移和动态迁移的特性,最后给出了应用libvirt/virt-manager图形化管理工具进行动态迁移的演示结果。

1.4.1KVM虚拟机管理工具

KVM(Kernel-basedVirtualMachine)是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。

它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。

准确来说,KVM仅仅是Linux内核的一个模块,因此,创建和管理完整的KVM虚拟机,需要更多的辅助工具来支撑。

1.4.1.1QEMU-KVM工具

在Linux系统中,首先我们可以用modprobe系统工具去加载KVM模块,如果用RPM安装KVM软件包,系统会在启动时自动加载模块。

只有加载了该模块后,才能进一步通过其他工具创建虚拟机,但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。

对于KVM的开发者来说,可以选择已经成型的开源虚拟化软件QEMU作为用户空间的工具。

QEMU是一个强大的虚拟化软件,它可以虚拟不同的CPU构架,比如说在x86的CPU上虚拟一个Power的CPU,并利用它编译出可运行在Power上的程序。

KVM使用了QEMU的基于x86的部分,并稍加改造,形成可控制KVM内核模块的用户空间工具QEMU-KVM。

因此,Linux发行版中分为kernel部分的KVM内核模块和QEMU-KVM工具,这就是KVM和QEMU的关系。

1.4.1.2Libvirt工具

尽管QEMU-KVM工具可以创建和管理KVM虚拟机,但由于QEMU工具效率不高且不易于使用,RedHat公司为KVM开发了更多的辅助工具,比如libvirt、libguestfs等。

libvirt是一套提供了多种语言接口的API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持KVM,而且支持Xen等其他虚拟机。

使用libvirt,我们只需要通过libvirt提供的函数连接到KVM或Xen宿主机,便可以用同样的命令来控制不同的虚拟机。

libvirt不仅提供了API,还自带一套基于文本的管理虚拟机的命令——virsh(虚拟化的交互式终端),我们可以通过使用virsh命令来使用libvirt的全部功能。

1.4.1.3Virt-manager工具

随着虚拟化的引入,物理主机得以摆脱单一实例操作系统的禁锢,用户可以通过多个操作系统用作虚拟机来有效地复用我们的主机。

但是,一个主机上的操作系统越密集,就越会增加管理需求。

这种管理问题的一个解决方案是VirtualMachineManager,或称为virt-manager。

virt-manager由RedHat公司使用Python语言开发的虚拟机管理图形界面,用于控制虚拟机的生命周期,包括虚拟机资源配给、网络管理,统计数据收集和报告,以及提供对虚拟机本身的简单图形访问。

vvirt-manager就是利用libvirt的API实现的,它除了提供对虚拟机的管理功能之外,virt-manager还通过一个嵌入式虚拟网络计算(VNC)客户端查看器为Guest虚拟机提供一个完整图形控制台。

virt-manager作为一个应用程序套件,它包括了一组常见的虚拟化管理工具。

这些工具在表1中列出,包括虚拟机构造、克隆、映像制作和查看等功能。

表1虚拟化管理应用程序

应用程序

描述

virt-manager

虚拟机桌面管理工具

virt-install

虚拟机配给工具

virt-clone

虚拟机映像克隆工具

virt-image

从一个XML描述符构造虚拟机

virt-viewer

虚拟机图形控制台

virsh

VirshGuest域的交互式终端

virt-manager使用libvirt虚拟化库来管理可用的虚拟机管理程序,libvirt公开了一个应用程序编程接口(API),该接口与大量开源虚拟机管理程序相集成,以实现控制和监视。

libvirt提供了一个名为libvirtd的守护程序,以帮助实施控制和监视,下图2为包含QEMU的virt-manager堆栈的简单示意图。

图2包含QEMU的virt-manager堆栈的简单示意图

1.4.1.4NFS工具

NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许一个系统在网络上与他人共享目录和文件。

通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

应用NFS至少有以下两个主要部分:

一台服务器和一台(或者更多)客户机,客户机远程访问存放在服务器上的数据。

1.5KVM虚拟机软件安装

安装KVM虚拟机所需软件如下:

SSH、NFS、Qemu、libvirt、virt-manager。

首先,在实验室子网的各台linux计算机的/etc/hosts文件里添加机器名和相应的IP地址,如图3中所示:

图3hosts主机列表

可以用#hostname机器名命令来修改机器名。

1.5.1安装SSH

SSH为SecureShell的缩写,是建立在应用层和传输层基础上的安全协议,它是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

在Ubuntu12.04中安装SSH的命令如下:

#sudoapt-getinstallssh

输入以下命令关闭防火墙:

#sudoufwdisabled

1.5.2安装NFS

NFS的原理是通过网络将远程主机共享的文件系统挂载到本机,Ubuntu12.04上默认是没有安装NFS服务器的,首先需要安装NFS服务程序:

在Ubuntu12.04中安装NFS的命令如下:

#sudoapt-getinstallnfs-kernel-server

安装nfs-kernel-server时,apt会自动安装nfs-common和portmap,这样,宿主机就相当于NFSServer。

打开/etc/exports文件,在末尾加入:

/home/kevin*(rw,sync,no_root_squash)

注:

nfs允许挂载的目录及权限在文件/etc/exports中进行定义,各字段含义如下:

/home/kevin:

要共享的目录

*:

允许所有的网段访问

rw:

读写权限

sync:

资料同步写入内在和硬盘

no_root_squash:

nfs客户端共享目录使用者权限

保存,退出。

修改完成之后输入:

#exportfs–rv来使配置文件生效。

重启服务:

#sudo/etc/init.d/portmaprestart<---重启portmap

图4重新启动portmap服务

#sudo/etc/init.d/nfs-kernel-serverrestart<---重启nfs服务

图5重新启动NFS服务

#showmount-e<---显示本机共享目录

图6显示本机共享目录

可以在本机上进行挂载测试:

#sudomount-tnfslocalhost:

/var/lib/libvirt/images/nfs_share/nfstest91

注:

localhost为本机linux的IP地址

这样就把共享目录挂载到了/nfstest91目录,取消挂载命令为:

#sudoumount/nfstest91

1.5.3安装qemu

首先,下载开源虚拟化软件qemu的安装包(qemu-1.7.0.tar.bz2),切换到root管理员权限(#sudo-s):

输入命令:

#tar-jxvfqemu-1.7.0.tar.bz2/home/mnclab,将安装文件解压缩到当前目录。

输入命令:

#mvqemu-1.7.0/usr/local/qemu,将解压缩包移动到文件夹目录/usr/local/qemu下。

安装以下依赖软件,其中uml-utilities、bridge-utils用于给kvm搭建网桥。

#sudoapt-getinstalllibzip-devlibsdl1.2-devuml-utilitiesdh-autoreconfbridge-utils

cd进入/usr/local/qemu/qemu-1.7.0目录,输入以下命令完成软件配置:

#./configure--prefix=/usr--localstatedir=/var–sysconfdir=/etc

输入#make命令完成软件编译,输入#makeinstall命令完成软件安装。

注意:

如果在#configure时提示缺少LIBVIRT_PRIVATE0.9.8文件,此时需要安装以下软件包:

#sudoapt-getinstalllibyajl-dev,此时继续#configure,则可执行成功。

如果在#make编译时提示在/usr/bin目录下缺少aclocal-1.13、automake-1.13、automake、automake-1.9文件,此时需要安装以下软件包:

automake-1.13.3-1.1ubuntu2-all.deb,双击该软件包,系统会自动安装,此时继续#make,则可执行成功。

1.5.4安装libvirt

首先,下载开源虚拟化软件libvirt的安装包(libvirt-1.1.4.tar.gz),切换到root管理员权限(#sudo-s):

输入命令:

#tar-zxvflibvirt-1.1.4.tar.gz/home/mnclab,将安装文件解压缩到当前目录。

输入命令:

#mvlibvirt-1.1.4/usr/local/qemu,将解压缩包移动到文件夹目录/usr/local/libvirt下。

安装以下依赖软件:

#sudoapt-getinstalllibxml2-devlibgnutls-devlibdevmapper-devpython-devlibnl-devlibpciaccess-devbuild-essential

cd进入/usr/local/libvirt/libvirt-1.1.4目录,输入以下命令完成软件配置:

#./configure--prefix=/usr--localstatedir=/var–sysconfdir=/etc

输入#make命令完成软件编译,输入#makeinstall命令完成软件安装。

注意:

如果在#configure时提示缺少LIBVIRT_PRIVATE0.9.8文件,此时需要安装以下软件包:

#sudoapt-getinstalllibyajl-dev,此时继续#configure,则可执行成功。

如果在#make编译时提示在/usr/bin目录下缺少aclocal-1.13、automake-1.13、automake、automake-1.9文件,此时需要安装以下软件包:

automake-1.13.3-1.1ubuntu2-all.deb,双击该软件包,系统会自动安装,此时继续#make,则可执行成功。

输入#virshversion命令查看软件是否安装成功,安装成功会显示以下版本:

图7软件安装成功版本号

1.5.4.1配置libvirt

libvirt安装成功后,要想启用libvirt来管理本地和远程计算机,还需要修改一些配置文件。

cd进入/etc/libvirt目录,打开qemu.conf文件修改默认的用户名和组名,(qemu.conf文件默认的用户名和组名是nobody),修改用户名:

usrer=mnclab,组名:

group=libvirt。

输入以下命令新建libvirt用户组:

#groupaddlibvirt

输入以下命令将某一用户加入libvirt用户组:

#gpasswd–ausrelibvirt

对于通过#gpasswd–ausrelibvirt命令加入到libvirt组的任何用户,必须通过以下命令更新用户组,:

#newgrplibvirt

cd进入/etc/libvirt目录,打开libvirtd.conf文件修改默认的组名、端口号及读写权限配置等,如下所示:

●mdsn_adv=0

●unix_sock_group="libvirt"

●unix_sock_ro_perms="0777"

●unix_sock_rw_perms="0770"

●auth_unix_ro="none"

●auth_unix_rw="none

配置完成后,输入以下命令重启libvirt-bin服务:

#sudoservicelibvirt-binrestart

1.5.4.2配置polkit

polkit工具包是一个应用程序级定义和处理策略,它是一个集中决策过程对无特权的应用程序授予访问特权操作的框架。

cd进入/var/lib/polkit-1/localauthority/10-vendor.d目录,打开org.libvirt.unix.

manage.pkla文件,将其中的内容删除,保留空文件。

cd进入/etc/polkit-1/localauthority/50-local.d目录,输入以下命令新建文件:

#sudotouch50-org.ubuntu-libvirt-remote.acces

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1