Libvirt库对虚拟化开发的价值

       当前市面上多种虚拟化平台在支撑着各类用户的各种基础数据中心,有时候比较幸运用户统一虚拟化平台,如仅依赖于vmware,当然也面临其他用户同时混合多种虚拟化平台搭建自己的数据中心。不同的虚拟化平台存在对于用户来讲是福音,至少有了货比三家的机会;但对于开发者来讲,并不一定是好事,至少同样的功能针对不同的虚拟化平台要重新实现一遍。

       当前流行的针对虚拟化的二次开发,要么是调用平台对外提供的API、要么调用虚拟化平台的命令行、或者是通过WebService调用接口,或直接去写驱动去进行底层的定制化交互等。这不同的开发方式有时候意味着要混合编程 ,至少我就在多个系统中用过如:C、Java、PHP、Shell、Python等多种语言,这对以后的代码维护,以及功能升级都不是什么好兆头。

     如:一个支持ESX/KVM/XEN的多虚拟化平台的综合管理系统

      {

        (1) 用Java调用WebService接口去管理与控制ESX与vCenter;

        (2)用Shell、Python去调用ESX、XEN、KVM相关的命令执行一些特别的任务;

        (3)用C去开发KVM与XEN等平台的Agent;

        (4)用PHP去编写前端用户显示与管理门户;

      }

     随着参与的项目数量变多,不由自主的也在思考开发语言、开发模式统一的问题,包括萌生过自己编写一套统一的API库供未来的开发者使用,不过目前受限于经济成本与个人精力,很难去集中力量去攻克,只能去寻找一套第三方平台,通过技术评估与实测,目前认为基于libvirt库统一开发、管理与融合多虚拟化平台在技术路线上是可行的。

    libvirt库目前的版本支持多种虚拟化平台通用接口调用与管理,能够实现通常意义下的性能监测、存储池管理、网络池管理、虚拟主机管理等功能,当然由于封装的是通用性的库,因此也会丢失一些虚拟化平台的专用功能。但如果是满足通常的应用,或者是建立一套通用的管理平台应是足够了(实际用户使用时应有一套通用管理平台+各虚拟化平台自带的专用平台,相互形成合力)。

    下面简单介绍一下libvirt库的价值:

   (1)能够支持命令行的方式管理ESX、Hyper-v、KVM、XEN、VirtualBox等,如:virsh命令,通过定义esx://、qemu+ssh://、xen://等协议完成连接;

   (2)支持C、Java、Python、PHP、.net等多种开发接口,满足不同的开发人员的要求;

   (3)即可以在Windows平台,也支持Linux平台上的部署与开发;

   (4)有比较全的API技术手册,并且开发模式通用,如:操作性的函数以功能划分,开发流程基本类似;

   (5)开发速度与进度是有保障,如果想偷懒直接调用别人基于libvirt库封装的模块即可;

     不打算介绍太多的libvirt库的知识,对于一些初学者或正在从事虚拟化开发的技术人员来讲,本文权当提供一种思路,如果有技术或项目上的问题不妨线下沟通。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章