使用 IBM Virtual Image Library 标准化镜像管理

用四种常见的 “镜像-基础架构-管理” 场景解释如何实现标准化镜像管理

随着越来越多用户从在物理计算机系统上运行应用程序更改为在虚拟机上运行应用程序,在一个典型的 IT 基础架构中,虚拟机实例和 VM 虚拟镜像的数量将迅速增长;对每个虚拟镜像的内容和配置进行跟踪,已经成为一个重要的问题。标准化是控制虚拟镜像扩散的一个答案,而 IBM® Virtual Image Library 技术采用标准化概念来处理越来越多的虚拟镜像。作者介绍了库的架构,并以常见镜像管理场景的形式提供了一些示例。

Joe Wigglesworth, 高级技术成员, IBM

Joe Wigglesworth 是 IBM 的一名高级技术成员,曾经是 IBM SmartCloud Provisioning 的 IBM Virtual Image Library 组件的架构师。在他参加 Virtual Image Library 的工作之前,他是 Tivoli Provisioning Manager (TPM) 开发团队的产品架构师,专注于虚拟化技术和镜像管理特性。Joe 也一直是 IBM 多伦多实验室的高级研究中心经理,负责激励和促进 IBM 开发团队和世界各地的学术研究人员之间的联合研究项目。他是教科书 "Java Programming: Advanced Topics" 的合著者之一,并且是多伦多大学继续教育学院的 “卓越教学奖” 的获奖者。



Darrell Reimer, 高级技术成员, IBM

Darrell Reimer 是 IBM 研究中心的高级技术成员,在过去四年中一直致力于先进的虚拟镜像管理方面的工作。Darrell 在一个通过与 Tivoli 的紧密协作而产生了 IBM Virtual Image Library 的研究项目中担任架构师。Darrell 在 IBM 研究中心已领导了大量项目,包括应用程序虚拟化、自动化的软件缺陷检测和性能分析。



2012 年 5 月 02 日

随着越来越多用户从在物理计算机系统上运行应用程序更改为在虚拟机上运行应用程序,在一个典型的 IT 基础架构中,虚拟机实例和 VM 虚拟镜像的数量将迅速增长。由于虚拟机的虚拟镜像数量庞大,对每个虚拟镜像的内容和配置进行跟踪,已经成为一个重要的问题。当用户无法很容易地找到他们所需要的虚拟镜像时,他们就会创建新的虚拟镜像,而这又会使问题变得更严重。

如图 1 和 2 所示,标准化是避免已部署的虚拟机增长导致维护成本以同样速度增长的关键。

图 1. 概述没有标准化的虚拟化
概述没有标准化的虚拟化
图 2. 概述有标准化的虚拟化
概述有标准化的虚拟化

但是,只有通过基于对每一个虚拟镜像中有何内容的透彻了解来精心管理虚拟镜像库,才可以真正实现标准化。

当您知道在每一个虚拟镜像中有何内容时,您可以:

  • 找到类似镜像的集群,对它们进行比较以确定它们之间的差异,并确定这些变体是否值得保留。
  • 引导用户获得可以满足其需求的镜像。
  • 非常肯定地知道他们所需的镜像并不存在,需要创建该镜像。

当建立参考镜像作为标准时,需要有一个地方可以安全地存储它们,并且不存在以不受控制的方式修改它们的可能性,这很重要。设定参考镜像版本号,就可以识别和了解标准镜像如何随着时间推移而改变。

本文介绍了 IBM Virtual Image Library 的架构及基本技术,然后深入介绍了 Virtual Image Library 需要应对的四个常见镜像管理场景的详细信息。

IBM Virtual Image Library 是 IBM SmartCloud Provisioning 产品的一个重要组件,被添加为最新的 SmartCloud Provisioning 版本 1.2 发布的一部分。开发该库是为了帮助用户了解和管理在其基础架构中的虚拟镜像和已部署的虚拟机。该库提供帮助的最重要途径是提供了以下功能:

  • 在整个虚拟基础架构中搜索虚拟镜像,所使用的条件包括名称、描述、操作系统、安装的软件以及最后修改时间。
  • 识别已部署的虚拟机和用于创建它的虚拟镜像之间的 “偏离程度”。
  • 寻找类似的虚拟镜像集群,可以整合为数量较小的标准镜像。
  • 为虚拟镜像定义和采用一个版本参考,并跟踪虚拟镜像的分发和部署历史。

本文后面部分将更详细地描述这些关键用户场景中的每一个场景。

Virtual Image Library 的结构

IBM Virtual Image Library 本质上是一个基于浏览器的图形用户界面,与在 WebSphere® Application Server 内运行的 Web 应用程序通信。

在库服务器系统内(参见图 3),有几个关键组件:

  • 图形用户界面
  • REST API
  • 镜像元数据存储
  • 参考存储库
  • 知识库
  • 索引器
  • 分析引擎
图 3. Virtual Image Library 服务器系统组件
Virtual Image Library 服务器系统组件

让我们更详细地介绍每个组件。

图形用户界面

Virtual Image Library 的图形用户界面 (GUI) 是基于浏览器的,并使用 Dojo、JavaScript 和 HTML 元素的组合进行构建。所有从 GUI 发起的用户命令,以及在 GUI 中显示的所有数据,都通过库的 REST API 传递。

REST API

用户与 Virtual Image Library 的所有交互(包括从 GUI 发起的命令)都使用 REST API 进行。其他程序和工具通过使用这个接口,能够以编程方式访问库。

为了能够通过 REST API 成功地提交命令,用户必须首先使用轻量级第三方认证 (Lightweight Third-Party Authentication technology, LTPA) 技术获得一个 LTPA 令牌进行身份验证。然后,在提交 REST API 命令时使用此令牌识别用户,并验证用户拥有一个该库可识别的角色。

镜像元数据存储

镜像元数据存储,是该库保存已注册虚拟机管理程序管理器(运营存储库)、相应的虚拟镜像以及已部署虚拟机的有关信息的位置。这包括虚拟机管理程序管理器可提供的有关每个虚拟镜像和已部署虚拟机的所有元数据。

参考存储库

参考存储库是 “golden master” 镜像的权威存储,并保证存储在它里面的镜像不能被修改。

在软件开发中,参考存储库的角色类似于一个源代码控制服务器。它为虚拟镜像提供版本控制,这是在虚拟镜像的开发和演变中的协作点,并且它保证已签入的内容将不会被修改。

虚拟镜像可以进入参考存储库的方式有两种,从 Virtual Image Library 文件系统导入一个新的外部镜像,或在其中一个运营存储库执行一个虚拟镜像的签入操作。参考存储库使用由 Tivoli® Provisioning Manager for Images 产品提供的基于扇区的存储库技术,该技术提供磁盘格式转换和消除重复的功能,可以最大限度地减少存储需求。

索引器(Indexer)

索引器连接到参考存储库或运营存储库中的虚拟镜像,访问文件系统,收集尽可能多的信息,然后填充知识库。所收集的信息类型包括:

  • 磁盘级的信息,如分区和文件系统的类型和大小。
  • OS 信息,包括 OS 类型、发行版、版本和补丁级别。
  • 产品信息,包括已安装的产品和补丁级别。
  • 文件级信息,包括文件清单和内容摘要。

Virtual Image Library 的基础是,收集在镜像中实际存在或安装的内容,而不是可信用户对虚拟镜像元数据所创建的注释,这些注释几乎在创建完成之后就马上变成不正确的。

知识库

知识库存储由索引器收集的有关对 Virtual Image Library 可见的虚拟镜像的所有信息。知识库也存储由分析引擎派生或推断的任何信息,这些信息与单个虚拟镜像或虚拟镜像之间的关系有关。

分析引擎

分析引擎根据知识库中的信息进行操作,以派生出镜像的其他属性,以及它们之间的关系。

由分析引擎派生的信息类型包括镜像相似度指标,该指标定量地定义一个单独的虚拟镜像与 Virtual Image Library 中可见的任何其他虚拟镜像的相似程度。

分析引擎还提供了一种机制,使人们可以在虚拟镜像的知识库中访问或查询信息。

这些功能是 Virtual Image Library 的深度搜索、比较和相似度分析等核心功能的基础。


部署 Virtual Image Library

Virtual Image Library 的部署对于虚拟环境完全是非侵入性的,对于虚拟环境,它只是一个虚拟镜像库。该库只需要访问 VMware 或 SmartCloud Provisioning 环境的凭据,便可以开始用作该环境的库。

该库被部署在自己的虚拟机中,作为在 WebSphere Application Server 中运行的一个 Web 应用程序。此虚拟机需要虚拟机管理程序管理器的网络访问权限,该库将列出并分析该管理器所保存的虚拟镜像和已部署虚拟机。

图 4 显示了一个已部署的 Virtual Image Library 如何与生产环境进行交互。

图 4. 概念性的 Virtual Image Library 部署
概念性的 Virtual Image Library 部署

当添加一个连接到虚拟机管理程序管理器(如 SmartCloud Provisioning 服务区域)的连接时,第一个动作是发现它所管理的所有虚拟镜像和已部署虚拟机。这些列表被存储在 Virtual Image Library,列表上的所有项目都可供用户查看和操作。


收集分析信息

Virtual Image Library 使用索引器来收集每个虚拟镜像的相关信息。做到这一点并不需要在目标系统上安装任何代理。相反,虚拟镜像是可访问的,因此,它看起来像是一个大磁盘。如果虚拟镜像在一个运营存储库中,通过远程装载磁盘就可以访问它,无需在网络上复制镜像。通过使用远程索引镜像来最大限度地减少网络带宽的需求,无需将镜像复制到 Virtual Image Library。

虚拟镜像被装载并可用后,索引器使用库存工具和方法遍历该磁盘的文件系统,就像它在一个运行的系统上所做的一样。因为不需要代理,所以信息收集是非入侵性的。

可能不要求收集每一个虚拟镜像的详细信息。基于这个事实,Virtual Image Library 将信息收集分成两个不同的层次:基本索引和完整索引。

基本索引收集:

  • 磁盘级信息,如分区和文件系统的类型和大小。
  • OS 信息,包括 OS 类型、发行版、版本和补丁级别。
  • 产品信息,包括已安装的产品和补丁级别。

完整索引收集

  • 基本索引收集的所有信息。
  • 文件级信息,包括文件清单和内容摘要。

默认情况下,Virtual Image Library 对它了解的每一个虚拟镜像执行的基本索引。对于运营存储库中的虚拟镜像,通过远程访问镜像来完成基本索引,而虚拟镜像仍然在它原来的位置。

镜像库的用户也可以请求索引一个已部署的 VM,但是,由于已部署的 VM 具有不断变化的特性,所以该操作不会自动执行。在将镜像签入参考存储库中之后,完整索引会自动执行。

然而,完整索引并不仅限于参考存储库。也可以根据用户的请求对运营存储库中的任何虚拟镜像或已部署虚拟机进行完整索引。

分析引擎根据它所了解的镜像相关信息来计算一个本地敏感散列 (Locality Sensitive Hash, LSH)。您可以将 LSH 想象为浓缩版本的镜像内容。这些散列的强大属性是:在其本身所代表的虚拟镜像的比较之中,可以将它们作为代理使用。这些散列中的任何两个的相似度百分比都是它们所代表的两个镜像的相似度近似值。无论是按已安装产品,还是按镜像文件内容进行比较,这都对 Virtual Image Library 中的所有镜像提供了一个可扩展的方式来提供相似度指标。


Virtual Image Library 用户场景

Virtual Image Library 是专门为以下四个关键的用户场景而设计和开发的:

  1. 深度镜像搜索
  2. 偏离分析
  3. 控制镜像蔓延
  4. 参考镜像的版本控制和跟踪

本文将依次详细描述这些场景。

深度镜像搜索场景

除了虚拟镜像搜索的传统方法(用户可以根据名称、创建时间和用户创建的元数据等镜像元数据搜索虚拟镜像)之外,Virtual Image Library 还提供了深度镜像搜索。

深度镜像搜索允许用户根据其实际内容搜索虚拟镜像,而不仅仅是根据由用户为虚拟镜像创建的元数据,从而确保搜索结果的准确性,并且结果不会受到用户提供的元数据所产生的常见错误的影响。

图 5 显示了用户如何可以搜索符合要求的一个或多个镜像。

图 5. IBM Virtual Image Library 搜索屏幕
IBM Virtual Image Library 搜索屏幕

在 Virtual Image Library 中,用户可以根据以下条件搜索镜像:

  • 位置:虚拟镜像所在位置。可以将搜索限制为只返回某些位置上的虚拟镜像,允许用户只搜索参考镜像,或只搜索某个运营存储库或某组运营参数中的镜像。
  • 镜像类型:搜索可以只返回虚拟镜像,或只返回已部署的虚拟机,或者两者都返回。
  • 名称:使用用户定义的镜像名称或正则表达式,查找其名称与指定模式相匹配的镜像。
  • 描述:使用用户定义的镜像描述或正则表达式,查找其描述与指定模式匹配的镜像。
  • OS 类型和版本:使用在对虚拟镜像进行分析时由索引器发现的操作系统类型和版本,或使用正则表达式,查找其 OS 名称与指定模式相匹配的镜像。
  • 已安装的软件、软件版本和目标架构:这是基于对虚拟镜像进行分析时索引器所发现的信息,所以它代表镜像中的实际内容,而不是镜像中被认为的内容。Virtual Image Library 提供了在任何虚拟镜像中已知的所有已安装软件列表,使用户可以从列表中选择所需的软件。可以将搜索配置为返回带有 “任何” 选定软件、“所有” 选中软件或 “无” 选定软件的镜像。
  • 最后修改时间:虚拟镜像或已部署的虚拟机最后一次被修改的时间。在滤除很少使用的镜像时,这是一个非常有用的特性。

偏离分析场景

使用虚拟镜像部署一个虚拟机后,虚拟机镜像的内容就会马上改变,并与虚拟镜像的原始内容有所 “偏离” 开。大部分这种偏离都是正常的,但一些更改(比如应用补丁、添加或删除软件或者升级现有的软件级别等)可能会导致系统无法正常运行。

当一个系统不再正常运行时,您应该问的第一个问题是 “什么改变了?” 偏离分析可以回答这个问题。

图 6 说明了该流程。

图 6. 偏离分述流程概述
偏离分述流程概述

偏离分析首先识别故障虚拟机,并查找用于部署该虚拟机的虚拟镜像。使用来自虚拟机的 Family Tree 特性的信息完成该工作(有关此特性的更多信息将在随后有关版本控制和镜像跟踪的小节中提供)。

虚拟镜像应该已经被索引,所以下一步就是要索引虚拟机。根据不同的虚拟化技术,在开始一个索引操作之前,可能需要先停止或至少暂停虚拟机。

当索引完成后,在用户从 Virtual Image Library 中运行一个虚拟镜像和已部署虚拟机的比较时,虚拟机可以恢复。可以列出两个镜像之间的差异,以便用户可以查看列表,并确定哪些差异可能会导致故障。

控制镜像蔓延的场景

造成镜像蔓延的原因是,有大量相似但不完全一样的镜像。通常情况下,发生这种情况的原因是,所有用户可能都从同一个镜像开始,但他们可能应用了不同的补丁程序,可能安装或升级了应用程序,也可能删除了某个应用程序。

每个用户都捕获改变的结果,并将它保存为一个虚拟镜像。

为了阻止这种蔓延,Virtual Image Library 支持搜索与某个特定镜像相似的镜像。通过采用一个作为通用镜像而发布的标准镜像,然后搜索与之类似的所有镜像,镜像库管理员能够识别与它类似的虚拟镜像。

在图 7 中的屏幕截图显示了一个这种搜索的结果。

图 7. 按相似度搜索的结果
按相似度搜索的结果

所有已索引的虚拟镜像按相似度从高到低排序。在列表顶部的虚拟镜像是被撤销和取代的最佳候选。

版本控制/跟踪参考镜像场景

由于虚拟镜像成为了 IT 基础架构中的重要资产,所以需要将虚拟镜像存储在一个安全的地方并控制对镜像的修改也变得非常重要。每次修改都应该使用版本号进行确认,并且应该可以检索镜像的每一个编号的版本。

这种功能本质上就像是镜像的源代码控制系统。

Virtual Image Library 利用其参考存储考库提供这种功能。任何签入参考存储考库的镜像都会生成一个副本,并保存在存储考库内。镜像可以添加到现有的镜像版本链或新创建的链中,然后为镜像分配一个在链中惟一的版本号。

修改参考镜像的流程如图 8 所示。

图 8. 更新参考镜像以创建一个新版本的流程
更新参考镜像以创建一个新版本的流程

标签为 A.1 的方框代表一个先前签入参考存储库但现在需要更新的虚拟镜像。

A.1 已被签出到一个运营存储库,并被启动以创建一个新的虚拟机。修改新的虚拟机(例如,应用补丁或安装新的应用程序),从而在运营存储库中创建一个新的镜像。然后,将这个新的镜像签入到参考存储库,以创建参考虚拟镜像 A.2,默认情况下,A.2 与原始镜像 A.1 都被放入同一版本链中。

版本链由 Virtual Image Library 的用户进行定义和管理。 虽然默认将新镜像 A.2 放进与 A.1 相同的版本链中,但这不是强制性的。用户可以决定开始一个新的版本链,并以 A.2 作为它的根,或者可以决定将 A.2 添加到参考存储库中任何其他版本链的末尾。如果用户认为某个虚拟镜像在错误的版本链中,该虚拟镜像可以被移动到正确的版本链。

拥有一个支持镜像版本链的参考存储库,这是了解和控制 IT 基础架构内的重要镜像的基础。

但是,必须将参考存储库中的镜像签出到运营存储库,以便对它们进行部署并将它们投入使用。出于这个原因,用户需要能够记录参考镜像何时签出到运营存储库,然后在使用参考镜像来部署镜像或复制参考镜像以创建其他虚拟镜像时跟踪它,这很重要。Virtual Image Library 收集这些信息,并将它们显示为镜像的 Family Tree。

图 9 显示了一个示例版本链和 Family Tree。

图 9. 版本链和 Family Tree 示例
版本链和 Family Tree 示例

版本链(左)包含两个参考镜像,通过带有金色标签的图标进行标识。参考镜像每次被签出到运营存储库,就有一个分支被创建并被分配一个 1.x.y 形式的版本号,其中 1.x 是生成该分支的参考镜像的版本号。

每当使用一个镜像来创建一个新镜像的时候,或使用镜像来部署虚拟机的时候,都会创建一个新分支,并分配一个版本号。当复制镜像来生成新的镜像或部署镜像来创建新的虚拟机时,Family Tree(右)会显示镜像之间的所有连接。


结束语

IBM Tivoli Virtual Image Library 提供先进的镜像管理功能,客户可以用它来处理了解和控制其虚拟基础架构的内容这个难题。镜像存储库管理、镜像分析和参考存储库与版本控制相结合,使得可以通过提供支持四个关键用户场景的功能,解决虚拟基础架构的问题:

  • 深度镜像搜索
  • 偏离分析
  • 控制镜像蔓延
  • 参考镜像的版本控制和跟踪

在今天的组织中,这些特性通常是必需的。

正是因为收集支持这些场景所需的信息并不需在虚拟镜像中安装任何代理,也不需要将镜像复制到一个中心位置,所以可以很轻松、很容易地将 IBM Virtual Image Library 添加到组织的 IT 基础架构中。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Tivoli
ArticleID=812921
ArticleTitle=使用 IBM Virtual Image Library 标准化镜像管理
publish-date=05022012