一、什么是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的版本,編碼規范以及創建文件時的一些基本信息:
- "1.0"encoding="UTF-8"?>
在基本信息之后,會有一個Envelope類型的說明,主要是規定了OVF文件所用規范的一些基本定義位置以及基本變量內容的聲明。比如這里xmlns:vmw內容就是對應后面的vmw:
- <envelope vmw:buildid=< span="" style="word-wrap: break-word;">"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">
一般來說,以上的內容只跟我們所用ovf格式的具體版本和提供商有關,在版本相同的情況下(也就是使用工具相同的情況下)以上內容並不會有什么區別。真正控制ovf文件工作的內容是后面部分,它和具體虛機配置緊密相關,在vmware中主要是靠vmx文件進行轉換。
主要內容包括:
1)References類型
- <fileovf:compression=< span="" style="word-wrap: break-word;">"gzip" ovf:href="Winxp2-disk1.vmdk.gz"ovf:id="file1" ovf:size="573898140"/>
- <fileovf:compression=< span="" style="word-wrap: break-word;">"gzip" ovf:href="Winxp2-file1.iso.gz"ovf:id="file2" ovf:size="214903055"/>
以上兩句聲明了兩個鏡像分別對應OVF文件包中的vmdk鏡像文件以及iso資源文件並用file1,file2予以區別。
2)DiskSection類型
- Virtual diskinformation
- <diskovf:capacity=< span="" style="word-wrap: break-word;">"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
- Thelist of logical networks
- <network ovf:name=< span="" style="word-wrap: break-word;">"bridged">
- The bridgednetwork
4)與虛機機內容相關的配置模塊
- <virtualsystemovf:id=< span="" style="word-wrap: break-word;">"vm">
- A virtualmachine
- Windows XPProfessional
- <operatingsystemsectionovf:id=< span="" style="word-wrap: break-word;">"67" vmw:osType="winXPProGuest">
- The kind ofinstalled guest operating system
- Virtual hardwarerequirements
- Virtual Hardware Family
- 0
- Windows XPProfessional
- vmx-07
- hertz * 10^6
- Number of Virtual CPUs
- 1virtual CPU(s)
- 1
- 3
- 1
- <vmw:configovf:required=< span="" style="word-wrap: break-word;">"false" vmw:key="cpuHotAddEnabled" vmw:value="false"/>
上述文檔信息主要是對各種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文件內容主要是用戶操作系統OS的內容,而iso是光驅一類的內容。
三、虛擬機包 OVF和OVA的區別
OVF(Open Virtualization Format:開放虛擬化格式 )和OVA(Open Virtualization Appliance:開放虛擬化設備),兩者包含所有用於部署虛擬機的必要信息。這兩種包封裝格式都是由DMTF(Distributed Management Task Force)所定義的。
兩者之間的主要區別是在包的描述和封裝。OVF包構造了必要的幾個文件(具體見上描述),所有這些在定義和部署的虛擬機必須用到的。相比之下,OVA包是一個單一的文件,所有必要的信息都封裝在里面。
OVF文件使用.ovf文件擴展名,同時一個OVF描述符,一個XML文件,用來描述打包的虛擬機。OVF還包含元數據和一個或更多的磁盤映像。或者,它也可能包含證書和其他附文件。
而OVA文件則采用.tar文件擴展名,包含了一個OVF 包中所有文件類型。這樣OVA單一的文件格式使得它非常便攜。