Libvirt简介

Libvirt :是一个函数库,包含实现Linux虚拟化功能的linux API。提供了管理虚拟机的稳定的、统一的接口。其主要包括Libvirt API、Libvirtd进程和virsh工具集三个部分。

架构说明
              用户程序                            程序
                    |                                      |
            virsh工具集                     Libvirt  API         --------->接口层:负责接收程序和用户的指令
                                       |
Libvirt  library  /  Libvirtd (网络、安全、监控、存储等驱动)   --------->抽象驱动层:调用Libvirt  library  /  Libvirtd
                                       |                                                                          提供统一的接口
        QEMU          XEM          LXC          ------------->  具体驱动层:调用相应的虚拟化技术接口执行操作

Libivrt
是建立一套集中在虚拟化层面,面向应用的高级管理工具
1.所有API通过安全协议皆可远程操作
2.大部分API对虚拟化以及物理主机系统适用,部分API只应用于虚拟化管理
3.Libvirt  API 可以完成虚拟机需要的所有操作
4.Libvirt  API 不提供高级别的虚拟化策略或者多节点管理功能,例如负载均衡
5.Libvirt  API 可以监视和使用被管理物理主机节点的资源

Libvirt 驱动
     实现Libvirt功能的基本模块,保证了Libvirt程序可以处理和调用指定的虚拟化程序。Libvirt驱动在连接处理过程中被发现和注册,每个驱动都有一个注册API,负责加载指定的驱动
                |               |                          KVM
程序         |  ------      |  ---------->          XEN
                |               |                          QEMU
       公共API        驱动API(Libvirt) QpenVZ   虚拟化驱动技术

Libvirt支持的虚拟化技术
Xen :面向IA-32、IA-64和PowrePC 970架构的虚拟化监控程序
QEMU:面向各种架构的平台仿真器
KVM:Linux平台仿真器
LXC:用于操作系统虚拟化的Linux(轻量级)容器
OpenVZ:基于linux内核的操作系统级虚拟化
Virtual Box:x86虚拟化监控程序
User Mode Linux:面向各种架构的Linux平台仿真器
Test:面向伪虚拟化监控程序的测试驱动器
Storage:存储池驱动器(本地磁盘、网络磁盘、ISCSI卷)

Libvirtd 进程
     Libvirtd进程通过remote驱动可以远程处理对Libvirt驱动的访问请求
                |               |                         KVM                                          |                 |                             KVM
程序         |  ------      |  ---------->         XEN             Libvirtd进程 ----     |         ----   | -----                      XEN
                |               |                         ........                                          |                  |                              ...... 
       公共API     驱动API(Libvirt)   remote ----->                    公共API     驱动API(Libvirt)           remote
确定需要使用的驱动后,Libvirtd进程将请求路由到正确的驱动上,并且建立连接检索所有请求的信息,返回状态信息数据给应用

Libvirt网络架构
Libvirt简介

Libvirt 存储架构
核心
存储卷:可分配给虚拟机使用或创建成存储池。卷可是一个块设备或文件
存储池:将资源池化分配使用