使⽤VirtualMachineManager管理虚拟机
随着虚拟化的引⼊,物理主机得以摆脱单⼀实例操作系统的禁锢。我们有效地通过多个操作系统⽤作虚拟机 (VM) 来有效地复⽤我们的主机。但是,⼀个主机上的操作系统越密集,就越会增加管理需求。这种管理问题的⼀个解决⽅案是 Virtual Machine Manager,或称为 virt-manager。本⽂探讨了虚拟机管理器的使⽤,阐述了它在普通硬件上的能⼒,并展⽰了如何
管理和监视实时虚拟机性能。
尽管服务器管理在过去问题重重,但虚拟化管理简化了⼀些问题,却放⼤了另⼀些问题。⼀个服务器上的单⼀操作系统的时代已成过去,并由多个位于各⾃的虚拟机 (VM) 容器中的操作系统所取代。此属性(称为虚拟机密度)很有⽤,因为随着越来越多的虚拟机占⽤了更少数量的服务器,所需要的服务器硬件更少了。这带来了更少的硬件、更低的功耗,但却增加了管理复杂性。
所幸,已有解决⽅案来减轻服务器虚拟化带来的问题,其中以开源解决⽅案为⾸。其中⼀个由 Red Hat 开发的解决⽅案称为Virtual Machine Manager,该解决⽅案显著简化了管理虚拟机(在关键的开源虚拟管理程序上运⾏)的能⼒,同时为这些虚拟机提供了度量其性能和监视资源利⽤率的功能。
虚拟机管理程序和虚拟机管理
虚拟化为管理虚拟机、它们的资源和物理主机的基础资源带来了新的挑战。多个操作系统现在以虚拟机的形式共享⼀个物理主机的资源,操作系统与物理主机之间不再存在⼀对⼀的映射关系。每个虚拟机使⽤⼀个容器和其他元数据来表⽰,该容器持有⼀个或多个虚拟磁盘,⽽这些元数据⽤来描述该虚拟机的配置和约束条件。每个虚拟机共享物理主机的资源,主机不仅需要配置,还需要了解这些资源的利⽤率(以确保虚拟机具有合适的密度,能够最佳地使⽤主机,既不会给可⽤资源带来重负,也不会浪费它们)。
virt-manager 管理虚拟化的⽅法
Virtual Machine Manager (virt-manager) 是⼀个轻量级应⽤程序套件,形式为⼀个管理虚拟机的命令⾏或图形⽤户界⾯(GUI)。除了提供对虚拟机的管理功能之外,virt-manager还通过⼀个嵌⼊式虚拟⽹络计算 (VNC) 客户端查看器为 Guest 虚拟机提供⼀个完整图形控制台。
作为⼀个应⽤程序套件,virt-manager包括了⼀组常见的虚拟化管理⼯具。这些⼯具已在表 1 中列出,包括虚拟机构造、克隆、映像制作和查看。virsh实⽤程序不是virt-manager包的⼀部分,但它本⾝就具有很重要的价值。
表 1. 虚拟化管理应⽤程序(包括命令⾏⼯具)
应⽤程序描述
virt-manager虚拟机桌⾯管理⼯具
virt-install虚拟机配给⼯具
virt-clone虚拟机映像克隆⼯具
virt-image从⼀个 XML 描述符构造虚拟机
virt-viewer虚拟机图形控制台
virsh virsh Guest 域的交互式终端
virt-manager使⽤libvirt虚拟化库来管理可⽤的虚拟机管理程序。libvirt公开了⼀个应⽤程序编程接⼝ (API),该接⼝与⼤量开源虚拟机管理程序相集成,以实现控制和监视。libvirt提供了⼀个名为libvirtd的守护程序,帮助实施控制和监视(如下⾯的⼀个简单堆栈中所⽰)。
图 1. 包含 QEMU 的 virt-manager 堆栈的简单表⽰
包含 QEMU 的 virt-manager 堆栈的简单表⽰
Virtual Machine Manager 由 Red Hat 使⽤ Python 语⾔开发,⽤于控制虚拟机的⽣命周期,包括配给
、虚拟⽹络管理,统计数据收集和报告,以及提供对虚拟机本⾝的简单图形访问。
安装 virt-manager
要安装virt-manager包,可使⽤针对您的具体发⾏版的包管理器。对于 Ubuntu,使⽤apt:
$ sudo apt-get install virt-manager
apt命令安装的virt-manager应⽤程序套件使⽤⼤约 22MB 的磁盘空间。作为安装的⼀部分,libvirt守护程序应在运⾏。要进⾏验证,使⽤以下命令:
$ ps ax | grep libvirtd
该命令应显⽰libvirtd进程正在运⾏,使⽤-d选项告诉libvirtd以守护程序形式运⾏。回想⼀下,libvirtd就是这个守护程序,它允许从virt-manager应⽤程序连接到虚拟机管理程序并通过它们连接到它们托管的虚拟机。
要确认virt-manager包是否已经安装,以及了解virt-manager⽂件的位置,可使⽤which命令:
$ which virt-manager
virt-manager的位置也是套件中其他应⽤程序 (virt-install, virt-image等)的主⽬录。
作为最后⼀步,使⽤ QEMU 作为虚拟机管理程序,这是因为 QEMU 可在任何硬件上运⾏。作为⼀个模拟器,QEMU 运⾏得有点慢,但不需要新硬件的虚拟化扩展。
$ sudo apt-get install qemu
现在,使⽤virt-manager创建两个虚拟机并进⾏监视。
使⽤ virt-manager 创建和管理虚拟机
本节中的步骤创建两个虚拟机。
1. 安装⼀个基于 Linux® 的操作系统 SliTaz,这是⼀个由社区开发的 Linux 操作系统发⾏版。该系统也是轻量级的,在运⾏
QEMU 和模拟硬件环境时具有优势。可使⽤以下命令下载此虚拟机:
$ wget /iso/4.0/slitaz-4.0.iso
2. 要开始虚拟机创建过程,使⽤sudo以 root ⽤户启动virt-manager:
$ sudo virt-manager
打开virt-manager窗⼝,可通过该窗⼝连接到本地 QEMU 虚拟机管理程序(通过右键单击 localhost (QEMU),然后单击 Connect 来完成)。如果有更多虚拟机管理程序可⽤,那么它们应在这⾥列出,并可通过libvirt API 连接。
图 2. Virtual Machine Manager 窗⼝
Virtual Machine Manager 窗⼝
3. 当连接到本地 QEMU 虚拟机管理程序时,单击 Create Virtual Machine 图标,这将启动 VM Construction Wizard。
4. 将此虚拟机命名为slitaz1,并从⼀个本地 ISO(已在上⾯下载)发起您的操作系统安装。
图 3. 创建⼀个虚拟机
创建⼀个虚拟机
5. 单击 Forward 后,定义您的虚拟机的安装⽂件并为操作系统选择⼀个类型。在本例中,指定您的 ISO ⽂件,从操作系统
类型列表中选择Linux,然后从版本列表中选择 Ubuntu 10.04 LTS (Lucid Linux)。
图 4. 定义安装媒体
定义安装媒体
6. 定义虚拟机的执⾏环境。为此虚拟机分配 1GB 内存和⼀个单⼀ CPU。这些选择需要⼀些技巧,因为内存⼤⼩应适合您的
虚拟机(对于这个特定实例,1GB 有点⼤材⼩⽤)。CPU 可帮助(⽽且有时候会损害)操作系统。如果操作系统有效利⽤了多个核⼼,那么这些核⼼可分发给虚拟机。
图 5. 定义执⾏环境
定义执⾏环境
7. 定义虚拟机的存储环境。在本例中,请求virt-manager创建您的虚拟磁盘(⽽不是由您⾃⾏提供),并动态调整它的⼤⼩
(最⾼ 1 GB)。请注意,该磁盘选项可能影响安装和执⾏速度。如果将磁盘指定为动态,它最开始是
⼀个较⼩的主机⽂件,然后随着虚拟机对它的使⽤⽽扩展。此动态过程需要⽐较少时间来管理。备⽤选择是 raw,这是⼀个具有主机操作系统(虚拟机管理程序)的完整⼤⼩的磁盘映像。这⾥的代价是需要更多主机磁盘空间,但虚拟机的运⾏速度应该会更快,这是因为不需要动态调整过程。
图 6. 定义存储环境
定义存储环境
8. 作为最后⼀步,virt-manager提供了该虚拟机⽬前为⽌的摘要信息,从⽽允许您定义⽹络化选项(选择默认值:⽹络地址
转换 [NAT])。请注意,它还提供了额外的选项和信息,⽐如虚拟磁盘的物理位置。您也可以定义⾃⼰想要的基础处理器的类型。在本例中,选择 AMD i686 作为架构,但也可选择 x86-64。
图 7. 虚拟机的最后检查
虚拟机的最后检查
9. 当单击 Finish 时,启动虚拟机的过程就会开始。它⾸先引导⼀个 CD-ROM(您在其中提供了安装映像),这使得虚拟机
能够安装该 Linux。当安装完成时,重新启动(这会⾃动断开 CD-ROM)之后就会得到⼀个正常运⾏的虚拟机。请注意,此窗⼝只提供了虚拟机的视图,并允许您与它交互。您可关闭此窗⼝,但虚拟机会继续在后台运⾏(并且可在virt-manager root 窗⼝中看见它)。
图 8. 运⾏轻量级 SliTaz Linux 发⾏版的虚拟机
运⾏轻量级 SliTaz Linux 发⾏版的虚拟机
10. 要创建⼀个新虚拟机,只需克隆您现有的、已安装的虚拟机。指定您希望将虚拟机克隆到的virt-manager,然后克隆整个
磁盘(这样它们就不是共享的)。请注意,您可调整克隆的虚拟机的⼀些细节,⽐如⽹络配置。
图 9. 在 virt-manager 中克隆⼀个虚拟机
在 virt-manager 中克隆⼀个虚拟机
11. 单击 Clone 后,将基于第⼀个虚拟机创建⼀个新虚拟机,并且这个虚拟机可在它⾃⼰的 QEMU 环境中同时运⾏。如果要
及时抓取操作系统和应⽤程序环境的快照,或者要在为机器配置了⼀个给定应⽤程序(⽐如 Apache Hadoop)后为它们创建⼀个本地虚拟化集,那么克隆虚拟机就是⼀种不错的⽅式。在图 10 中,可以看到两个虚拟机都在执⾏,还能在virt-manager root 窗⼝中看到它们的 CPU 使⽤情况。
图 10. 克隆的虚拟机通过 virt-manager 同时运⾏
克隆的虚拟机通过 virt-manager 同时运⾏
本例阐述了虚拟机的创建、配置和执⾏的简单⽅法,⽆需详细了解基础虚拟机管理程序及其公开的众多选项(⽐如针对存储和⽹络管理)。尽管本例使⽤了 QEMU 提供的模拟,但 Linux 内核虚拟机 (KVM) 虚拟机管理程序可⽤于获取接近裸机的性能(使⽤硬件⽀持,⽐如 Intel® Virtual Technology [VT])。除了克隆虚拟机,这种功能还可通过virt-manager应⽤程序创建、暂停和重新启动虚拟机。
⽀持⼯具
尽管virt-manager是libvirt虚拟化 API 的⼀个⾸要⽤户,但有⼀个越来越庞⼤的⼯具⽣态系统在使⽤此接⼝进⾏虚拟化管理。virt-manager包提供了⼀个便捷的 GUI,⽤来在多个虚拟机管理程序和主机上创建和管理虚拟机。如果更喜欢命令⾏,那么会由许多⼯具为您提供只有命令⾏才能提供的能⼒和控制⼒。
python虚拟机
virt-install⼯具提供了配给新虚拟机的能⼒。virt-manager提供了少量针对虚拟机创建的配置选项,⽽virt-install提供了丰富的配置选项,包括安装⽅法、存储配置、⽹络配置、图形配置、虚拟化选项,以及⼀个庞⼤的虚拟化设备选项列表。
virt-image⼯具类似于virt-install⼯具,但⽀持您在 XML 中定义虚拟机创建过程的细节。该 XML 描述符⽂件指定了虚拟机的⼀般元数据、域属性(CPU、内存等),以及存储配置。
virt-clone⼯具提供了⼀种克隆现有的虚拟机映像的⽅式。提到克隆,我指的是复制现有的虚拟机,该虚拟机具有更新的参数,可确保新虚拟机是唯⼀的,从⽽避免发⽣冲突(⽐如 MAC 地址冲突)。
virt-viewer⼯具为⼀个使⽤ VNC 协议的给定虚拟机提供了⼀个图形控制台。virt-viewer可附加到在本地主机或远程主机上运⾏的虚拟机。
最后,管理 Guest 域的最强⼤的⼯具是虚拟化 shell,或者称为virsh。virsh可⽤于列出、启动和停⽌虚拟机,以及创建虚拟机。简⾔之,您可使⽤virsh跨虚拟机管理程序执⾏全⾯地管理公开在其他⼯具中未提供的虚拟化特性。
其他虚拟化管理解决⽅案
尽管virt-manager和其关联的⼯具为在桌⾯环境中管理虚拟机提供了⼀个有⽤的环境,但在⼀些情况下,
您可能喜欢功能更加丰富的平台虚拟化解决⽅案。Red Hat 还提供了⼀个名为oVirt的解决⽅案,该解决⽅案类似于virt-manager使
⽤libvirt来管理虚拟机和后端虚拟机管理程序。oVirt解决⽅案⽀持多个后端虚拟机管理程序,甚⾄可管理企业级存储协议,⽐如 Fibre Channel、iSCSI 和⽹络⽂件系统 (NFS)。oVirt解决⽅案还公开了⼀些企业级功能,⽐如在⼀个同构基础架构中的⾼可⽤性和实时迁移。
更多信息
virt-manager并不是简单的另⼀个⼯具:它朝着具有开放 API 和开放云堆栈(桌⾯、服务器、数据中⼼)的开放云⽅向发展。virt-manager和相关的⼯具为在桌⾯上管理虚拟化提供了⼀个既简单⼜强⼤的环境。⽆论您喜欢命令⾏的强⼤和脚本编写能⼒,还是喜欢 GUI 的简单性,virt-manager和它的相关⼯具都已为您提供。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论