virsh kvm xen xm qemu libvirt virt-manager概述 .

来源:互联网 发布:美即和一叶子知乎 编辑:程序博客网 时间:2024/05/12 20:01
在进行KVM虚拟化管理时,virsh的学习曲线非常陡峭。但是另一种可选方式virt-manager的缺陷还很明显。  virt-manager需要在系统内运行,这会浪费资源并为别有目的的人提供额外的进攻点。virt-manager的另一大缺点是需要通过图形工作站运行远程接入的方式,才能对服务器上的虚拟机进行管理。  而virsh则可以通过命令行执行各种各样的管理任务。本文例举了一些最重要的virsh命令。qemu是一套虚拟机管理系统,kqemu是qemu的加速器,可以认为是qemu的一个插件;qemu可以虚拟出不同架构的虚拟机,如在x86平台上可以虚拟出power机器; kvm是另外的一套虚拟机管理系统,包括内核虚拟构架和处理器相关模块,其借用了 quem 其它一些组件,kvm的非内核部分是由qemu实现的;加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有 KVM 模块是远远不够的,因为用户无法直接控制内核模块去做事情,还必须有一个用户空间的工具 qemu-kvm:kvm是linux的一个模块,管理和创建完整的虚拟机需要相应的一些管理工具,由于kvm是在qemu的基础上开发的,KVM 使用了 QEMU 的基于 x86 的部分,并稍加改造,形成可控制 KVM 内核模块的用户空间工具QEMU-KVM。 libvirt,virt-manager,virsh:由于qemu-kvm的效率及通用性问题,有组织开发了libvirt用于虚拟机的管理,带有一套基于文本的虚拟机的管理工具--virsh,以及一套用户渴望的图形界面管理工具--virt-manager。libvirt是用python语言写的通用的API,不仅可以管理KVM,也可用于管理XEN;KVM虚拟机的管理工具准确的来说,KVM仅仅是Linux内核的一个模块,管理和创建完整的KVM虚拟机,需要更多的辅助工具。QEMU-KVM:在Linux系统中,首先我们可以用modprobe命令加载KVM模块,如果用RPM安装KVM软件包,系统会在启动时自动加载模块,QEMU是一个强大的虚拟软件,它可以虚拟不同的构架Virt-manager:尽管QEMU-KVM工具可以创建和管理KVM虚拟机,RedHat 为KVM开发了更多的辅助工具,比如 libvirt libguestfs等,原因是QEMU工具效率不高,不易于使用。1. 查看虚拟系统的名称、CPU占用情况和内存占用情况 在virt-manager中选择要管理的虚拟系统,然后单击“细节”按钮,打开“虚拟系统状态”窗口,在这里可以查看虚拟系统的名称、CPU占用情况和内存占用情况 。如图-1 。 图-1查看虚拟系统的名称、CPU占用情况和内存占用情况 2. 查看和修改虚拟系统内存等硬件的状态和参数 选择“硬件”选项卡,在这里可以查看和修改虚拟系统内存等硬件的状态和参数 。如图-2。 图-2查看和修改虚拟系统内存等硬件的状态和参数 3. 虚拟机保存、停止和暂停 在virt-manager中选择要管理的虚拟系统,然后单击“打开”按钮,启动虚拟系统终端。在这里可以使用暂停、运行、关闭和保存等功能,如图-3。 图-3 虚拟机保存、停止和暂停 使用字符工具xm管理Xen虚拟机的命令 显示虚拟机运行状态 xm list 使用文本方式连接虚拟系统 xm console 开启虚拟系统 xm create 关闭虚拟系统 xm shutdown xm destroy 重新启动虚拟系统 xm reboot 将虚拟系统当前状态保存到文件中 xm save 恢复已保存的虚拟系统 xm restore 暂停虚拟系统 xm pause 恢复被暂停的虚拟系统 xm resumeXen虚拟机的故障解除 1 了解Xen 配置文件 Xen的配置文件包含下面的标准变量。这些文件里的配置项必须用引号(")括起来。这些配置文件位于 /etc/xen 目录里。 如表1 。 另外一个命令模式的 Xen 管理工具叫做virsh(Virtual Shell)。virsh 是由一个名为 libvirt的软件提供的管理工具,提供管理虚拟机更高级的能力。virsh大部分的功能与xm 一样,你可以利用 virsh 来启动、删除、控制、监控Xen 的区域,因此你也可以利用 virsh 来管理 Xen 中所有的虚拟机。你可能会很好奇,既然已经提供了xm管理工具,为何Red Hat Enterprise Linux 还需提供virsh?这是因为在Linux领域里,除了Xen外,还有许多种机制也提供虚拟化的功能,然而,不同的虚拟化系统的使用方法都不太相同。为了让Linux可以通过同一种方法读取与管理各种虚拟化子系统,libvirt团队(http://libvirt.org/ )便开发出了libvirt.so链接库,让软件的开发人员可以用 libvirt.so提供的API来管控所有的虚拟化系统。而virsh 就是利用 libvirt.so 链接库编写而成的管理工具。因此,不管实质上执行的是何种虚拟化子系统,你只需学会 virsh 的使用方法,就可以藉此来使用或管理各种虚拟化系统提供的虚拟机了。本节将介绍 virsh 这个管理工具的使用方法。1 基本语法virsh的基本用法如下: virsh [COMMAND] [ARGS...] 另外需要注意的是,virsh提供两种执行模式:"直接模式(Direct Mode)"与"互动模式(Interactive Mode)"。在直接模式里,你必须在Shell中以参数、自变量的方式来执行virsh,如果在互动模式中,则virsh会提供一个提示字符串,你可以在该提示字符串后,输入要执行的命令。如果执行virsh没有指定任何参数或自变量则默认就是进入互动模式。与xm一样,COMMAND也是 virsh提供的命令,常用的命令如表 28-5所示。表28-5 virsh常用命令一览表命令 说明 help 显示该命令的说明 quit 结束 virsh ,回到 Shell connect 连接到指定的虚拟机服务器 create 启动一个新的虚拟机 destroy 删除一个虚拟机 start 开启(已定义的)非启动的虚拟机 define 从 XML 定义一个虚拟机 undefine 取消定义的虚拟机 dumpxml 转储虚拟机的设置值 list 列出虚拟机 reboot 重新启动虚拟机 save 存储虚拟机的状态 restore 回复虚拟机的状态 suspend 暂停虚拟机的执行 resume 继续执行该虚拟机 dump 将虚拟机的内核转储到指定的文件,以便进行分析与排错 shutdown 关闭虚拟机 setmem 修改内存的大小 setmaxmem 设置内存的最大值 setvcpus 修改虚拟处理器的数量 而virsh命令语法的ARGS则是COMMAND 搭配的参数。不同的COMMAND可能需搭配不同的参数,至于什么COMMAND可以搭配哪些参数,我将会在对各功能的介绍中提到。总地来说,如果ARGS需指定虚拟机,你可以使用下列的格式指定是哪一个虚拟机器。虚拟机的名称。虚拟机启动后的标识符。虚拟机的 UUID。以下就是使用 virsh 的示范。[root@linux ~]# virsh ?①欢迎使用 virsh - 虚拟化的互动模式终端机。类型: 「help」以取得命令的求助画面「quit」离开virsh # listId 名称 状态----------------------------------0 Domain-0 执行中virsh # quit ②[root@linux ~]# virsh list ③Id 名称 状态----------------------------------0 Domain-0 执行中[root@linux ~]# ① 以互动模式执行 virsh。② 结束 virsh 的执行,回到默认的 Shell 下。③ 这是以直接模式执行 virsh,结果与互动模式完全一样。由于virsh与xm的部分功能相同,因此,本节仅介绍virsh与xm的不同之处。2 查看Domain信息virsh 可以查看虚拟机的相关信息,你只需在执行 virsh 时配合如表28-6所示的命令。表28-6 查看Domain信息执行的命令命令 说明 domid 查看虚拟机的标识符 domname 查看虚拟机的名称 domuuid 查看虚拟机的 UUID domstate 查看虚拟机目前的状态 dominfo 查看虚拟机的信息 执行上述的每一个命令时,你都必须指定虚拟机的名称、标识符和UUID。以下是我使用 virsh 查看虚拟机信息的示范。 [root@linux ~]# virsh domid system13 ?①[root@linux ~]# virsh domname 3system1 ②[root@linux ~]# virsh domuuid system18f35e0d3-f9d0-11f7-c0a5-30bd84228549 ③?[root@linux ~]# virsh dominfo system1 ④?Id: 3名称: system1UUID: 8f35e0d3-f9d0-11f7-c0a5-30bd84228549操作系统类型: linux状态: 以组绝处理器数目: 1 处理器时间: 23.7s 最大内存: 512000 KB已使用的内存: 511824 KB[root@linux ~]# ① 这是 system1 虚拟机的标识符。② 这是标识符 3 的虚拟机之名称。③ system1 的 UUID。④ 这则是 system1 完整的信息。3 转储区域配置除了上述的功能外,virsh也允许把某一个虚拟机目前的设置值存储下来。virsh把设置值存储下来的动作,称为"转储(Dump)"。转储虚拟机设置值有什么好处?好处很多,我至少想到两个。首先,转储虚拟机的设置值可以让你把某一个虚拟机的设置备份下来,以供日后恢复该设置配置。其次,如果要用 virsh 来启动一个虚拟机,你必须指定该虚拟机的配置文件。因此,如果你希望用virsh 来管理所有的虚拟机,那么请务必把每一个虚拟机的设置值转储下来后妥善保存。如果要转储虚拟机的设置值,你可以执行:virsh dumpxml DOMAIN 其中的DOMAIN就是要转储的虚拟机。你可以使用虚拟机的名称、标识符或是UUID来指定要转储到哪一个虚拟机。以下是我使用virsh转储虚拟机的范例。[root@linux ~]# virsh dumpxml system1 ?①system18f35e0d3f9d011f7c0a530bd84228549/usr/bin/pygrublinux/var/lib/xen/vmlinuz.39zui7/var/lib/xen/initrd.bTaKXXro root=LABEL=/5120001destroyrestartrestart
原创粉丝点击