导入开放虚拟化格式虚拟机
虚拟设备是通过虚拟化实现的软件交付的演进。 它们推动了高效和优化应用程序的交付,并推动了快速增长的云计算浪潮。 本文探讨了虚拟化,虚拟设备背后的思想,它们对操作系统的影响以及将简化虚拟设备软件部署的即将到来的标准。
让我们开始快速讨论虚拟设备背后的关键:虚拟化平台。 尽管操作系统代表了用于应用程序的虚拟化平台(共享对处理器和资源的访问),但是虚拟机管理程序对操作系统也做同样的事情。 虚拟机管理程序很重要,因为它们使您可以在同一系统上运行多个不同的操作系统。 从桌面用户的角度来看,此功能非常重要,因为它使他们可以同时运行Windows®和Linux®。 但是从服务器的角度来看,它允许托管同时运行各种服务器应用程序(例如Web服务器,电子邮件应用程序,数据库和其他有用服务)的多个操作系统。 此外,每个操作系统都相互隔离,因此一个操作系统的故障不会影响其他操作系统。
对于服务器应用程序,虚拟化至关重要。 美国环境保护署最近的一项研究发现,典型服务器仅使用了其容量的5%。 与系统相关联的精力,空间和成本很多。 服务器虚拟化通过创建可以在其上运行许多操作系统(及其应用程序)的虚拟化服务器来解决此问题。 这样,可以将10台或更多的物理服务器减少为在单个物理服务器上运行的10台或更多的虚拟服务器(请参见图1)。
在图1中,您可以看到每个软件堆栈(操作系统和应用程序)都是一个隔离的虚拟机(VM)。 一台虚拟机发生故障并不意味着其他所有虚拟机都发生故障。 但是,这张图中最重要的是每个堆栈的顶部。 每个软件堆栈背后的目的都是应用程序级别:应用程序是软件堆栈中的真正价值。 从这个意义上说,虚拟设备只是应用程序的容器。 应用程序具有自己的依赖性(例如操作系统或库),但是应用程序是关键。
因此,虚拟设备只是应用程序及其所有依赖项(操作系统,第三方库,配置等)的容器。 让我们更深入地探讨虚拟设备及其替代方案。
虚拟设备容器是VM映像(VMI)。 VMI是包含VM的硬盘映像(包括内核,引导分区和根文件系统)的文件。 该文件通常采用压缩格式-具体来说,该文件随VMI的内容而增长和缩小,并且不受VM硬盘容量的限制。 由于兼容性的原因,VMI的格式很重要,我将在不久后回到本主题。
然后,您可以将虚拟设备视为包含目标应用程序,库,服务,配置,相关数据和操作系统的软件堆栈。 此外,虚拟设备除了是一组组合元素之外,还针对特定应用程序进行了配置和调整(请参见图2)。
但归根结底,虚拟设备不过是虚拟机管理程序可用于创建VM实例的大文件。 设备作为文件具有一些有用的属性-例如,您可以复制它(出于备份目的)以及在虚拟机管理程序之间移动它(称为VM迁移 )。
虚拟设备的优势在于重点在于应用程序。 VMI包含了在虚拟环境中运行该应用程序所需的一切。 针对该应用程序对其进行了配置和调整,从而简化了其部署。 现在,考虑替代方案:同一应用程序可以分布在VMI之外并在任意操作系统上运行,要求您构建应用程序(以及所有相关的库和服务),然后配置和调整应用程序和环境。 该应用程序也可能具有特定的操作系统要求。 此过程很常见,其复杂性取决于应用程序本身。 但是该过程很耗时并且容易出错。
根本的区别回到了对应用程序的关注上。 例如,应用程序安装可能需要安装特定的操作系统(或安装特定的文件系统)。 安装还可以依赖于依赖服务(例如数据库)和库的安装(除了满足它们的依赖之外)。 最后,许多这些元素可能需要配置和调整。 将应用程序部署到特定系统后,便会绑定到该系统。
VMI依赖于兼容的虚拟机监控程序以及虚拟机监控程序的设备仿真的某些配置,但重点仍然放在应用程序上。 但是,虚拟设备的价值不只是简单的配置。 现在,让我们看一下虚拟设备的关键方面之一。
当您开始从应用程序的角度看待虚拟设备时,便可以开始围绕该应用程序定制和调整整个环境。 考虑操作系统。 对于给定的应用程序,某些操作系统服务可能不是必需的,尽管其他服务对于目标应用程序的性能可能很重要。 在这种情况下,该操作系统称为“足够多的操作系统”或JeOS(发音为“ juice” )。 该术语最早由VMware创造,代表了虚拟设备的理想构造。
尽管VMware创造了该术语,但是这种做法已经存在了相当长的时间。 基于Linux的嵌入式系统通常采用占用空间较小的内核和应用程序堆栈,与所提供的嵌入式设置相比,它更适合于受约束的环境。 但是,VMware的用法不仅限于最小化服务以支持受限的环境。 硬盘空间和内存在服务器环境中通常很丰富,但实际上还有更多的作用。 更少的服务和驱动程序意味着在给定系统上维护的软件更少。 从管理的角度来看,这意味着需要更少的补丁程序才能使操作系统保持最新(需要更少的带宽和存储空间)。
从可靠性的角度来看,JeOS具有一些优势。 通过排除给定系统不需要的软件,可以减少出现故障的机会并提高可靠性,这还可以通过最大程度地减少可能的利用来提高软件堆栈的安全性(更少的服务意味着更少的攻击系统路径)。
Linux(单片内核)提供了通过模块动态调整操作系统的方法,但是只有通过内核编译才能使用更大的体系结构最小化。 相比之下,微内核操作系统提供了动态丢弃功能的方法,从而提供了可扩展性更高的环境。 微内核通过创建内核(包括诸如内存管理和调度之类的基本服务)并将所有其他功能推入内核来实现此目的。 除了提供更具扩展性的环境之外,微内核还可以提供可靠性优势。 在特权空间中运行的代码越少,操作系统失败的可能性就越小。
为了最大限度地减少Linux内核,您可以采取几种不同的方法。 首先是在内核构建过程中手动配置内核。 尽管这可能是最小化内核(对于您的特定应用程序)的最精确方法,但是有一种非常简单的方法。 大多数主要的Linux发行版都提供JeOS变体。 这些操作系统衍生产品专门为在管理程序上运行的虚拟设备而配置(请参阅参考资料 ,以获取更多信息的链接)。
Ubuntu JeOS是经过优化的Ubuntu衍生产品,可在VMware ESXi或VMware Server或基于内核的虚拟机(KVM)Linux虚拟机管理程序上运行。 它不包含任何图形环境,并且在Intel®或AMD x86架构上运行,最小内存占用小于380MB。 Ubuntu JeOS还包括ubuntu-vm-builder实用程序,您可以使用它根据用户定义的规范来构建虚拟设备(在几分钟之内)。
SUSE Linux还提供了一个称为SUSE Appliance Program的JeOS环境。 此环境与Ubuntu的发行版相似,但有一些显着差异。 SUSE变体与SUSE Linux内核一起使用,并根据您的特定需求提供了几个用于构建虚拟设备的不同工具。 SUSE提供了Kiwi,这是一个基于命令行的工具,可让您通过XML创建设备规范。 使用Kiwi,您可以构建各种不同格式的虚拟设备,包括LiveCD,可启动USB映像或OVF。 还有一个用于手动构建虚拟设备的设备创建工具。 最后,SUSE Studio提供了一个易于使用的基于Web的设备创建工具,该工具提供了指向和单击的构造。
Oracle企业Linux JeOS和OpenSolaris JeOS项目这两个其他产品提供了类似的功能来构建小型虚拟设备。 但是,最古老的商业解决方案之一,来自rPath的rBuilder,可用于在线构建虚拟设备。 通过使用基于Web的前端,rBuilder允许您使用rPath的Linux发行版或CenOS或Ubuntu构建公共虚拟设备。
最后,OVF Toolkit是一组Eclipse插件和Java™API,可用于在OVF中构建虚拟设备软件包。 “ 相关主题”部分提供了指向涵盖该工具用法的出色教程的链接。
虚拟设备仅在可移植时才有用。 像在Xen或KVM上一样,拥有虚拟设备并在VMware上运行的能力意味着该设备有更多机会。 这就是OVF(以前称为“ 开放虚拟机格式” )出现的地方。OVF是针对VM(或在本例中为虚拟设备)的便携式(即与虚拟机管理程序无关)分发方法的规范。 借助OVF,您可以有效地安全打包和分发虚拟设备。 OVF甚至可以在一个程序包中表示多个VM。 OVF是可扩展的,允许随着虚拟化的发展而扩展。
OVF是一种XML格式,用于描述VM的所有各个方面(以磁盘格式)。 其中包括组成虚拟机的虚拟磁盘的描述; 虚拟机的网络配置; VM所需的处理器和内存资源; 以及描述虚拟设备创建者,VM的用途和操作系统描述的各种元数据。 在“ 相关主题”部分中,您可以找到VMware OVF白皮书的链接,该白皮书包含OVF文件的完整示例。
另外,存在提供将旧格式VM转换为OVF的工具。 例如,您可以使用ovftool
将较旧样式的.vmx VM文件转换为OVF。 您还可以找到从VMware和QEMU转换为VirtualBox以及从VMware转换为Xen和Parallels的工具。
通过将预配置的应用程序和一个(足够多的)操作系统组合到准备在虚拟机管理程序上运行的单个映像中,虚拟设备是通往复杂应用程序的简单途径。 您可以找到涵盖几乎所有应用程序的虚拟设备,从防火墙和安全设备到服务器,备份设备和存储应用程序(包括复制和归档)。
虚拟设备不仅简化了针对单个用户的应用程序部署,而且还为下一代云计算架构提供了支持。 大多数云计算基础架构提供了随时可部署的虚拟设备来满足任何需求,而不是花费大量时间来构建带有应用程序的专业发行版。 而且,由于虚拟设备只是带有包装器(XML描述)的文件,因此复制和分发此类设备很容易。
OVF规范是由许多从事虚拟化和硬件开发的公司联合开发的,包括IBM,Microsoft,Hewlett-Packard,Dell,VMware和XenSource。 当像这样的大公司可以就OVF这样的规范达成共识时,您就会知道它正在发展。 虚拟设备的不断发展最终将推动它们的持续增长,像OVF这样的新规范肯定会有所帮助。
翻译自: https://www.ibm.com/developerworks/opensource/library/l-open-virtualization-format-toolkit/index.html
导入开放虚拟化格式虚拟机