一、什麼是OVF檔案
開源虛擬化格式OVF(不同於小寫ovf)檔案是一種開源的檔案規格,它描述了一個開源、安全、有效、可拓展的攜帶型虛擬打包以及軟體分布格式,它一般有幾個部分組成,分別是ovf檔案、mf檔案、cert檔案、vmdk檔案和iso檔案。
二、OVF檔案工作原理以及各組件的作用
簡單來說,OVF檔案可以抽象看做一個由規定的幾個不同類型的檔案所組成的檔案包,這個檔案包可作為以後不同虛擬機器之間一個標準可靠的虛擬檔案格式,實現不同虛擬機器之間的通用性。它的每一個類型的檔案都在其中起到自己獨特的作用。
下面我們逐一做個介紹:
1)ovf 檔案:
a.簡介
ovf檔案在OVF檔案格式中起到了舉足輕重的作用,他的存在是保證了鏡像檔案vmdk,資源檔iso與虛擬機器domain配置之間的正確對應,作用就如同vmware中的vmx格式、以及Xen、kvm中的xml 設定檔。
b.內容詳細分析
我們以一個ovftool產生的ovf為例(全文看附錄)通過對內容的研究可知。
前兩行是對ovf檔案的一些基本資料作簡要說明主要內容包括了xml的版本,編碼規範以及建立檔案時的一些基本資料:
<?xml version="1.0"encoding="UTF-8"?>
<!--Generated by VMwareovftool 2.1.0 (build-467744), UTC time: 2011-10-08T04:29:32.179193Z-->
在基本資料之後,會有一個Envelope類型的說明,主要是規定了OVF檔案所用規範的一些基本定義位置以及基本變數內容的聲明。比如這裡xmlns:vmw內容就是對應後面的vmw:
<Envelope vmw:buildId="build-467744"xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common"xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"xmlns:vmw="http://www.vmware.com/schema/ovf"xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</Envelope>
一般來說,以上的內容只跟我們所用ovf格式的具體版本和供應商有關,在版本相同的情況下(也就是使用工具相同的情況下)以上內容並不會有什麼區別。真正控制ovf檔案工作的內容是後面部分,它和具體虛機配置緊密相關,在vmware中主要是靠vmx檔案進行轉換。
主要內容包括:
1)References類型
<References>
<Fileovf:compression="gzip" ovf:href="Winxp2-disk1.vmdk.gz"ovf:id="file1" ovf:size="573898140"/>
<Fileovf:compression="gzip" ovf:href="Winxp2-file1.iso.gz"ovf:id="file2" ovf:size="214903055"/>
</References>
以上兩句聲明了兩個鏡像分別對應OVF檔案包中的vmdk鏡像檔案以及iso資源檔並用file1,file2予以區別。
2)DiskSection類型
<DiskSection>
<Info>Virtual diskinformation</Info>
<Diskovf:capacity="40" ovf:capacityAllocationUnits="byte * 2^30"ovf:diskId="vmdisk1" ovf:fileRef="file1"ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized"ovf:populatedSize="1275461632"/>
</DiskSection>
在聲明了vmdk檔案為file1之後通過對DiskSection的配置,確定讓vmdk作為虛機的硬碟鏡像。
3)網路設定模組NetworkSection
<NetworkSection>
<Info>Thelist of logical networks</Info>
<Network ovf:name="bridged">
<Description>The bridgednetwork</Description>
</Network>
</NetworkSection>
4)與虛機機內容相關的配置模組
<VirtualSystemovf:id="vm">
<Info>A virtualmachine</Info>
<Name>Windows XPProfessional</Name>
<OperatingSystemSectionovf:id="67" vmw:osType="winXPProGuest">
<Info>The kind ofinstalled guest operating system</Info>
</OperatingSystemSection>
<VirtualHardwareSection>
<Info>Virtual hardwarerequirements</Info>
<System>
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
<vssd:InstanceID>0</vssd:InstanceID>
<vssd:VirtualSystemIdentifier>Windows XPProfessional</vssd:VirtualSystemIdentifier>
<vssd:VirtualSystemType>vmx-07</vssd:VirtualSystemType>
</System>
<Item>
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
<rasd:Description>Number of Virtual CPUs</rasd:Description>
<rasd:ElementName>1virtual CPU(s)</rasd:ElementName>
<rasd:InstanceID>1</rasd:InstanceID>
<rasd:ResourceType>3</rasd:ResourceType>
<rasd:VirtualQuantity>1</rasd:VirtualQuantity>
</Item>
<vmw:Configovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="false"/>
</VirtualHardwareSection>
</VirtualSystem>
上述文檔資訊主要是對各種vmx中的資訊進行歸類,比如說VirtualSystem聲明了hypervisor環境為vmware,同時聲明的還有虛擬機器的domain,系統內容、各種CPU配置等。
2)mf檔案
a.簡介
mf檔案主要是一些檔案SHA的集合,他主要起到的作用是防止鏡像檔案被非法使用者篡改,通過對執行個體的比對我們可以得出,mf檔案中各個檔案的SHA值是對該檔案的整個檔案內容進行的內容摘要。
b.執行個體內容如下:
SHA1(winxp_2.ovf)=87a7ef2d0d130d58b96905377ae3637d2de15260
SHA1(winxp_2-disk1.vmdk.gz)=597f3effb12b77898f9dc2e92b836211c30b95b1
SHA1(winxp_2-file1.iso.gz)=d59d519da9663c7245678efe08c21aa86cf96655
3).Cert檔案
a.詳細介紹
從對mf檔案的分析我們知道了,mf檔案主要作用是為了驗證各種虛機相關配置是否被惡意篡改,但是如何保證mf檔案本身的合法性呢?於是我們需要.Cert檔案來加以補充。Cert檔案主要分為2個部分,一部分是mf檔案的摘要,而另一部分是合法認證的認證內容。通過認證的驗證來實現驗證mf檔案合法性的驗證,進一步證明整個OVF檔案包的合法性。Cert認證的產生主要依賴PKI,可以通過openssl來實現。
4)vmdk檔案和iso檔案
這兩種檔案屬於同一類,在OVF中都是資源類,主要就是具體的鏡像資源。不同的區別是vmdk檔案內容主要是guestOS的內容,而iso是光碟機一類的內容。
三、與OVF有關的工具介紹以及ovf研究現狀
雖然OVF是一個跨平台的檔案格式標準,它的設計初衷是為了規範各種不同虛機之間的鏡像格式,但是由於出現的時間較短以及其他各方面的原因,使得他的推廣和研發進度並不盡如人意,就在市場和實用的基礎上,只有vmware一家公司已經有了比較成熟的工具——ovftool,現在我們能到手的文檔中很大一部分都是基於這個ovftool工具來實現的,在開源軟體方向來看,IBM也有相關的項目open-ovf,但是網上對它的介紹近乎沒有,我們所能擷取的唯一一個可以使用的版本是基於opensuse,而對這個工具使用除了簡易的操作手冊(詳見附錄2)以外也沒有其他類似說明。
總的來說,對OVF的研究,國外也剛處於起步階段,實際中並沒有什麼非常完善成熟的現成工具來借鑒。