一、什么是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. Golang学习--平滑重启

    在上一篇博客介绍TOML配置的时候,讲到了通过信号通知重载配置.我们在这一篇中介绍下如何的平滑重启server. 与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只 ...

  2. 解决SoapFault (looks like we got no XML document)问题

    今天在调试项目的时候出现下面的错误信息: SoapFault looks like we got no XML document (D:\phpStudy\WWW\self.shop.xunmall. ...

  3. pymysql安装和使用

    一.pymysql安装 安装mymysql前请确认python环境已经准备好,在之前的博文http://www.cnblogs.com/newzol/p/8682176.html有说明pythonwe ...

  4. CRC 校验

    匠心零度 转载请注明原创出处,谢谢! 说明 上篇RocketMQ(二):RPC通讯介绍了rocketmq的一些rpc细节,其实这些内容不仅仅是rocketmq内容,任何通信模块基本都是类似的,这块内容 ...

  5. springboot字符集乱码

    入门扫盲:https://www.2cto.com/database/201701/584442.html 1.修改springweb类bug 2.数据库连接配置 3.数据库字符集 https://w ...

  6. Docker学习笔记 - Docker部署nginx网站

    一.制作 nginx 镜像 1.下载配置文件 mkdir /opt/nginx_docker && cd /opt/nginx_docker mkdir nginx && ...

  7. JSON(一)——JSON与JavaScript的关系

    JSON是一种轻量级的数据交换格式,全称--JavaScript 对象表示法(JavaScript Object Notation). 类比XML,你可以把JSON看作是一种存储数据的格式类型,一种数 ...

  8. Lintcode373 Partition Array by Odd and Even solution 题解

    [题目描述] Partition an integers array into odd number first and even number second. 分割一个整数数组,使得奇数在前偶数在后 ...

  9. [转]linux查看日志文件内容命令

    linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...

  10. create-keyframe-animation-js实现css3动画

    使用JavaScript在浏览器中动态生成CSS关键帧动画. enter(el, done) { // 设置动画帧数 let animation = { 0: { transform: `transl ...