zoukankan      html  css  js  c++  java
  • 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的方式。

      

  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/wn1m/p/11280605.html
Copyright © 2011-2022 走看看