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 存储架构 核心 存储卷:可分配给虚拟机使用或创建成存储池。卷可是一个块设备或文件 存储池:将资源池化分配使用 |