OVF協議:虛擬機的MP3格式

OVF協議誕生記數據庫

所謂萬物皆有源,在介紹OVF協議以前,咱們不能不提虛擬器件,而在提虛擬器件以前,咱們還得從當前應用所面臨的困境談起。安全

應用的三大困境服務器

雖然與應用相關的困境不少,可是整體看來,有三個方面的問題是比較突出的:網絡

  1. 開發麻煩。最明顯的例子就是,在一個普通應用的整個開發和測試過程當中,不只須要兼顧多個平臺,例如Windows、Linux等,並且還要注意每一個平臺的多個版本,例如Ubuntu 9.十、Ubuntu 8.04 LTS,等等;
  2. 部署麻煩。由於一個應用的安裝是很難離開艱澀的教程和繁瑣的步驟, 並且缺少完善的安全和許可證的管理,這將致使使用者的利益很可貴到保護,同時開發者的權益更難以捍衛;
  3. 維護麻煩。緣由是一個應用不只包括ISV(獨立軟件開發商)開發的軟件,還包括其餘供應商的操做系統、中間件和數據庫等,這些因素都將爲應用升級帶來潛在的麻煩,尋求技術支持時則有可能遭遇被廠商「踢皮球」的命運。

虛擬器件與OVF協議架構

那麼,在雲時代,有哪些雲計算技術能幫助解決應用的困境呢?固然有不少,但其中最有表明性的莫過於虛擬器件(Virtual Appliance)。虛擬器件,是一個預配置的軟件堆棧,包括1個或多個虛擬機,並且其中每一個虛擬機均可以自運行,並且自帶操做系統和相關的應用,並明確其所需的虛擬資源。虛擬器件和普通的虛擬機相比,它在跨平臺、對多層架構的支持、預配置和預優化等方面都具備必定的優點。併發

在對應用的支持方面,虛擬器件是很是有幫助的,它能逐一化解當前應用部署的三個困境:分佈式

  1. 開發簡單。由於開發人員能限定應用自帶的操做系統、中間件和數據庫等軟件的版本,例如SLES 十一、WAS 7和DB2 9.7等,這樣將有效縮小開發和測試的範圍,從而極大地下降應用開發和測試的難度與複雜度;
  2. 部署簡單。首先,若是使用虛擬器件方式部署的話,能將原本須要幾天的工做縮短到幾分鐘,能將原本幾十步操做精簡到輕輕一擊。其次,能很是簡單地將應用部署或者遷移到公有云上,以應對突發狀況;
  3. 維護簡單。由於整個虛擬器件都是來自於同一個ISV,因此任何軟件升級和技術支持,都只要和一個ISV聯繫就能夠了,不只避免了常見的扯皮現象,並且還簡化了相關流程。

雖然虛擬器件這個想法不錯,可是你們都知道「無以規矩不成方圓」的道理,因此,VMware帶領衆虛擬化技術提供商提出了Open Virtualization Format (簡稱「OVF」)協議來規範虛擬器件的發展。ide

所以,OVF協議就是用於發佈和部署虛擬器件的開放標準。它是一種開放、安全、可遷移、有效、跨平臺以及可擴展的格式,以用於封裝和分發將在虛擬機上運行的軟件。工具

OVF協議被VMware CTO Steve Herrod喻爲虛擬機的MP3格式,由業界著名DMTF(Distributed Management Task Force,分佈式管理任務組) 協會制定和發佈,同時隸屬於志在推進雲計算互操做性的VMAN(Virtualization Management,虛擬化管理) 計劃,而且在2010年9月份正式被ANSI(American National Standards Institute、美國國家標準學會)定爲美國國家標準。oop

雖然OVF協議發起人和主要負責人都是來自於VMware的,但由於其開放性和重要性,使得愈來愈多廠商開始支持此協議,甚至VMware的競爭對手Xen、思傑,以及虛擬化的開創者 IBM也參與了協議的制定。同時有一系列支持OVF的工具已經發布了,或者正處於測試階段,例如VMware的VMware Studio、思傑的Project Kensho、IBM的IBM OVF Toolkit等等。

除了上面這些支持OVF的工具,VMware爲了加速虛擬器件的傳播和OVF協議的推廣,還推出一個用於分發虛擬器件的在線市場,叫作「Virtual Appliance Marketplace」,簡稱「VAM」。它提供相似於蘋果App Store 的用戶體驗,來幫助用戶購買和試用上千種各式各樣的基於OVF格式的虛擬器件,從應用程序到操做系統,應有盡有。此外,VAM還包括一些工具和推薦信息來幫助用戶作正確的決定。使人欣慰的是, VAM 已是VMware 公司旗下最受歡迎的站點之一。

OVF協議詳解

設計理念

衆所周知,對於一個軟件而言,它的設計理念將會對它的發展起着很是重要的影響,而對於一個協議來說,更是如此。在談到OVF的設計理念時,它主要體如今下面這六個方面:

  1. 便於分發:支持虛擬器件的認證和完整性檢驗等安全措施,並提供軟件許可的管理機制;
  2. 支持多種架構:包括單個虛擬機、多個虛擬機或者多層(Multi-Tier)架構;
  3. 跨平臺:OVF協議不依賴於特定的虛擬化平臺,例如 VMware 或者 Xen;
  4. 開放協議:OVF協議是業界幾大虛擬化技術供應商之間合做的產物,而且鼓勵更多的企業參與其中;
  5. 可擴展:OVF協議不只能知足現有的要求,並且爲了知足虛擬器件技術不斷髮展和某些特殊的須要,它還支持必定程度的擴展;
  6. 支持本地化:這將能幫助那些非英語國家的用戶便利地使用。

能夠看出,在這六點中,便於分發、支持多種架構和跨平臺這三個特色對於應用都很是有幫助。

OVF格式

clip_p_w_picpath002

圖1. OVF包的結構

OVF協議經常使用的發佈格式是基於POSIX 1003.1 ustar標準的以「.ova」爲後綴名的壓縮包,簡稱爲「OVF包」。如圖1所示,一個OVF包主要有五種文件組成:

  1. OVF描述文件:一般稱爲「OVF信封」,是一個XML文檔,用於定義整個虛擬器件的組成部分(例如虛擬機),以及每一個組成部分的特性和資源需求,後綴名爲「.ovf」;
  2. 虛擬磁盤文件:即虛擬機的二進制磁盤鏡像;
  3. 清單文件:清單包含OVF包中各文件的 SHA-1 摘要(也稱「校驗和」),其做用是確保包的完整性,後綴名爲「.mf」;
  4. 證書文件:做用是經過對清單文件進行數字簽名來確保整個虛擬器件的可信性,以 base64編碼的X.509 證書形式存儲,後綴名爲「.cert」。
  5. OVF環境(Environment)文件:一個鍵值(Key-Value)形式的XML文檔,用於設定和維護虛擬機上軟件的配置,後綴名爲「.env」。

在上述五種文件中,OVF信封是整個虛擬器件的核心文件,由於它定義了全部重要的元數據,主要包括如下幾個模塊:

  1. 磁盤(Disk)模塊:用於描述存放在OVF包內的虛擬磁盤的信息,例如磁盤的大小和格式;
  2. 網絡(Network)模塊:用於描述OVF包內虛擬機的網絡拓撲結構。
  3. 啓動(Startup)模塊:用於定義OVF包內多個虛擬機之間的啓動順序。
  4. 虛擬系統(Virtual System)模塊:用於描述一個虛擬機,而且做爲一個容器,來包含多個隸屬於這個虛擬機的模塊,例如許可協議(Eula)模塊、資源分配(Resource Allocation)模塊、操做系統(Operating System)模塊和產品(Product)模塊等(各模塊特性參見表1)。整個OVF信封可包括多個虛擬系統模塊以支持多虛擬機的部署。

另外一個值得一提的是OVF 環境文件。OVF 環境文件則經常用在部署階段,裏面主要存放並維護來自OVF信封內的,產品模塊裏面的配置信息。也就是說,信封文件的產品模塊裏會定義有哪些值須要在部署以前輸入,而這些值實際存儲在環境文件中。此文件在部署時具體的使用流程是:首先,部署工具會讓用戶回答並確認信封的產品模塊內的軟件配置選項,例如Linux 系統的IP地址等。接着,部署工具會經過剛纔的輸入生成新的OVF環境文件,並經過虛擬光驅或者虛擬軟驅將環境文件傳入虛擬機中。最後,虛擬機上軟件會讀取這個文件,並執行相關的操做。

如何利用OVF協議部署應用

在這裏,咱們以一個典型的Lamp(Linux-Apache-MySQL-PHP)應用爲例,來說述如何利用OVF協議來部署應用。

第一步,啓動兩個空白的虛擬機。首先,在第一臺虛擬機上安裝Linux操做系統、Apache Web服務器和用於設置網絡和軟件配置的激活軟件(例如IBM Activation Engine),並加載PHP應用。其次,在另外一臺虛擬機上安裝Linux 操做系統、MySQL數據庫和激活軟件,並建立應用的數據庫表。最後,關閉這兩臺已經安裝成功的虛擬機,並導出它們的磁盤鏡像。

第二步,在OVF工具(例如IBM OVF Toolkit)上建立和編輯Lamp應用的OVF 信封,並在工具上導入在第一個步驟中生成的兩塊磁盤鏡像,最後在工具上生成文件名爲Lamp.ova的OVF包。須要說明的是,清單文件和認證文件通常都由OVF工具自動生成並放置在OVF包內。圖2爲部署以前Lamp應用的內部結構:

clip_p_w_picpath004

圖2. 部署以前的Lamp應用

第三步,在虛擬化平臺上面(例如VMware vSphere 4)部署這個OVF包。首先,在部署時,虛擬化平臺會讓用戶確認信封內的產品模塊裏面定義的軟件配置選項,例如兩個虛擬機的網絡地址和Apache等軟件的配置。接着,虛擬機平臺會根據剛纔的設置自動生成一個OVF環境文件,併爲這個文件建立一個ISO。最後將生成的ISO作爲虛擬的CD-ROM插入到虛擬機的虛擬光驅內。

第四步,在兩臺虛擬機(VM)啓動的時候,激活軟件會做爲一個服務被啓動。首先,它會讀取虛擬光驅內的OVF環境文件。接着,它會根據OVF環境文件來設置虛擬機的網絡地址和相關軟件配置,最後,確保應用能正常運行。圖3爲部署以後Lamp應用的內部結構:

clip_p_w_picpath006

圖3. 部署以後的Lamp應用

從這個流程來看,利用OVF協議來部署應用是很是方便和快捷的。更重要的是,當下次再部署相同應用的時候,只需經過點擊幾下鼠標部署以前製做好的OVF包便可。

OVF的不足之處

雖然OVF協議在不少方面都很優秀,可是仍是存在一些不足之處。

首先,它在跨平臺方面必定存在缺陷,雖然OVF協議支持跨平臺,但由於鏡像格式的限制,因此如今部分虛擬器件沒法跨平臺,其緣由是現有的虛擬器件主要使用VMware的VMDK做爲鏡像格式,而此格式在非VMware的平臺缺少支持。

其次,缺少一部分業界巨頭強力的支持。首先,Amazon已經在OVF協議以前推出了相似於OVF的私有格式AMI(Amazon Machine Images,Amazon機器鏡像),同時使用者甚衆,且短時間內彷佛沒有支持OVF的跡象。其次,雖然微軟已經代表了對OVF支持的態度,但惋惜到如今還未推出相關的產品。

此外,OVF包體積龐大——由於OVF包需攜帶磁盤鏡像的緣由,使得OVF包一般以GB爲單位,致使其難於經過網絡傳輸,這將影響其用戶體驗。雖然VMware已經提出了Delta Disk和Stream等技術,但在短時間內這個問題很難被克服。

OVF的將來

談到OVF的將來,首先,確定是對現有功能的強化,就像OVF最近推出1.1版本那樣,並無在範圍的擴展上作文章,而是加強其原有的部署功能,例如支持文件系統格式的鏡像。其次,OVF協議身爲VMAN計劃的一個核心的組成部分,在未來會進一步爲整個VMAN計劃服務,同時OVF頗有可能在已成爲美國國家標準的狀況下向ISO(國際標準化組織)和IEC(國際電工委員會)這兩個組織提交申請,力爭成爲國際標準。

在2007年10月初,當我第一次看到OVF協議初稿的時候,我不由暗暗讚歎這奇思妙想,並深信它將有助於整個IT事業的發展。3年後,當我看到OVF協議已經茁壯成長的時候,我不只更堅決了當初對它的指望,更以爲在從此雲計算的時代它將進一步推進應用的發展,使應用依舊爲王。

OVF與雲計算實踐

雖然,OVF 1.0協議正式發佈才半年,可是支持OVF協議的雲計算產品有如雨後春筍般不斷涌現,例如開源的Xen Cloud Platform和IBM的Systems Director等 ,並且產品的範圍橫跨公有云和私有云這兩個範疇。接下來,我將從這兩個範疇中各選取一個產品,來給你們分析一下OVF協議在這些產品中所發揮的做用,一個是VMware的vCloud Express,另外一個是IBM的WebSphere CloudBurst Appliance(簡稱WCA)。

OVF與VMware vCloud Express

在2009 VMworld大會上,VMware攜手衆多供應商推出了VMware vCloud Express。它是基於VMware vSphere 虛擬化平臺構建的企業級公有云解決方案,提供可靠和隨需應變的「Infrastructure as a Service(基礎設施即服務)」。

VMware vCloud Express最大的特點是靈活的遷移。從此用戶的工做負載不只能夠在兩個支持vCloud技術的企業數據中心之間實現靈活地遷移,從而提升可用性和優化資源,並且還能夠將工做負載在企業數據中心和vCloud公有云之間進行遷移,以應對突發狀況或者減小初始投入。

在VMware vCloud Express中,OVF協議處於很是核心地位。這是由於VMware vCloud Express默認的部署模型就是基於OVF協議的vApp,經過vApp模型能方便用戶上傳本地的應用。而且,vCloud API的核心也是基於OVF協議的。咱們說過,OVF協議以是應用爲核心的思想,它可以幫助用戶理解和使用這套API。

此外,經過使用公開的OVF協議將提高vCloud的互操做性和兼容性,使得應用能在多個數據中心或者雲之間進行自由的遷移。

OVF與IBM WCA

WCA是 IBM 在2009年推出的一款雲計算產品,提供了構建、部署、管理和維護 WebSphere虛擬器件的功能,並能高效地利用企業的共享資源池或者私有云 ,從而有效地下降相關基礎設施的投入。在這裏值得一提的是,我我的很是有幸地參與了這個旗艦級產品的研發,更從中獲益匪淺。

基於OVF協議的WebSphere虛擬器件是構建WCA的核心元素,同時WCA整個工做流程都是圍繞着這些虛擬器件展開的,這些虛擬器件中最具表明性就屬簡稱爲「WAS HV」的WebSphere Application Server 的虛擬化版本,它包括WAS的二進制文件和配置文件、IBM HTTP 服務器和一個 Novell 企業級SUSE操做系統。但它不只僅只是一個簡單虛擬化版WAS而已,經過與WCA的協同工做,它還能提供不少「靈丹妙藥」:

  1. 不只能定製從簡單的單獨部署到複雜的集羣部署等多種部署模式,並且能設置一些WAS的高級屬性,例如會話持久性和全局安全性等;
  2. 預優化。基於多年實戰經驗,IBM的工程師對WAS HV整個軟件堆棧進行了調優;
  3. 激活。每一個WAS HV都自帶IBM Activation Engine來自動激活系統網絡和WAS等。

OVF的「對手」

談到OVF的對手,其中最引入注目的莫過於AMI,AMI全稱爲「Amazon Machine Image(Amazon系統鏡像)」,它主要用於Amazon以提供虛擬機著稱的 EC2(Elastic Compute Cloud,彈性計算雲)雲服務。簡單地說,AMI能夠被認爲是基於Xen虛擬技術的虛擬器件,在鏡像裏面包含了操做系統和一些軟件,例如Apache和MySQL等。但和標準的虛擬器件不一樣的是,AMI並非基於OVF協議,而是基於Amazon EC2本身的一套規範來進行配置和調整,例如關於SSH認證的設定等。

用戶在建立虛擬機的時候,須要爲這個虛擬機選定一個AMI,在這個虛擬機啓動的時候,會經過讀寫這個AMI來啓動相關的操做系統,接着執行一些預先設定的程序,例如進行SSH相關的設置等。根據性質的不一樣,AMI主要可分爲三種:

  1. 私有的:用戶我的建立的AMI,在默認狀況下是設爲私有的,但也能夠受權其餘用戶來使用這個AMI;
  2. 公共的:用戶建立併發布到 Amazon Web Services 社區的AMI,任何用戶均可以使用這個AMI來啓動實例。
  3. 付費的:開發者能夠建立提供獨特功能的AMI,若是其餘用戶想使用這個AMI,須要按照使用的時間來向開發者付費。

如今開發人員或者用戶主要使用名爲「Amazon EC2 AMI Tools」的工具來建立AMI,當AMI建立成功以後,須要將這個AMI上傳至S3中,並將這個AMI註冊至EC2中。

截止到目前,AMI支持的操做系統有:Red Hat Enterprise Linux、Windows Server 2003/200八、OpenSolaris、openSUSE Linux和Ubuntu Linux等。現有的AMI所支持的軟件更是數不勝數,例如在數據庫方面有IBM DB二、微軟 SQL Server 200五、Oracle數據庫11g和MySQL等;在批處理方面有Hadoop、Condor和Open MPI等;在應用服務器方面有IBM的WebSphere和Oracle的WebLogic等;固然還支持許許多多的開源軟件,例如Apache、Nginx和Ruby on Rails等。

和OVF相比, AMI不只在使用率方面超越了OVF,並且在配套工具和社區方面的支持也絕不遜色,甚至被不少國外雲計算專家稱爲虛擬器件領域「事實的標準」,可是因爲在開放性方面,OVF比私有的AMI優秀不少,這也致使在廠商支持方面,OVF遠甚於AMI,因此從長遠而言,我更看好OVF的發展。

相關文章
相關標籤/搜索