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