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庫的知識,對於一些初學者或正在從事虛擬化開發的技術人員來講,本文權當提供一種思路,如果有技術或項目上的問題不妨線下溝通。

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