libvirt原理
引用原文: https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/80142155
libvirt是目前使用最为广泛的针对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地和远程的virsh(命令行工具)调用,Libvirtd通过调用qemu-kvm操作管理虚拟机。libvirt 由应用程序编程接口 (API) 库、一个守护进程 (libvirtd),和默认命令行实用工具 (virsh)等部分组成。
libvirt第一个版本问世于2005年12月19日,其创始人是Daniel Veillard,libvirt项目虽然是开源的,但是也有它的copyright。目前libvirt项目copyright是Redhat的。目前大部分libvirt社区的维护者也是redhat主导。维护者列表大家可以看源码目录下的AUTHORS.in文件。其中Redhat占了16席,Suse和富士通各占2席。其中创始人Daniel Veillard目前基本不负责合代码,只负责出版本(锁库、打tag、偶尔自己跑一下测试用例、发版本release notes、解库)。注意libvirt社区maintainer中有两个Daniel,一个就是创始人Veillard,另外一个是Daniel P.Berrange。创始人相当于帮主,另外一个Daniel P也是个大牛,在社区的地位相当于副帮主,其他的maintainer都很听从他的建议。除了在libvirt社区邮件进行交流外,libvirt还在IRC上开放了在线交流频道。IRC是国际上一个知名度很高的类似于简单的聊天室功能的一个交流平台,很多开源组织和其他组织都会在上面开通自己的频道。
那么,libvirt支持什么? 一张图了解libvirt支持的Hypervisor和哪些管理工具支持libvirt。
对上层libvirt是个C语言库,但同时它也提供了其他编程语言的封装,这些语言使用libvirt封装好的libvirtmod。2014年以前的libvirt代码中,包含python接口,在2014年某个版本以后,将python单独提出去了,不再和libvirt代码使用同一个git库,独立成为libvirt-python的Git库。Libvirt目前也已经对Ruby、Java语言,Perl和 OCaml实施了绑定,支持最流行的系统编程语言(C和C++)、多种脚本语言。
它对下层libvirt也支持多种Hypervisor,几乎囊括了目前世界上所有主流/大公司的虚拟化Hyperviosr,主要包括的Hyperviosr如下:
LXC :Lightweight Linux Container System【Linux最早的容器技术,也是Docker实现容器早期底层调用库,目前已被完全替换为自有底层实现】
OpenVZ:OpenVZ是开源容器虚拟化软件,它是基于Linux平台的操作系统级实现服务器虚拟化解决方案
KVM: Kernel-based Virtual Machine/QEMU
Xen: Bare-Metal hypervisor
User-mode: Linux(UML) Paravirtualized kernel
VirtualBox
VMware ESX and GSX
VMware Workstation Player
Hyper-V: Windows 2008后实现的Hypervisors
PowerVM: IBM for AIX,Linux
Parallels Workstation :Apple Mac by Parallels IP Holdings GmbH
Bhyve: hypervisor for FreeBSD 9+
Libvirt的架构
没有使用libvirt架构如下左图,为支持各种Hypervisor的可扩展性,libvirt实施一种基于驱动程序的架构,该架构允许一种通用的API以通用方式为不同的Hyperviosr供服务。右图展示了libvirt API与相关驱动程序的层次结构(Hypervisor和Domain在同一个节点)。
Hypervisor和Domain位于不同节点上时,管理应用程序通过一种通用协议从本地libvirt连接到远程libvirtd,通过运行于远程节点的libvirtd的特殊守护进程来实现管理。libvirtd提供从远程应用程序访问本地Domain的方式。
libvirt原理的更多相关文章
- Libvirt Live Migration 与 Pre-Copy 实现原理
目录 文章目录 目录 Libvirt 的 Live Migration 网络数据传输层 控制层 通过 libvirt 库实现虚拟机迁移的示例 KVM 的预拷贝(Pre-Copy)Live Migrat ...
- [原] KVM 虚拟化原理探究(1)— overview
KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...
- KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- 【转】libvirt kvm 虚拟机上网 – Bridge桥接
libvirt kvm 虚拟机上网 – Bridge桥接 2013 年 7 月 3 日 / 东东东 / 暂无评论 目录 [hide] 1 Bridge桥接原理 2 在host机器配置桥接网络 2.1 ...
- libvirt TLS
博客原文 http://hi.baidu.com/wwfmarcpjkbdiod/item/7b43c89e949d7fbbcd80e590 构建Libvirt的x509证书远程tls连接http:/ ...
- <Mastering KVM Virtualization>:第二章 KVM内部原理
在本章中,我们将讨论libvirt.QEMU和KVM的重要数据结构和内部实现.然后,我们将深入了解KVM下vCPU的执行流程. 在这一章,我们将讨论: libvirt.QEMU和KVM的内部运作方式. ...
- 虚拟机迁移(QEMU动态迁移,Libvirt动(静)态迁移)
动静态迁移的原理 静态迁移是指在虚拟机关闭或暂停的情况下,将源宿主机上虚拟机的磁盘文件和配置文件拷贝到目标宿主机上.这种方式需要显式的停止虚拟机运行,对服务可用性要求高的需求不合适. *** 动态迁移 ...
- 干货分享: 长达250页的Libvirt Qemu KVM的ppt,不实验无真相
下载地址:Libvirt Qemu KVM 教程大全 http://files.cnblogs.com/popsuper1982/LibvirtQemuKVM.pptx 1. 概论 1.1 虚拟化的基 ...
- nova file injection的原理和调试过程
file injection代码 file injection原理来讲是比较简单的,在nova boot命令中,有参数--file,是将文件inject到image中 nova boot --flav ...
随机推荐
- c#栈的用法
栈是一种重要的线性结构,栈和队列是限定插入和删除只能在表的“端点”进行的线性表 –栈的元素必须“后进先出”. –栈的操作只能在这个线性表的表尾进行. –注:对于栈来说,这个表尾称为栈的栈顶(top), ...
- C语言----流程图(基础篇四)
大家晚上好,最近忙每天忙于项目没有时间更新自己的博客,时间就是海绵嘛硬挤挤就是有的,咂看标题" 流程图 ",编程界的一个不可或缺的技能,特别是在做复杂的逻辑的时候要处理好每一步的关 ...
- 用RD,GR,BL三个方法内代码生成一张图片(非原创,我只是完整了代码)
我公开以下图片的源代码,,是ppm格式的,,自己找到能打开的工具.. (非原创,我加工的代码,可直接执行运行输出,缩略图能看到效果) 这是原博客 http://news.cnblogs.com/n/ ...
- 带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin
在实际应用中,你做了那么多 Server 端,写了 N 个 RPC 方法.想看看方法的指标,却无处下手? 本文将通过 gRPC + Opentracing + Zipkin 搭建一个分布式链路追踪系统 ...
- C#视频拍照、视频录制项目示例
1.AForge 2.WPFMediaKit 3.ffmpeg
- 前端1-----HTML了解,内联标签(图片,超链接锚点,超链接邮箱)
前端1-----HTML了解,内联标签(图片,超链接锚点,超链接邮箱) 一丶自定制B/S # -*-coding:utf-8-*- # Author:Ds import socket IP_PORT= ...
- centos7 下gcc离线安装
1.在centos安装镜像文件ios中的Packages文件夹中需找安装文件: 把需要的文件直接复制出来就行. 这里提醒的一点是,如果用命令行进入该文件夹,因为文件路径带空格,所以需要加上双引号: [ ...
- 原油PETROLAEUM英语PETROLAEUM石油
petrolaeum (uncountable) Archaic spelling of petroleum petroleum See also: Petroleum Contents [hide] ...
- MongoDB Spark Connector 实战指南
Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java.Python.Scala.SQL 等多种 ...
- MySQL数据库中字符串函数之left、right用法
语法 LEFT(str,len) Returns the leftmost len characters from the string str, or NULL if any argument is ...