OVF协议:虚拟机的MP3格式

OVF协议诞生记数据库

所谓万物皆有源,在介绍OVF协议以前,咱们不能不提虚拟器件,而在提虚拟器件以前,咱们还得从当前应用所面临的困境谈起。安全

应用的三大困境服务器

虽然与应用相关的困境不少,可是整体看来,有三个方面的问题是比较突出的:网络

  1. 开发麻烦。最明显的例子就是,在一个普通应用的整个开发和测试过程当中,不只须要兼顾多个平台,例如Windows、Linux等,并且还要注意每一个平台的多个版本,例如Ubuntu 9.十、Ubuntu 8.04 LTS,等等;
  2. 部署麻烦。由于一个应用的安装是很难离开艰涩的教程和繁琐的步骤, 并且缺少完善的安全和许可证的管理,这将致使使用者的利益很可贵到保护,同时开发者的权益更难以捍卫;
  3. 维护麻烦。缘由是一个应用不只包括ISV(独立软件开发商)开发的软件,还包括其余供应商的操做系统、中间件和数据库等,这些因素都将为应用升级带来潜在的麻烦,寻求技术支持时则有可能遭遇被厂商“踢皮球”的命运。

虚拟器件与OVF协议架构

那么,在云时代,有哪些云计算技术能帮助解决应用的困境呢?固然有不少,但其中最有表明性的莫过于虚拟器件(Virtual Appliance)。虚拟器件,是一个预配置的软件堆栈,包括1个或多个虚拟机,并且其中每一个虚拟机均可以自运行,并且自带操做系统和相关的应用,并明确其所需的虚拟资源。虚拟器件和普通的虚拟机相比,它在跨平台、对多层架构的支持、预配置和预优化等方面都具备必定的优点。并发

在对应用的支持方面,虚拟器件是很是有帮助的,它能逐一化解当前应用部署的三个困境:分布式

  1. 开发简单。由于开发人员能限定应用自带的操做系统、中间件和数据库等软件的版本,例如SLES 十一、WAS 7和DB2 9.7等,这样将有效缩小开发和测试的范围,从而极大地下降应用开发和测试的难度与复杂度;
  2. 部署简单。首先,若是使用虚拟器件方式部署的话,能将原本须要几天的工做缩短到几分钟,能将原本几十步操做精简到轻轻一击。其次,能很是简单地将应用部署或者迁移到公有云上,以应对突发状况;
  3. 维护简单。由于整个虚拟器件都是来自于同一个ISV,因此任何软件升级和技术支持,都只要和一个ISV联系就能够了,不只避免了常见的扯皮现象,并且还简化了相关流程。

虽然虚拟器件这个想法不错,可是你们都知道“无以规矩不成方圆”的道理,因此,VMware带领众虚拟化技术提供商提出了Open Virtualization Format (简称“OVF”)协议来规范虚拟器件的发展。ide

所以,OVF协议就是用于发布和部署虚拟器件的开放标准。它是一种开放、安全、可迁移、有效、跨平台以及可扩展的格式,以用于封装和分发将在虚拟机上运行的软件。工具

OVF协议被VMware CTO Steve Herrod喻为虚拟机的MP3格式,由业界著名DMTF(Distributed Management Task Force,分布式管理任务组) 协会制定和发布,同时隶属于志在推进云计算互操做性的VMAN(Virtualization Management,虚拟化管理) 计划,而且在2010年9月份正式被ANSI(American National Standards Institute、美国国家标准学会)定为美国国家标准。oop

虽然OVF协议发起人和主要负责人都是来自于VMware的,但由于其开放性和重要性,使得愈来愈多厂商开始支持此协议,甚至VMware的竞争对手Xen、思杰,以及虚拟化的开创者 IBM也参与了协议的制定。同时有一系列支持OVF的工具已经发布了,或者正处于测试阶段,例如VMware的VMware Studio、思杰的Project Kensho、IBM的IBM OVF Toolkit等等。

除了上面这些支持OVF的工具,VMware为了加速虚拟器件的传播和OVF协议的推广,还推出一个用于分发虚拟器件的在线市场,叫作“Virtual Appliance Marketplace”,简称“VAM”。它提供相似于苹果App Store 的用户体验,来帮助用户购买和试用上千种各式各样的基于OVF格式的虚拟器件,从应用程序到操做系统,应有尽有。此外,VAM还包括一些工具和推荐信息来帮助用户作正确的决定。使人欣慰的是, VAM 已是VMware 公司旗下最受欢迎的站点之一。

OVF协议详解

设计理念

众所周知,对于一个软件而言,它的设计理念将会对它的发展起着很是重要的影响,而对于一个协议来说,更是如此。在谈到OVF的设计理念时,它主要体如今下面这六个方面:

  1. 便于分发:支持虚拟器件的认证和完整性检验等安全措施,并提供软件许可的管理机制;
  2. 支持多种架构:包括单个虚拟机、多个虚拟机或者多层(Multi-Tier)架构;
  3. 跨平台:OVF协议不依赖于特定的虚拟化平台,例如 VMware 或者 Xen;
  4. 开放协议:OVF协议是业界几大虚拟化技术供应商之间合做的产物,而且鼓励更多的企业参与其中;
  5. 可扩展:OVF协议不只能知足现有的要求,并且为了知足虚拟器件技术不断发展和某些特殊的须要,它还支持必定程度的扩展;
  6. 支持本地化:这将能帮助那些非英语国家的用户便利地使用。

能够看出,在这六点中,便于分发、支持多种架构和跨平台这三个特色对于应用都很是有帮助。

OVF格式

clip_p_w_picpath002

图1. OVF包的结构

OVF协议经常使用的发布格式是基于POSIX 1003.1 ustar标准的以“.ova”为后缀名的压缩包,简称为“OVF包”。如图1所示,一个OVF包主要有五种文件组成:

  1. OVF描述文件:一般称为“OVF信封”,是一个XML文档,用于定义整个虚拟器件的组成部分(例如虚拟机),以及每一个组成部分的特性和资源需求,后缀名为“.ovf”;
  2. 虚拟磁盘文件:即虚拟机的二进制磁盘镜像;
  3. 清单文件:清单包含OVF包中各文件的 SHA-1 摘要(也称“校验和”),其做用是确保包的完整性,后缀名为“.mf”;
  4. 证书文件:做用是经过对清单文件进行数字签名来确保整个虚拟器件的可信性,以 base64编码的X.509 证书形式存储,后缀名为“.cert”。
  5. OVF环境(Environment)文件:一个键值(Key-Value)形式的XML文档,用于设定和维护虚拟机上软件的配置,后缀名为“.env”。

在上述五种文件中,OVF信封是整个虚拟器件的核心文件,由于它定义了全部重要的元数据,主要包括如下几个模块:

  1. 磁盘(Disk)模块:用于描述存放在OVF包内的虚拟磁盘的信息,例如磁盘的大小和格式;
  2. 网络(Network)模块:用于描述OVF包内虚拟机的网络拓扑结构。
  3. 启动(Startup)模块:用于定义OVF包内多个虚拟机之间的启动顺序。
  4. 虚拟系统(Virtual System)模块:用于描述一个虚拟机,而且做为一个容器,来包含多个隶属于这个虚拟机的模块,例如许可协议(Eula)模块、资源分配(Resource Allocation)模块、操做系统(Operating System)模块和产品(Product)模块等(各模块特性参见表1)。整个OVF信封可包括多个虚拟系统模块以支持多虚拟机的部署。

另外一个值得一提的是OVF 环境文件。OVF 环境文件则经常用在部署阶段,里面主要存放并维护来自OVF信封内的,产品模块里面的配置信息。也就是说,信封文件的产品模块里会定义有哪些值须要在部署以前输入,而这些值实际存储在环境文件中。此文件在部署时具体的使用流程是:首先,部署工具会让用户回答并确认信封的产品模块内的软件配置选项,例如Linux 系统的IP地址等。接着,部署工具会经过刚才的输入生成新的OVF环境文件,并经过虚拟光驱或者虚拟软驱将环境文件传入虚拟机中。最后,虚拟机上软件会读取这个文件,并执行相关的操做。

如何利用OVF协议部署应用

在这里,咱们以一个典型的Lamp(Linux-Apache-MySQL-PHP)应用为例,来说述如何利用OVF协议来部署应用。

第一步,启动两个空白的虚拟机。首先,在第一台虚拟机上安装Linux操做系统、Apache Web服务器和用于设置网络和软件配置的激活软件(例如IBM Activation Engine),并加载PHP应用。其次,在另外一台虚拟机上安装Linux 操做系统、MySQL数据库和激活软件,并建立应用的数据库表。最后,关闭这两台已经安装成功的虚拟机,并导出它们的磁盘镜像。

第二步,在OVF工具(例如IBM OVF Toolkit)上建立和编辑Lamp应用的OVF 信封,并在工具上导入在第一个步骤中生成的两块磁盘镜像,最后在工具上生成文件名为Lamp.ova的OVF包。须要说明的是,清单文件和认证文件通常都由OVF工具自动生成并放置在OVF包内。图2为部署以前Lamp应用的内部结构:

clip_p_w_picpath004

图2. 部署以前的Lamp应用

第三步,在虚拟化平台上面(例如VMware vSphere 4)部署这个OVF包。首先,在部署时,虚拟化平台会让用户确认信封内的产品模块里面定义的软件配置选项,例如两个虚拟机的网络地址和Apache等软件的配置。接着,虚拟机平台会根据刚才的设置自动生成一个OVF环境文件,并为这个文件建立一个ISO。最后将生成的ISO作为虚拟的CD-ROM插入到虚拟机的虚拟光驱内。

第四步,在两台虚拟机(VM)启动的时候,激活软件会做为一个服务被启动。首先,它会读取虚拟光驱内的OVF环境文件。接着,它会根据OVF环境文件来设置虚拟机的网络地址和相关软件配置,最后,确保应用能正常运行。图3为部署以后Lamp应用的内部结构:

clip_p_w_picpath006

图3. 部署以后的Lamp应用

从这个流程来看,利用OVF协议来部署应用是很是方便和快捷的。更重要的是,当下次再部署相同应用的时候,只需经过点击几下鼠标部署以前制做好的OVF包便可。

OVF的不足之处

虽然OVF协议在不少方面都很优秀,可是仍是存在一些不足之处。

首先,它在跨平台方面必定存在缺陷,虽然OVF协议支持跨平台,但由于镜像格式的限制,因此如今部分虚拟器件没法跨平台,其缘由是现有的虚拟器件主要使用VMware的VMDK做为镜像格式,而此格式在非VMware的平台缺少支持。

其次,缺少一部分业界巨头强力的支持。首先,Amazon已经在OVF协议以前推出了相似于OVF的私有格式AMI(Amazon Machine Images,Amazon机器镜像),同时使用者甚众,且短时间内彷佛没有支持OVF的迹象。其次,虽然微软已经代表了对OVF支持的态度,但惋惜到如今还未推出相关的产品。

此外,OVF包体积庞大——由于OVF包需携带磁盘镜像的缘由,使得OVF包一般以GB为单位,致使其难于经过网络传输,这将影响其用户体验。虽然VMware已经提出了Delta Disk和Stream等技术,但在短时间内这个问题很难被克服。

OVF的将来

谈到OVF的将来,首先,确定是对现有功能的强化,就像OVF最近推出1.1版本那样,并无在范围的扩展上作文章,而是加强其原有的部署功能,例如支持文件系统格式的镜像。其次,OVF协议身为VMAN计划的一个核心的组成部分,在未来会进一步为整个VMAN计划服务,同时OVF颇有可能在已成为美国国家标准的状况下向ISO(国际标准化组织)和IEC(国际电工委员会)这两个组织提交申请,力争成为国际标准。

在2007年10月初,当我第一次看到OVF协议初稿的时候,我不由暗暗赞叹这奇思妙想,并深信它将有助于整个IT事业的发展。3年后,当我看到OVF协议已经茁壮成长的时候,我不只更坚决了当初对它的指望,更以为在从此云计算的时代它将进一步推进应用的发展,使应用依旧为王。

OVF与云计算实践

虽然,OVF 1.0协议正式发布才半年,可是支持OVF协议的云计算产品有如雨后春笋般不断涌现,例如开源的Xen Cloud Platform和IBM的Systems Director等 ,并且产品的范围横跨公有云和私有云这两个范畴。接下来,我将从这两个范畴中各选取一个产品,来给你们分析一下OVF协议在这些产品中所发挥的做用,一个是VMware的vCloud Express,另外一个是IBM的WebSphere CloudBurst Appliance(简称WCA)。

OVF与VMware vCloud Express

在2009 VMworld大会上,VMware携手众多供应商推出了VMware vCloud Express。它是基于VMware vSphere 虚拟化平台构建的企业级公有云解决方案,提供可靠和随需应变的“Infrastructure as a Service(基础设施即服务)”。

VMware vCloud Express最大的特点是灵活的迁移。从此用户的工做负载不只能够在两个支持vCloud技术的企业数据中心之间实现灵活地迁移,从而提升可用性和优化资源,并且还能够将工做负载在企业数据中心和vCloud公有云之间进行迁移,以应对突发状况或者减小初始投入。

在VMware vCloud Express中,OVF协议处于很是核心地位。这是由于VMware vCloud Express默认的部署模型就是基于OVF协议的vApp,经过vApp模型能方便用户上传本地的应用。而且,vCloud API的核心也是基于OVF协议的。咱们说过,OVF协议以是应用为核心的思想,它可以帮助用户理解和使用这套API。

此外,经过使用公开的OVF协议将提高vCloud的互操做性和兼容性,使得应用能在多个数据中心或者云之间进行自由的迁移。

OVF与IBM WCA

WCA是 IBM 在2009年推出的一款云计算产品,提供了构建、部署、管理和维护 WebSphere虚拟器件的功能,并能高效地利用企业的共享资源池或者私有云 ,从而有效地下降相关基础设施的投入。在这里值得一提的是,我我的很是有幸地参与了这个旗舰级产品的研发,更从中获益匪浅。

基于OVF协议的WebSphere虚拟器件是构建WCA的核心元素,同时WCA整个工做流程都是围绕着这些虚拟器件展开的,这些虚拟器件中最具表明性就属简称为“WAS HV”的WebSphere Application Server 的虚拟化版本,它包括WAS的二进制文件和配置文件、IBM HTTP 服务器和一个 Novell 企业级SUSE操做系统。但它不只仅只是一个简单虚拟化版WAS而已,经过与WCA的协同工做,它还能提供不少“灵丹妙药”:

  1. 不只能定制从简单的单独部署到复杂的集群部署等多种部署模式,并且能设置一些WAS的高级属性,例如会话持久性和全局安全性等;
  2. 预优化。基于多年实战经验,IBM的工程师对WAS HV整个软件堆栈进行了调优;
  3. 激活。每一个WAS HV都自带IBM Activation Engine来自动激活系统网络和WAS等。

OVF的“对手”

谈到OVF的对手,其中最引入注目的莫过于AMI,AMI全称为“Amazon Machine Image(Amazon系统镜像)”,它主要用于Amazon以提供虚拟机著称的 EC2(Elastic Compute Cloud,弹性计算云)云服务。简单地说,AMI能够被认为是基于Xen虚拟技术的虚拟器件,在镜像里面包含了操做系统和一些软件,例如Apache和MySQL等。但和标准的虚拟器件不一样的是,AMI并非基于OVF协议,而是基于Amazon EC2本身的一套规范来进行配置和调整,例如关于SSH认证的设定等。

用户在建立虚拟机的时候,须要为这个虚拟机选定一个AMI,在这个虚拟机启动的时候,会经过读写这个AMI来启动相关的操做系统,接着执行一些预先设定的程序,例如进行SSH相关的设置等。根据性质的不一样,AMI主要可分为三种:

  1. 私有的:用户我的建立的AMI,在默认状况下是设为私有的,但也能够受权其余用户来使用这个AMI;
  2. 公共的:用户建立并发布到 Amazon Web Services 社区的AMI,任何用户均可以使用这个AMI来启动实例。
  3. 付费的:开发者能够建立提供独特功能的AMI,若是其余用户想使用这个AMI,须要按照使用的时间来向开发者付费。

如今开发人员或者用户主要使用名为“Amazon EC2 AMI Tools”的工具来建立AMI,当AMI建立成功以后,须要将这个AMI上传至S3中,并将这个AMI注册至EC2中。

截止到目前,AMI支持的操做系统有:Red Hat Enterprise Linux、Windows Server 2003/200八、OpenSolaris、openSUSE Linux和Ubuntu Linux等。现有的AMI所支持的软件更是数不胜数,例如在数据库方面有IBM DB二、微软 SQL Server 200五、Oracle数据库11g和MySQL等;在批处理方面有Hadoop、Condor和Open MPI等;在应用服务器方面有IBM的WebSphere和Oracle的WebLogic等;固然还支持许许多多的开源软件,例如Apache、Nginx和Ruby on Rails等。

和OVF相比, AMI不只在使用率方面超越了OVF,并且在配套工具和社区方面的支持也绝不逊色,甚至被不少国外云计算专家称为虚拟器件领域“事实的标准”,可是因为在开放性方面,OVF比私有的AMI优秀不少,这也致使在厂商支持方面,OVF远甚于AMI,因此从长远而言,我更看好OVF的发展。

相关文章
相关标签/搜索