OVF協議:虛擬機的MP3格式
***篇章 OVF協議誕生記
所謂萬物皆有源,在介紹OVF協議之前,我們不能不提虛擬器件,而在提虛擬器件之前,我們還得從當前應用所面臨的困境談起。
應用的三大困境
雖然與應用相關的困境很多,但是總體看來,有三個方面的問題是比較突出的:
一是開發麻煩。最明顯的例子就是,在一個普通應用的整個開發和測試過程中,不僅需要兼顧多個平臺,例如Windows、Linux等,而且還要注意每個平臺的多個版本,例如Ubuntu 9.10、Ubuntu 8.04 LTS,等等。
二是部署麻煩。因為一個應用的安裝是很難離開艱澀的教程和繁瑣的步驟, 而且缺乏完善的安全和許可證的管理,這將導致使用者的利益很難得到保護,同時開發者的權益更難以捍衛。
三是維護麻煩。原因是一個應用不僅包括ISV(獨立軟件開發商)開發的軟件,還包括其他供應商的操作系統、中間件和數據庫等,這些因素都將為應用升級帶來潛在的麻煩,尋求技術支持時則有可能遭遇被廠商“踢皮球”的命運。
虛擬器件與OVF協議
那么,在云時代,有哪些云計算技術能幫助解決應用的困境呢?當然有很多,但其中最有代表性的莫過于虛擬器件(Virtual Appliance)。虛擬器件,是一個預配置的軟件堆棧,包括1個或多個虛擬機,而且其中每個虛擬機都可以自運行,而且自帶操作系統和相關的應用,并明確其所需的虛擬資源。虛擬器件和普通的虛擬機相比,它在跨平臺、對多層架構的支持、預配置和預優化等方面都具有一定的優勢。
在對應用的支持方面,虛擬器件是非常有幫助的,它能逐一化解當前應用部署的三個困境:
一是開發簡單。因為開發人員能限定應用自帶的操作系統、中間件和數據庫等軟件的版本,例如SLES 11、WAS 7和DB2 9.7等,這樣將有效縮小開發和測試的范圍,從而極大地降低應用開發和測試的難度與復雜度。
二是部署簡單。首先,如果使用虛擬器件方式部署的話,能將本來需要幾天的工作縮短到幾分鐘,能將本來幾十步操作精簡到輕輕一擊。其次,能非常簡單地將應用部署或者遷移到公有云上,以應對突發情況。
三是維護簡單。因為整個虛擬器件都是來自于同一個ISV,所以任何軟件升級和技術支持,都只要和一個ISV聯系就可以了,不僅避免了常見的扯皮現象,而且還簡化了相關流程。
雖然虛擬器件這個想法不錯,但是大家都知道“無以規矩不成方圓”的道理,所以,VMware帶領眾虛擬化技術提供商提出了Open Virtualization Format (簡稱“OVF”)協議來規范虛擬器件的發展。
因此,OVF協議就是用于發布和部署虛擬器件的開放標準。它是一種開放、安全、可遷移、有效、跨平臺以及可擴展的格式,以用于封裝和分發將在虛擬機上運行的軟件。
OVF協議被VMware CTO Steve Herrod喻為虛擬機的MP3格式,由業界著名DMTF(Distributed Management Task Force,分布式管理任務組) 協會制定和發布,同時隸屬于志在推動云計算互操作性的VMAN(Virtualization Management,虛擬化管理) 計劃,并且在2010年9月份正式被ANSI(American National Standards Institute、美國國家標準學會)定為美國國家標準。
雖然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格式
圖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信封是整個虛擬器件的核心文件,因為它定義了所有重要的元數據,主要包括以下幾個模塊:
◇ 磁盤(Disk)模塊:用于描述存放在OVF包內的虛擬磁盤的信息,例如磁盤的大小和格式。
◇ 網絡(Network)模塊:用于描述OVF包內虛擬機的網絡拓撲結構。
◇ 啟動(Startup)模塊:用于定義OVF包內多個虛擬機之間的啟動順序。
◇ 虛擬系統(Virtual System)模塊:用于描述一個虛擬機,并且作為一個容器,來包含多個隸屬于這個虛擬機的模塊,例如許可協議(Eula)模塊、資源分配(Resource Allocation)模塊、操作系統(Operating System)模塊和產品(Product)模塊等(各模塊特性參見表1)。整個OVF信封可包括多個虛擬系統模塊以支持多虛擬機的部署。
表1 虛擬系統子模塊
模塊名稱 描述
資源分配模塊 定義虛擬機所需要的資源量,例如vCPU的個數和內存的大小等。
許可協議模塊 包含與這個虛擬機相關的許可協議和法律條款,并且這些協議和條款都將在部署時被使用者確認。
產品模塊 用于描述安裝在虛擬機上軟件的信息,例如軟件的名字、版本號和供應商等,并定義一些重要的軟件配置信息,例如Web服務器和數據庫的開放端口等。此外,還將指定哪些配置是使用默認值,哪些配置是需要在部署時輸入的。
操作系統模塊 定義虛擬機內部操作系統的版本信息,例如Microsoft Windows Server 2008。
另一個值得一提的是OVF 環境文件。OVF 環境文件則常常用在部署階段,里面主要存放并維護來自OVF信封內的,產品模塊里面的配置信息。也就是說,信封文件的產品模塊里會定義有哪些值需要在部署之前輸入,而這些值實際存儲在環境文件中。此文件在部署時具體的使用流程是:首先,部署工具會讓用戶回答并確認信封的產品模塊內的軟件配置選項,例如Linux 系統的IP地址等。接著,部署工具會通過剛才的輸入生成新的OVF環境文件,并通過虛擬光驅或者虛擬軟驅將環境文件傳入虛擬機中。***,虛擬機上軟件會讀取這個文件,并執行相關的操作。
#p#
如何利用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應用的內部結構:
圖2.部署之前的Lamp應用
第三步,在虛擬化平臺上面(例如VMware vSphere 4)部署這個OVF包。首先,在部署時,虛擬化平臺會讓用戶確認信封內的產品模塊里面定義的軟件配置選項,例如兩個虛擬機的網絡地址和Apache等軟件的配置。接著,虛擬機平臺會根據剛才的設置自動生成一個OVF環境文件,并為這個文件創建一個ISO。***將生成的ISO做為虛擬的CD-ROM插入到虛擬機的虛擬光驅內。
第四步,在兩臺虛擬機(VM)啟動的時候,激活軟件會作為一個服務被啟動。首先,它會讀取虛擬光驅內的OVF環境文件。接著,它會根據OVF環境文件來設置虛擬機的網絡地址和相關軟件配置,***,確保應用能正常運行。圖3為部署之后Lamp應用的內部結構:
圖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的協同工作,它還能提供很多“靈丹妙藥”:
◇ 不僅能定制從簡單的單獨部署到復雜的集群部署等多種部署模式,而且能設置一些WAS的高級屬性,例如會話持久性和全局安全性等。
◇ 預優化。基于多年實戰經驗,IBM的工程師對WAS HV整個軟件堆棧進行了調優。
◇ 激活。每個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/2008、OpenSolaris、openSUSE Linux和Ubuntu Linux等。現有的AMI所支持的軟件更是數不勝數,例如在數據庫方面有IBM DB2、微軟 SQL Server 2005、Oracle數據庫11g和MySQL等;在批處理方面有Hadoop、Condor和Open MPI等;在應用服務器方面有IBM的WebSphere和Oracle的WebLogic等;當然還支持許許多多的開源軟件,例如Apache、Nginx和Ruby on Rails等。
和OVF相比, AMI不僅在使用率方面超越了OVF,而且在配套工具和社區方面的支持也毫不遜色,甚至被很多國外云計算專家稱為虛擬器件領域“事實的標準”,但是由于在開放性方面,OVF比私有的AMI優秀很多,這也導致在廠商支持方面,OVF遠甚于AMI,所以從長遠而言,我更看好OVF的發展。
作者簡介
吳朱華,曾在IBM中國研究院參與過多個云計算產品的開發工作,現在專注于YunTable(http://code.google.com/p/yuntable/)和YunEngine(http://yunengine.com/)的研發,并且即將發表《剖析云計算》一書,敬請期待。