虚拟机值libvirt解析

Posted lifei02

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机值libvirt解析相关的知识,希望对你有一定的参考价值。

1.什么是libvirt

虚拟云实现的三部曲:虚拟化技术实现-->虚拟机管理-->集群资源管理(云管理)。各种不同的虚拟化技术都提供了基本的管理工具。比如,启动,停用,配置,连接控制台等。**这样在构建云管理的时候就存在两个问题:**

* 1) 如果采用混合虚拟技术,上层就需要对不同的虚拟化技术调用不同管理工具,很是麻烦。
* 2) 虚拟化技术发展很迅速,系统虚拟化和容器虚拟化均在发展和演化中。可能有新的虚拟化技术更加符合现在的应用场景,需要迁移过去。这样管理平台就需要大幅改动。

为了适应变化,我们惯用的手段是分层,使之相互透明,在虚拟机和云管理中设置一个抽象管理层。libvirt就是扮演的这个角色。有了它,上面两个问题就迎刃而解。libvirt提供各种API,供上层来管理不同的虚拟机。
Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的概念之上。
libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。

2.Libvirt主要支持的功能

虚拟机管理: 包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。

远程机器支持: 只要机器上运行了libvirt 
daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。支持多种网络远程传输,使用最简单的SSH,不需要额外配置工作。

存储管理: 任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件镜像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组、创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。因为libvirt可以远程工作,所有这些都可以通过远程主机使用。

网络接口管理: 任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。虚拟NAT和基于路由的网络:任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。

3.libvirt的工具virsh的使用:

下面是virsh的常用命令方法: 
(instancename 为虚拟机实例名)

virsh list                                #显示本地活动虚拟机
virsh list all                           #显示本地所有的虚拟机(活动的+不活动的)
virsh define ubuntu.xml                   #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh start instancename                  #启动名字为ubuntu的非活动虚拟机
virsh create ubuntu.xml                   # 创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
virsh suspend instancename                # 暂停虚拟机
virsh resume instancename                 # 启动暂停的虚拟机
virsh shutdown instancename               # 正常关闭虚拟机
virsh destroy instancename                # 强制关闭虚拟机
virsh dominfo instancename                #显示虚拟机的基本信息
virsh domname 2                           # 显示id号为2的虚拟机名
virsh domid instancename                  # 显示虚拟机id号
virsh domuuid instancename                # 显示虚拟机的uuid
virsh domstate instancename               # 显示虚拟机的当前状态
virsh dumpxml instancename                # 显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
virsh setmem instancename 512000          #给不活动虚拟机设置内存大小
virsh setvcpus instancename 4             # 给不活动虚拟机设置cpu个数
virsh edit instancename                   # 编辑配置文件(一般是在刚定义完虚拟机之后

4.libvirt 支持的虚拟技术:

目前支持的虚拟化技术包括:xen,qemu,kvm,lxc,openvz,virtualbox,test,storage,user mod linux ,主流的虚拟化技术基本都支持了。

5..Libvirt语言绑定

libvirt库用C(支持 C++)实现,且包含对Python的直接支持。不过它还支持大量语言绑定。目前已经对Ruby、Java语言,Perl和 OCaml实施了绑定。libvirt支持最流行的系统编程语言(C和C++)、多种脚本语言。因此,不管您侧重何种语言,都可以方便的应用Libvirt。



以上是关于虚拟机值libvirt解析的主要内容,如果未能解决你的问题,请参考以下文章

使用Python-Libvirt +GUI实现虚拟机界面化管理

使用libvirt工具栈管理kvm虚拟机

KVM虚拟化-libvirt杂记

Libvirt — 4 种主机虚拟化网络模式

Libvirt — 4 种主机虚拟化网络模式

KVM+Qemu+Libvirt实战