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

OVF文件考究的更多相关文章

  1. VMware Workstation与VM ware Esxi使用OVF文件交互

    实验环境: VMware Workstation  12 Pro 版本 VMware Esxi  6.0.0  版本 VMware Workstation安装一个Linux系统,把VMware Wor ...

  2. ESXi导出的CentOS7 ovf文件导入到workstation 无法打开GUI登录界面的问题解决方案

    1. 前几天将centos的机器导出为ovf 文件 然后使用 workstation 引入之后发现总是黑屏 然后有一个 横杠在闪 2. 解决办法是 修改centos的虚拟机配置文件,将显示器修改为这样 ...

  3. vmware导出OVF文件失败

    从VMware菜单栏选择导出到 .ovf. 显示导出失败 "Failed to open ..... .vmx". 尝试直接打开虚拟机,系统全部正常. 打开虚拟机所在目录,查找后缀 ...

  4. vmware workstation导入ovf文件报错:未通过OVF规范一致性或虚拟硬件合规性检查

    转自:https://blog.csdn.net/zs15yy/article/details/73793585 报错如下: 原因:这是因为OVF 版本不同导致的,VMware Workstation ...

  5. vmware vSphere client中,选择文件->部署OVF模板,报错处理方法

    在vmware vSphere client中,选择文件->部署OVF模板,选择指定的OVA文件,按步骤进行,则会出现这样的错误:此OVF软件包使用了不受支持的功能.OVF软件包需要不支持的硬件 ...

  6. 把ESXi中的虚拟机通过OVA/OVF导出的方式迁移到Proxmox 5

    引用地址:https://blog.csdn.net/zebra2011/article/details/83046841 一.前言    之前发现ESXi是免费的时候,非常兴奋地把几台服务器都装上了 ...

  7. VMware导入OVF时报错(未能部署OVF包用户取消了任务的解决办法)

    阅读目录: 1.问题 2.原因 3.解决方案 问题:部署OVF模版的时候报错“用户取消了任务” 原因:导出ovf模板时,虚拟CD-ROM的选项要选[客户端设备],否则导入时报错“用户取消了任务” 解决 ...

  8. vcenter或workstation12导入ovf出错:硬件系列vmx 14不受支持

    原因是因为导出ovf的虚拟机版本太高. 两个方法,一个强制,一个推荐. 强制 1. 打开ovf后缀文件,把<vssd:VirtualSystemType>vmx-14</vssd:V ...

  9. vmwear导出OVF模板解析(解决ovf导入服务器失败问题,虚拟机版本等)

    我们将vmwear虚拟机导出ovf模板后,有三个文件: 1,.mf 保存着.ovf和.vmdk两个文件的SHA1值,用于校验文件的完整性 2,.ovf 以XML格式保存着虚拟机的配置信息 3,.vmd ...

随机推荐

  1. Spring mvc中junit测试遇到com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException错误怎么解决

    今天遇到图片中的错误,纠结了一下,弄清楚了怎么从控制台中读取错误信息,并修改错误. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ...

  2. gradle入门(1-6)将Java项目从maven迁移到gradle

    gradle项目与maven项目相互转化(转) 转自: http://www.cnblogs.com/yjmyzz/p/gradle-to-maven.html 一.maven项目->gradl ...

  3. Vue全家桶

    简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...

  4. 关于vertical-align和line-height的真知灼见

    本文的重点是了解vertical-align和line-height的使用 涉及到的名词:基线,底端,行内框,行框,行间距,替换元素及非替换元素,对齐.只有充分理解这些概念才会灵活运用这两个属性. 什 ...

  5. SpringMVC(十一):SpringMVC 处理输出模型数据之SessionAttributes

    Spring MVC提供了以下几种途径输出模型数据:1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据:2)Map及Model:处理方法入参 ...

  6. SpringMVC(四):@RequestMapping结合org.springframework.web.filter.HiddenHttpMethodFilter实现REST请求

    1)REST具体表现: --- /account/1  HTTP GET       获取id=1的account --- /account/1  HTTP DELETE 删除id=1的account ...

  7. java集合详解

    1.java集合框架的层次结构 Collection接口: Set接口: HashSet具体类 LinkedHashSet具体类 TreeSet具体类 List接口:   ArrayList具体类 L ...

  8. WebGL文字渲染的那些问题

    THREE.js开发的应用运行在iphone5下发现有些时候会崩溃,跟了几天发现是因为Sprite太多频繁更新纹理占用显存导致的.通常解决纹理频繁更新问题就要用到one draw all方法,放到纹理 ...

  9. Efficient&Elegant:Java程序员入门Cpp

    最近项目急需C++ 的知识结构,虽说我有过快速学习很多新语言的经验,但对于C++ 老特工我还需保持敬畏(内容太多),本文会从一个Java程序员的角度,制定高效学习路线快速入门C++ . Java是为了 ...

  10. [JSOI2007]建筑抢修

    Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的 入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快 ...