ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:1.99MB ,
资源ID:30757505      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30757505.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(KVM虚拟机创建管理及迁移技术.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、KVM虚拟机创建管理及迁移技术KVM虚拟机创建、管理及迁移技术(初稿)*公司2014年1月20日KVM虚拟机创建、管理及迁移技术1 虚拟化技术 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。随着近年来多核系统、集群、网格以及云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,它不仅降低了 IT 成

2、本,而且还增强了系统安全性和可靠性。虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。在计算机科学领域中,虚拟化通常是指计算元件在虚拟的基础上而不是真实的基础上运行,代表着对计算资源的抽象,是一个为了简化管理、优化资源的解决方案。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程,可以把有限的固定的资源根据用户的不同需求进行重新规划以达到资源的最大利用率。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。1.1 服务器虚拟化服务器虚拟化就是将服

3、务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力。图1中所示为服务器虚拟化及迁移示意图。图 1 服务器虚拟化及迁移示意图1.2 虚拟化的分类虚拟化技术主要分为以下几个大类:a) 平台虚拟化(Platform Virtualization):针对计算机和操作系统的虚拟化;b) 资源虚拟化(Resource Virtualization):针对特定的系统资源的虚拟化,比如CPU、内存、存储、网

4、络资源等;c) 应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 Virtual Machine Monitor或Hypervisor)隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。 虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)

5、,运行虚拟机的真实系统我们称之为主机系统。1.3 虚拟机迁移 虚拟机迁移技术为服务器虚拟化提供了便捷的方法。目前流行的虚拟化工具如 VMware,Xen,HyperV,KVM 都提供了各自的迁移组件。迁移服务器可以为用户节省管理资金、维护费用和升级费用。以前的 x86 服务器,体积比较“庞大”;而现在的服务器,体积已经比以前小了许多,迁移技术使得用户可以用一台服务器来同时替代以前的许多台服务器,这样就节省了用户大量的机房空间。另外,虚拟机中的服务器有着统一的“虚拟硬件资源”,不像以前的服务器有着许多不同的硬件资源(如主板芯片组不同,网卡不同,硬盘,RAID 卡,显卡不同)。迁移后的服务器,不仅

6、可以在一个统一的界面中进行管理,而且通过某些虚拟机软件,如 VMware 提供的高可用性工具,在这些服务器因为各种故障停机时,可以自动切换到网络中另外相同的虚拟服务器中,从而达到不中断业务的目的。总之,虚拟机迁移的优势在于简化系统维护管理、 提高系统负载均衡、优化系统电源管理、增强系统错误容忍度以及增强系统抗毁伤能力。1.3.1 虚拟机迁移性能指标 一个优秀的迁移工具,目标是最小化整体迁移的时间和停机时间,并且将迁移对于被迁移主机上运行服务的性能造成的影响降至最低。当然,这几个因素互相影响,实施者需要根据迁移针对的应用的需求在其中进行衡量,选用合适的迁移工具。虚拟机迁移的性能指标包括以下三个方

7、面:a) 对应用程序的性能影响:迁移对于被迁移主机上运行服务性能的的影响程度;b) 停机时间:迁移过程中,源主机、目的主机同时不可用的时间;c) 整体迁移时间:从源主机开始迁移到迁移结束的时间。1.3.2 虚拟机迁移方式 虚拟机迁移有三种方式:P2V(物理机到虚拟机的迁移Physical-to-Virtual),V2V(虚拟机到虚拟机的迁移Virtual-to-Virtual),V2P(虚拟机到物理机的迁移Virtual-to-Physical)。1.3.2.1 P2V迁移 P2V 指迁移物理服务器上的操作系统及其上的应用软件和数据到 VMM(Virtual Machine Monitor)管

8、理的虚拟服务器中。这种迁移方式,主要是使用各种工具软件,把物理服务器上的系统状态和数据“镜像”到 VMM 提供的虚拟机中,并且在虚拟机中“替换”物理服务器的存储硬件与网卡驱动程序。只要在虚拟服务器中安装好相应的驱动程序并且设置与原来服务器相同的地址 (如 TCP/IP 地址等),在重启虚拟机服务器后,虚拟服务器即可以替代物理服务器进行工作。P2V迁移方式分为热迁移、半自动迁移和手动迁移三种。 随着 P2V 技术的发展,VMware vCenter Converter 和 Microsoft Hyper-V 已经能够提供热迁移功能,避免宕机。目前,P2V 热迁移仅在 Windows 物理服务器可

9、用,未来将添加对 Linux 的支持。 半自动迁移是指利用专业工具辅助 P2V 的迁移,把某些手动环节进行自动化。如利用RedHat 的开源工具 virt-p2v,Microsoft Virtual Server Migration Toolkit 等工具将物理机的磁盘数据转换成虚拟机格式。 手动迁移是指用户手动完成所有迁移操作,需要用户对物理机系统和虚拟机环境非常了解。首先,关闭原有的物理机上的服务和操作系统,并且从其他媒质上启动一个新的系统;再把物理机系统的磁盘做成虚拟机镜像文件,如有多个磁盘则需要做多个镜像,并且拷贝镜像到虚拟主机上;最后,为虚拟机创建虚拟设备,加载镜像文件启动虚拟机,调

10、整系统设置,并开启服务。1.3.2.2 V2V迁移 V2V 迁移是在虚拟机之间移动操作系统和数据,照顾主机级别的差异和处理不同的虚拟硬件。虚拟机从一个物理机上的 VMM 迁移到另一个物理机的 VMM,这两个 VMM 的类型可以相同,也可以不同,如 VMware 迁移到 KVM, KVM 迁移到 KVM。可以通过多种方式将虚拟机从一个 VM Host 系统移动到另一个 VM Host 系统。V2V迁移方式分为离线迁移、在线迁移两种。 离线迁移(offline migration)也叫做常规迁移、静态迁移。在迁移之前需要将虚拟机暂停,如果使用共享存储,则只拷贝系统状态至目的主机,最后在目的主机重建

11、虚拟机状态, 恢复执行;如果使用本地存储,则需要同时拷贝虚拟机镜像和状态到目的主机。采用这种方式的迁移需要显示地停止虚拟机的运行,从用户角度看,有明确的一段服务不可用的时间,这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。 在线迁移(online migration)也称为实时迁移(live migration),它是指在保证虚拟机上服务正常运行的同时,虚拟机在不同的物理主机之间进行迁移,其逻辑步骤与离线迁移几乎完全一致。不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机运行,当迁移进行到一定阶段,目的主机已经具备了运行系统的必

12、须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,服务在目的主机上继续运行。对于服务本身而言,由于切换的时间非常短暂,用户感觉不到服务的中断,因而迁移过程对用户是透明的,在线迁移适用于对服务可用性要求很高的场景。目前主流的在线迁移工具,如 VMware 的 VMotion、XEN 的 xenMotion、libvirt/virt-manager 图形化工具,都要求物理机之间采用 SAN(storage area network), NAS(network-attached storage)之类的集中式共享外存设备,因而在迁移时只需要考虑操作系统内存执行状态的迁移,从而获得较好的迁移

13、性能。1.3.2.3 V2P迁移V2P 指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作,它可以同时迁移虚拟机系统到一台或多台物理机上。尽管虚拟化的基本需求是整合物理机到虚拟机中,但这并不是虚拟化的唯一的应用,比如有时虚拟机上的应用程序的问题需要在物理机上验证,以排除虚拟环境带来的影响。先配置好虚拟机,然后运用硬盘克隆工具如赛门铁克的 Save & Restore (Ghost)复制数据至工作站硬件,最后在物理机上运行。1.4 KVM虚拟机迁移工具 虚拟机的迁移技术为服务器的虚拟化提供简便的方法,目前流行的虚拟化产品 VMware,Xen,Hyper-

14、V,KVM 都提供各自的迁移工具。其中 Linux 平台上开源的虚拟化工具 KVM 发展迅速,基于 KVM 的虚拟机迁移特性也日趋完善。本文全面介绍如何在Ubuntu 12.04 LTS 系统上安装KVM 虚拟机和所需的开源软件,以及虚拟机静态迁移和动态迁移的特性,最后给出了应用 libvirt/virt-manager 图形化管理工具进行动态迁移的演示结果。1.4.1 KVM虚拟机管理工具 KVM(Kernel-based Virtual Machine)是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以

15、相对于Xen,其核心源码很少。准确来说,KVM 仅仅是 Linux 内核的一个模块,因此,创建和管理完整的 KVM 虚拟机,需要更多的辅助工具来支撑。1.4.1.1 QEMU-KVM工具 在Linux系统中,首先我们可以用modprobe系统工具去加载KVM模块,如果用RPM安装KVM软件包,系统会在启动时自动加载模块。只有加载了该模块后,才能进一步通过其他工具创建虚拟机,但仅有KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具。对于KVM的开发者来说,可以选择已经成型的开源虚拟化软件QEMU作为用户空间的工具。QEMU是一个强大的虚拟化软件,它可以虚拟

16、不同的CPU构架,比如说在x86的CPU上虚拟一个Power的CPU,并利用它编译出可运行在 Power 上的程序。KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具 QEMU-KVM。因此,Linux发行版中分为kernel部分的KVM内核模块和QEMU-KVM工具,这就是 KVM 和 QEMU 的关系。1.4.1.2 Libvirt工具 尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,但由于QEMU 工具效率不高且不易于使用,RedHat公司 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。

17、libvirt 是一套提供了多种语言接口的 API,为各种虚拟化工具提供一套方便、可靠的编程接口,不仅支持 KVM,而且支持 Xen 等其他虚拟机。使用 libvirt,我们只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令来控制不同的虚拟机。libvirt 不仅提供了 API,还自带一套基于文本的管理虚拟机的命令 virsh(虚拟化的交互式终端),我们可以通过使用 virsh 命令来使用 libvirt 的全部功能。1.4.1.3 Virt-manager工具随着虚拟化的引入,物理主机得以摆脱单一实例操作系统的禁锢,用户可以通过多个操作系统用作虚拟机

18、来有效地复用我们的主机。但是,一个主机上的操作系统越密集,就越会增加管理需求。这种管理问题的一个解决方案是 Virtual Machine Manager,或称为 virt-manager。virt-manager由 Red Hat 公司使用 Python 语言开发的虚拟机管理图形界面,用于控制虚拟机的生命周期,包括虚拟机资源配给、网络管理,统计数据收集和报告,以及提供对虚拟机本身的简单图形访问。vvirt-manager 就是利用 libvirt 的 API 实现的,它除了提供对虚拟机的管理功能之外,virt-manager 还通过一个嵌入式虚拟网络计算 (VNC) 客户端查看器为 Gues

19、t 虚拟机提供一个完整图形控制台。virt-manager作为一个应用程序套件,它包括了一组常见的虚拟化管理工具。这些工具在表1中列出,包括虚拟机构造、克隆、映像制作和查看等功能。表 1 虚拟化管理应用程序应用程序描述virt-manager虚拟机桌面管理工具virt-install虚拟机配给工具virt-clone虚拟机映像克隆工具virt-image从一个XML描述符构造虚拟机virt-viewer虚拟机图形控制台virshVirsh Guest域的交互式终端virt-manager使用libvirt虚拟化库来管理可用的虚拟机管理程序,libvirt公开了一个应用程序编程接口 (API),

20、该接口与大量开源虚拟机管理程序相集成,以实现控制和监视。libvirt 提供了一个名为 libvirtd 的守护程序,以帮助实施控制和监视,下图2为包含 QEMU 的 virt-manager 堆栈的简单示意图。图 2 包含 QEMU 的 virt-manager 堆栈的简单示意图1.4.1.4 NFS工具 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。应用NFS至少有以下两个主要部分:一台服务器和一台(或者更多)客户机,客

21、户机远程访问存放在服务器上的数据。1. 5 KVM虚拟机软件安装安装KVM虚拟机所需软件如下:SSH、NFS、Qemu、libvirt、virt-manager。首先,在实验室子网的各台linux计算机的/etc/hosts文件里添加机器名和相应的IP地址,如图3中所示:图 3 hosts主机列表 可以用# hostname 机器名 命令来修改机器名。1.5.1 安装SSHSSH为 Secure Shell的缩写,是建立在应用层和传输层基础上的安全协议,它是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。在Ubuntu 12.

22、04中安装SSH的命令如下:# sudo apt-get install ssh输入以下命令关闭防火墙:# sudo ufw disabled1.5.2 安装NFSNFS的原理是通过网络将远程主机共享的文件系统挂载到本机,Ubuntu 12.04上默认是没有安装NFS服务器的,首先需要安装NFS服务程序:在Ubuntu 12.04中安装NFS的命令如下:# sudo apt-get install nfs-kernel-server安装nfs-kernel-server时,apt会自动安装nfs-common和portmap,这样,宿主机就相当于NFS Server。打开/etc/export

23、s文件,在末尾加入:/home/kevin *(rw,sync,no_root_squash) 注:nfs允许挂载的目录及权限在文件/etc/exports中进行定义,各字段含义如下: /home/kevin:要共享的目录 * :允许所有的网段访问 rw :读写权限 sync:资料同步写入内在和硬盘 no_root_squash:nfs客户端共享目录使用者权限 保存,退出。修改完成之后输入:# exportfs rv 来使配置文件生效。重启服务:#sudo /etc/init.d/portmap restart -重启portmap图 4 重新启动portmap服务#sudo /etc/ini

24、t.d/nfs-kernel-server restart -重启nfs服务图 5 重新启动NFS服务#showmount -e -显示本机共享目录图 6 显示本机共享目录可以在本机上进行挂载测试:#sudo mount -t nfs localhost:/var/lib/libvirt/images/nfs_share /nfstest91 注:localhost为本机linux的IP地址 这样就把共享目录挂载到了/nfstest91目录,取消挂载命令为:#sudo umount /nfstest911.5.3 安装qemu首先,下载开源虚拟化软件qemu的安装包(qemu-1.7.0.ta

25、r.bz2),切换到root管理员权限(#sudo -s):输入命令:#tar -jxvf qemu-1.7.0.tar.bz2 /home/mnclab,将安装文件解压缩到当前目录。输入命令:#mv qemu-1.7.0 /usr/local/qemu,将解压缩包移动到文件夹目录/usr/local/qemu下。安装以下依赖软件,其中uml-utilities、bridge-utils用于给kvm搭建网桥。#sudo apt-get install libzip-dev libsdl1.2-dev uml-utilities dh-autoreconf bridge-utils cd 进入/

26、usr/local/qemu/qemu-1.7.0目录,输入以下命令完成软件配置:#./configure -prefix=/usr -localstatedir=/var sysconfdir=/etc输入#make 命令完成软件编译,输入#make install 命令完成软件安装。注意:如果在#configure时提示缺少LIBVIRT_PRIVATE 0.9.8文件,此时需要安装以下软件包:#sudo apt-get install libyajl-dev,此时继续#configure,则可执行成功。如果在#make编译时提示在/usr/bin目录下缺少aclocal-1.13、aut

27、omake-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 -zxvf libvirt-1.1.4.tar.gz /home/mnclab,将安装文件解压缩到当前目录。 输入命令:#mv libvirt-1.1.4 /usr/local/qem

28、u,将解压缩包移动到文件夹目录/usr/local/libvirt下。安装以下依赖软件:#sudo apt-get install libxml2-dev libgnutls-dev libdevmapper-dev python-dev libnl-dev libpciaccess-dev build-essentialcd 进入/usr/local/libvirt/libvirt-1.1.4目录,输入以下命令完成软件配置:#./configure -prefix=/usr -localstatedir=/var sysconfdir=/etc输入#make 命令完成软件编译,输入#make

29、 install 命令完成软件安装。注意:如果在#configure时提示缺少LIBVIRT_PRIVATE 0.9.8文件,此时需要安装以下软件包:#sudo apt-get install libyajl-dev,此时继续#configure,则可执行成功。如果在#make编译时提示在/usr/bin目录下缺少aclocal-1.13、automake-1.13、automake、automake-1.9文件,此时需要安装以下软件包:automake-1.13.3-1.1ubuntu2-all.deb,双击该软件包,系统会自动安装,此时继续#make,则可执行成功。输入#virsh ver

30、sion命令查看软件是否安装成功,安装成功会显示以下版本:图 7 软件安装成功版本号1.5.4.1 配置libvirtlibvirt安装成功后,要想启用libvirt来管理本地和远程计算机,还需要修改一些配置文件。cd进入/etc/libvirt目录,打开qemu.conf文件修改默认的用户名和组名,(qemu.conf文件默认的用户名和组名是nobody),修改用户名:usrer=mnclab,组名:group=libvirt。输入以下命令新建libvirt用户组:#groupadd libvirt输入以下命令将某一用户加入libvirt用户组:#gpasswd a usre libvirt

31、对于通过#gpasswd a usre libvirt命令加入到libvirt组的任何用户,必须通过以下命令更新用户组,:#newgrp libvirtcd进入/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服务:#sudo

32、service libvirt-bin restart1.5.4.2 配置polkitpolkit工具包是一个应用程序级定义和处理策略,它是一个集中决策过程对无特权的应用程序授予访问特权操作的框架。cd进入/var/lib/polkit-1/localauthority/10-vendor.d目录,打开org.libvirt.unix.manage.pkla文件,将其中的内容删除,保留空文件。cd进入/etc/polkit-1/localauthority/50-local.d目录,输入以下命令新建文件:#sudo touch 50-org.ubuntu-libvirt-remote.acces

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

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