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。
原文地址:https://www.cnblogs.com/lifei02/p/9892438.html