libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。 The goal of libvirt: to provide a common and stable layer sufficient to securely manage domains on a node, possibly remote。
1. Libvirt API 不同版本的API具体参见:,主要为不同的虚拟化技术方案对外提供统一的接口,其设计思想为: (1)isolation from HV API changes - 隔离底层硬件虚拟化接口对上层的影响 (2)portable across HV - 支持多种os,如linux,windows,solairs等 (3)rapid application development - 提供封装的API,加快软件开发的过程 (4)TLS, SASL, SSH, PolicyKit - 提供各种加密协议,保证了上层应用对下层资源的安全访问 通过封装最原始的C库,实现了多种编程语言的接口:Perl, Python, OCaml, Java, Ruby,C#, Php,并对目前在应用层编程中常用的协议进行封装,形成不同的协议库,方便在应用层编程中调用,目前主要支持: (1)Mapping to CIM/DMTF: libvirt-cim 公共信息模型CIM,是一个与具体实现无关的、用于描述管理信息的概念性模型。 (2)Mapping to AMQP/QMF: libvirt-qmf AMQP是一个提供统一消息服务的应用层标准协议,是一种二进制协议,提供客户端应用与消息中间件之间异步、安全、高效地交互。 基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。 (3)Mapping to SNMP: libvirt-snmp 该库使得libvirt具备SNMP的功能,开发人员能够通过SNMP来监控和设置每个node上不同domain的信息 (4)Mapping to GObject: libvirt-glib