OVF文件考究

简介:



一、什么是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的研究,国外也刚处于起步阶段,实际中并没有什么非常完善成熟的现成工具来借鉴。

















本文转自easy80851CTO博客,原文链接:http://blog.51cto.com/68240021/2052157 ,如需转载请自行联系原作者
相关文章
|
存储 虚拟化 Docker
Windows11 Docker镜像存储路径更改(非C盘路径)
本文是博主学习Docker的记录,对于C盘空间有限的同学,希望对大家有所帮助。
1814 0
Windows11 Docker镜像存储路径更改(非C盘路径)
|
10天前
|
Windows
Windows下文件夹映射的实现(将文件夹从一个盘映射到另一个盘)
Windows下文件夹映射的实现(将文件夹从一个盘映射到另一个盘)
15 0
|
3月前
|
Linux
将Linux虚拟机导出为OVF文件
将Linux虚拟机导出为OVF文件
37 1
|
6月前
|
Windows
VSS中上传一个文件夹(包括子文件夹和文件)
VSS中上传一个文件夹(包括子文件夹和文件)
|
7月前
|
存储 网络安全 虚拟化
Proxmox VE导入ESXI格式OVA、VMDK虚拟机文件
按照正常步骤建好虚拟机,之后删除掉该虚拟机的虚拟硬盘。本例中虚拟机VM ID为103,通过qm importdisk 进行导入挂载。具体导入位置,根据虚拟机存储情况进行确定,本示例为local-lvm。使用SCP工具,将OPNsense_22.7.4_ufs-disk1.vmdk上传到系统的root目录下。需要使用的文件为:OPNsense_22.7.4_ufs-disk1.vmdk。导入成功后,就能看到该硬盘,在该硬盘上点编辑,添加即可。
|
8月前
|
存储 虚拟化
VM导出和导入ova文件
ova文件(开放虚拟格式分发程序包)是VMware-workstation导出的文件,包含了此虚拟机的所有信息。导入ova文件,就导入了此虚拟机系统。
1602 0
|
9月前
|
存储
通过vCenter创建虚拟机OVF模板
通过vCenter创建虚拟机OVF模板
|
10月前
虚拟机ova文件的导入和导出
将安装好的虚拟机导出成ova文件
163 0
|
存储 JSON 安全
electron如何自定义目录,修改文件名保存下载的网络文件
很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。
electron如何自定义目录,修改文件名保存下载的网络文件