使用 IBM Image Construction and Composition Tool

开始在 IBM PowerVM 云环境中构建虚拟设备的最佳实践

本文旨在提供使用 IBM® Image Construction and Composition Tool® (ICCT) 在 IBM PowerVM® 云环境上设计和构建虚拟设备的常用最佳实践。

Jose M. Romo Corona, 技术顾问, IBM

http://www.ibm.com/developerworks/i/authors/moisesrc_64x80.jpgJose Moises Romo Corona 是 IBM Systems and Technology Group 中 Solutions Enablement 组织的一位技术顾问。他在 IBM 大约有 6 年的工作经验。他毕业于阿特马加克谷大学的计算机科学与电子学专业。他的专业领域包括 Web 2.0 开发、Linux 和 IBM Power Systems™ 系统管理。



2013 年 6 月 17 日

概述

IBM Image Construction and Composition Tool (ICCT) 也被称为 ICON,属于 IBM Virtual Appliance Factory 工具之一。ICCT 实现一种一致的方法,跨 IBM PowerVM、KVM 和 VMware 等云环境架构设计和构建 Open Virtualization Appliance (OVA) 文件。OVA 文件是一个可移植的自包含二进制包,其中包括元数据和多个软件构件,如操作系统、中间件、软件包和应用程序。在 IBM PowerVM 云环境中,这些软件构件以原始磁盘文件的形式存在,由 Virtual Solution Activation Engine (VSAE) 在部署时进行配置。虚拟硬件资源在 OVA 内所包括的 Open Virtual Machine Format (OVF) 文件中定义。

本文的目的是分享一些使用 Image Construction and Composition Tool 1.2 在运行在 IBM Systems Director 或 IBM Flex System Manager™ (FSM) 上的 IBM PowerVM Express 云环境上创建虚拟设备的常用最佳实践,并 保护基于复制服务的镜像存储库。此类型的镜像存储库可以在一个 Virtual I/O Server (VIOS) 操作系统上实现,支持包含在 IBM Power Systems™ 原始(Raw)镜像上的 IBM AIX®、IBM i 和 Linux® 的虚拟设备。在 IBM Systems Director VMControl™ 中可以部署这些原始镜像。


激活引擎

IBM Virtual Solutions Activation Engine 在部署时协调一个虚拟设备内软件组件的配置。此技术遵从 Distributed Management Task Force (DMTF) OVF 标准。ICCT 可帮助您以透明的方式创建激活引擎所需的软件束(Bundle)和所有元数据。

激活引擎与其他软件组件一起安装在虚拟设备中,其基本目录为:

AIX/Linux

/opt/ibm/ae

IBM i PASE

/QopenSys/opt/ibm/ae

ICCT 中的虚拟设备开发流程

基本上,ICCT 使用两种类型的资产:软件束和镜像。软件束定义软件二进制文件或应用程序的安装方式,以及 VSAE 对它进行配置和重置的方式。软件束包括三种不同的操作:安装、配置和重置。每个操作都在不同的时间运行,这取决于正在执行的镜像任务。

另一方面,虚拟设备或虚拟机镜像是一个为了在特定的虚拟机管理程序上运行而设计的软件堆栈。在 ICCT 中用于创建新虚拟设备的镜像称为基础镜像。基础镜像是您为了添加额外软件解决方案而需要扩展的二进制基线实体。ICCT 帮助您重新打包基础镜像与额外的软件,以创建一个新的虚拟设备。

ICCT 虚拟设备开发周期中的主要镜像任务是:导入、扩展、同步、捕获和导出。使用 FSM 或 IBM Systems Director 中的 VMControl 部署向导,在 ICCT 外部执行部署任务。IBM SmartCloud® Entry 还支持虚拟设备的部署,使得这一过程对于用户来说更容易。

图 1 显示了在虚拟设备开发展流程中涉及的所有步骤,一直到部署。以下是每一个步骤的简短描述:

  1. 准备基础镜像: 在目标虚拟服务器上安装和配置首选的软件堆栈,该服务器可以在 ICCT 中用于执行基础镜像导入。也可以直接从现有的 OVA 文件导入基础镜像。
  2. 导入基础镜像: ICCT 可以从镜像存储库导入现有的镜像,或者从一个正在运行的虚拟服务器导入。ICCT 在导入过程中获取镜像元数据,二进制镜像则留在云环境的镜像存储库中。
  3. 创建软件束: 在软件束中使用三种基本操作:
    • 安装: 这在镜像同步过程中执行一次(在步骤 5 中运行)。所有安装文件都被上传到一个已部署的正在运行的虚拟系统。上传完成后,运行安装命令。
    • 配置: 这是由激活引擎在部署过程中执行(在步骤 9 中运行)。每次部署虚拟设备时,发生此操作。激活引擎通过验证任何服务依赖性,并将用户输入的参数值传递给相应的配置或激活脚本,从而协调激活过程。
    • 重置: 这正好发生在镜像捕获进程开始之前(在步骤 6 中运行)。此操作目的是将已部署的虚拟系统返回到初始状态。举例来说,如果您扩展一个在部署过程中创建了一个配置文件的 IBM WebSphere® Application Server 基础镜像,那么在扩展镜像同步的过程中,也会创建一个配置文件。重置脚本应停止应用程序服务器,然后在捕获之前删除已创建的配置文件。否则,它将成为新的虚拟设备的一部分。
  4. 扩展基础镜像: ICCT 复制一个基础镜像的元数据副本,使您能够添加您的软件束,以开始创建一个新的虚拟设备。
  5. 同步: 在同步过程中,基础镜像被部署到云环境主机。这将创建一个新的虚拟系统,捕获进程将在其上执行。ICCT 使用 Secure Shell (SSH) 访问已部署的虚拟系统。使用 Secure Copy Protocol (SCP) 将安装文件上传到已部署的正在运行的虚拟系统,放在 /tmp 目录下。在上传完成后,ICCT 运行在软件束中定义的安装命令。
  6. 捕获: 这会生成一个新的虚拟设备,它被存储到您的云环境镜像存储库中。此任务涉及几个子流程:
    1. 在 FSM 或 IBM Systems Director 中发现虚拟系统的操作系统。
    2. 使用在同步过程中提供的凭据请求访问虚拟系统的操作系统。
    3. 在虚拟系统的操作系统上收集清单 (inventory)。
    4. 激活引擎执行所有必要的重置操作。
    5. 停止虚拟系统。
    6. 虚拟系统停止后,捕获进程开始。这将在镜像存储库中创建一个新的虚拟设备。
    7. 虚拟设备创建完之后,ICCT 将所有必需的产品部分元素添加到 OVF envelope 文件中。激活引擎使用此产品信息,在部署时实现用户和束软件配置脚本之间的交互。
  7. 导出: ICCT 从云提供程序镜像存储库中提取原始磁盘。这与 OVF envelope 文件及其他元数据一起被打包到一个压缩的 ova.zip 文件中,该文件被保存到目标系统中。
  8. 导入 OVA: ova.zip 文件被解压缩,并从一个 Hypertext Transfer Protocol (HTTP) 服务器被导入。
  9. 部署: 在 FSM 或 IBM Systems Director 上使用 VMControl,根据需要在 ICCT 外部多次执行此任务。VMControl 部署向导让您提供将虚拟设备部署到一个新的虚拟服务器所需的所有配置参数。IBM SmartCloud Entry 也支持虚拟设备的部署。
图 1. ICCT 中的虚拟设备部署流程
ICCT 中的虚拟设备部署流程

镜像任务和软件束操作

软件束中的关键元素是用于执行每个操作的可执行脚本。在开始编写此类脚本之前一定要理解镜像任务和软件束操作之间的关系。

软件束操作和镜像任务之间的关系如表 1 所示。

表 1. 镜像任务和束操作之间的关系
镜像任务软件束操作
导入 -
扩展 -
同步 安装
捕获 重置
导出 -
部署 配置

软件束的最佳实践

在设计软件束时,您应该考虑以下最佳实践:

  1. 您可以使用基础镜像操作系统中所支持的任何编程语言来编写脚本,这包括 shell 脚本(推荐)。
  2. 您需要确保在每个脚本上正确地解析命令参数,其方式与在软件束操作中定义这些参数的方式相同。
  3. 每个配置操作始终使用没有空格的惟一名称。
  4. 在创建软件束来安装和配置应用程序时,有两种选择:
    1. 在镜像同步过程中安装,在部署过程中配置。
    2. 在部署过程中安装和配置。有些应用程序在完成安装后可能难以重新配置,最好的办法是在部署虚拟设备时执行这两个步骤。并且,有些应用程序在安装过程中可能需要激活许可证密钥,它是由用户输入并接受的。此外,某些许可证可能依赖于系统序列号或分区 ID。请考虑到这种方法使部署过程较长。
  5. 使用打印工作目录命令 pwd,以便在将安装文件上传到正在运行的虚拟系统后访问它们。

AIX/Linux

MY_INSTALL_DIR=`pwd`

IBM i PASE

MY_INSTALL_DIR=$(pwd)
  1. 可以在内部的 Network File System (NFS) 服务器或 File Transfer Protocol (FTP) 服务器中提供大型安装文件(在千兆字节的范围内)。在镜像同步的过程中,您可以在安装脚本上添加必要的逻辑,将安装文件传输到活动的虚拟系统中。
  2. 如果配置操作中有一个脚本需要访问配置或重置脚本目录下的文件,那么路径应该被定义如下:

AIX/Linux

MY_ACTIVATION_DIR=`dirname $0`
MY_RESET_DIR=`dirname $0`

IBM i PASE

MY_ACTIVATION_DIR=$(dirname $0)
MY_RESET_DIR=$(dirname $0)
  1. 如果配置脚本需要文件,您也可以在镜像同步安装操作过程中将文件上传到一个都可以访问的目录,并在配置脚本中使用此目录。
  2. 如果一个软件束中包含用于创建新基础镜像的配置操作,那么它必须包括一个重置操作,在捕获操作开始前将已部署的虚拟系统返回到初始状态。
  3. 如果您需要定义服务的依赖关系,可使用顺序编号来命名每个配置操作。例如,如果您正在部署一个在 WebSphere Application Server 实例上运行的企业应用程序,它在 IBM DB2® 上有一个数据库配置的依赖关系,那么您可以将操作名称定义如下:
    1. 01Activate.DB2 : 这可以配置 DB2 产品。它有网络配置的依赖关系,例如,activate.vmc.system-networkingactivate.vmc.network-interface
    2. 02Activate.EnterpriseApplicationDatabase : 这将创建和配置应用程序数据库。它依赖于 01Activate.DB2。
    3. 03Activate.WAS : 这将创建 WebSphere Application Server 配置文件,并启动应用程序服务器。它依赖于 02Activate.EnterpriseApplicationDatabase。
    4. 04Activate.EnterpriseApplicationOnWAS : 这将在 WebSphere Application Server 上安装和配置企业应用程序。它依赖于 03Activate.WAS。

请注意,这些配置操作可以在一个软件束中,也可以在不同的单独软件束中。

  1. 每个命令操作只可以运行一个脚本。如果需要运行多个脚本,这些脚本应该被标记为可执行的,并且必须从主脚本调用。

关于 IBM i 脚本的注意事项

有关 IBM i 的软件束脚本,要考虑以下方面:

  • 在镜像同步过程中将安装文件上传到 QOpenSys 文件系统。如果您需要将任何数据从您的安装操作文件复制到一个文件成员中,或保存位于集成文件系统的文件,可使用 CPYFRMSTMF 命令。
  • 如果您需要手动测试一个 Portable Application Solutions Environment (PASE) shell 脚本,可使用 call qp2term 命令来运行您的脚本。
  • 设置环境变量 QIBM_SYSTEM_ALWMLTTHD,以便在安装操作中禁止多线程。
  • 避免在系统调用中使用标志 i
  • 如果在部署过程中需要运行一个 CL 程序,并且它调用一个不支持在多线程作业中运行的 CL 命令,那么您需要使用提交作业命令 SBMJOB 来调用这个 CL 程序。

在编写安装和配置脚本时关于用户权限的注意事项

ICCT 允许您指定需要运行每一个软件束操作的用户。然而,在需要额外的用户权限时要考虑以下事项:

  • 在 AIX/Linux 上,默认以 root 运行安装、重置和配置操作。如果必须以不同的 ID 运行命令,您可以使用 su。如果您指定 root 之外的其他用户,那么此用户应存在于基础镜像中。
  • 在 IBM i 上,可以在 QSECOFR 用户下面运行安装和重置操作脚本,因为需要它的权限来执行大多数安装和卸载任务。然而,配置操作是在部署过程中在 QPGMR 用户下只运行一次的启动服务。如果在配置时(虚拟设备部署)需要安全官员(security officer)权限,那么您可以在 CL 程序中生成一个配置文件句柄,将当前的作业修改为由 QSECOFR 配置文件拥有。可以在同步安装操作过程中创建此 CL 程序,并且它必须由 QSECOFR 拥有,使用 *OWNER 权限。您可以在 IBM i 7.1 信息中心网站 中找到相关示例。

镜像任务的最佳实践

在开始处理镜像任务之前,重要的是要考虑到镜像并非存储在 ICCT 中。在导入镜像后,ICCT 只保存位于云环境镜像存储库中的镜像元数据。这意味着:

  • ICCT 中不会自动更新虚拟设备元数据。例如,如果在镜像存储库中更新了虚拟设备 OVF,ICCT 将不会更新它。您需要重新导入镜像,使变更生效。
  • 如果您在 ICCT 中删除虚拟设备,它并不会在云提供程序镜像存储库中被移除或删除。

下面几小节中所描述的镜像任务被实施在基础镜像之上,以创建新的虚拟设备。基础镜像是在云提供程序镜像存储库中创建的。您可以使用 ICCT 导入位于镜像存储库的基础镜像,或捕获一个正在运行的虚拟服务器,以注入激活引擎软件,并创建一个新的基础镜像。有关创建基础镜像的详细信息,请参阅 IBM Redbooks®,Creating Smart Virtual Appliances with the IBM Image Construction and Composition Tool

下面几小节中介绍的 ICCT 镜像任务是:导入、扩展、同步、捕获和导出。此处没有介绍部署的过程,因为这是在 ICCT 外部完成的。

导入

在 ICCT 中导入镜像有两种选择。您可以直接从云环境中导入基础镜像,也可以从一个正在运行的虚拟服务器导入镜像。

  • 从正在运行的虚拟服务器或虚拟机导入:您可以在发现和访问虚拟服务器上运行的操作系统资源后执行此操作。您还需要使用 All Inventory 配置文件对操作系统资源运行清单作业。虽然 ICCT 将执行捕获虚拟服务器所需的任务,但您可以在 FSM/IBM Systems Director 验证虚拟服务器是否可以被捕获。右键单击虚拟服务器资源,然后单击 System Configuration,可提供 Capture 选项,如图 2 所示。
图 2. IBM Systems Director/FSM 中的 Capture 选项
IBM Systems Director/FSM 中的 Capture 选项

有关导入选项的更多信息,请参考 ICCT 信息中心网站

  • 从云环境中导入:确保您有同步所需的正确的基础镜像用户名和密码。

扩展

在扩展一个基础镜像之前,请考虑以下建议:

  1. 确保基础镜像中默认已安装 SSH。
  2. 请确保您有正确的用户登录信息,可以访问已部署的虚拟系统,并执行安装操作。
  3. 确保重置操作附带了基础镜像,重置操作在执行捕获操作之前将已部署的虚拟系统恢复到初始状态。
  4. 确保基础镜像符合在同步过程中将被安装的软件和中间件组件的最低系统要求。
  5. 确保 /tmp 文件系统剩余空间可用于存储每个安装操作所需的所有文件。
  6. 确保 ICCT 系统和基础镜像中的文件和数据区域大小上限超过每个束文件的大小。您可以发出 ulimit 命令,将文件和数据大小设置为无限制,如下:
$ulimit -f -1
$ulimit -d -1

ulimit 命令在 AIX、Linux 和 IBM i PASE 中都可用。

  1. 如果您需要在您的束中添加服务依赖关系,要确保有操作系统服务和激活引擎服务(配置操作)的名称,这是在基础镜像中提供的。您可以在 VMControl 中直接部署基础镜像,通过查找以下目录(这取决于操作系统)来验证启动服务:

AIX

/etc/rc.d/rc2.d

Linux

/etc/rc.d/rc5.d

IBM i PASE

/QopenSys/opt/ibm/aescripts

在软件束服务依赖关系中只应使用服务名称,例如,activate.vmc.network-interfacesshdnetwork

扩展基础镜像

在 ICCT 中扩展基础镜像时,系统会提示您提供一个名称、惟一的通用 ID 和版本。虽然描述是可选的,但您可以用它来提供有关操作系统、已安装服务包的有用信息,或您认为重要的任何额外信息。此信息显示在 VMControl 中,帮助用户识别虚拟设备所提供的软件解决方案。

扩展基础镜像后,下一步是添加软件束。

添加软件束

在将软件束添加到一个扩展镜像时,考虑以下建议:

  1. 您需要为每个软件束提供所有必需的安装参数。
  2. 安装的所有软件束依赖关系得到满足,这意味着所有束都以正确的顺序添加。您可以在 ICCT 中向上或向下移动束,以满足依赖关系。
  3. 需要从激活引擎或操作系统服务获得以前的配置的软件束应该定义了所有服务依赖关系。
  4. 如果您的更新已经添加到未同步的镜像(扩展镜像)的软件束,请删除该束,并再次添加它,以使更改生效。
  5. 完成新镜像的编辑后,单击 Done Editing,然后单击 Save

同步

在此操作过程中,ICCT 指示云环境在目标主机上部署基础镜像。此操作创建一个在其上部署基础镜像的新虚拟系统。ICCT 使用云环境的网络信息来填写基础镜像所需的所有网络参数。云环境的第一个可用 IP 地址被用于配置在基础镜像 OVF 文件的 VirtualHardwareSection 部分中定义的第一个以太网适配器。

验证以下步骤,然后再同步一个新的镜像:

  1. 在云环境中不存在与 ICCT 正在创建的虚拟服务器使用相同网络配置的虚拟服务器。
  2. 云环境存储池中的剩余空间可用于分配基础镜像磁盘。在 OVF 元素 DiskSection 中定义磁盘容量。例如:
<ovf:DiskSection>
<ovf:Info>Disk Section</ovf:Info>
<ovf:Disk ovf:capacity="9797894144"
ovf:capacityAllocationUnits="byte" ovf:diskId="disk1"
ovf:fileRef="file1"
ovf:format="http://www.ibm.com/xmlns/ovf/diskformat/power.raw"
ovf:populatedSize="9797894144"/>
</ovf:DiskSection>

如果您需要取回 OVF 文件,以容纳更多的磁盘容量,请参阅 使用 REST API 更新虚拟设备 OVF 小节。

  1. 确保在 OVF 元素 VirtualHardwareSection 中定义的第一个以太网适配器名称与云提供程序主机的虚拟网络 ID 匹配。此信息被用于映射基础镜像虚拟以太网适配器与目标主机上的虚拟网络。VMControl 中的虚拟设备部署向导可以用来验证映射,如图 3 所示。
图 3. 基础镜像和 Power Systems 主机之间的网络映射
基础镜像和 Power Systems 主机之间的网络映射

点击查看大图

图 3. 基础镜像和 Power Systems 主机之间的网络映射

基础镜像和 Power Systems 主机之间的网络映射

基础镜像 OVF 中定义的第一个网络应该匹配桥接虚拟网络的主机名称。如果您需要更新 OVF 文件,请参考 使用 REST API 更新虚拟设备 OVF 小节。

同步的镜像

新镜像同步之后,您需要验证如下内容:

  1. 打开同步镜像的 Virtual System 部分,显示活动系统(虚拟服务器)的详细信息。登录到系统,并验证以下目录中的服务:

AIX

/etc/rc.d/rc2.d

Linux

/etc/rc.d/rc5.d

IBM i PASE

/QopenSys/opt/ibm/aescripts

在 PASE (IBM i) 或在 AIX/Linux 命令行中发出 ls -al 命令时,应根据服务依赖关系以正确的顺序列出所有服务。

  1. 在 AIX/Linux 上,如果存在 /etc/ovf-transport/ovf-env.xml 文件,删除它。否则,如果激活引擎没有正确重置,则每次系统重新启动时,虚拟服务器会将这里定义的属性作为网络配置的输入。
  2. 验证是否所有软件束配置和重置操作都已正确包括在主激活逻辑文件中。此文件位于下述激活逻辑目录下:
AIX/Linux
/opt/ibm/ae/AL/master.al

IBM i PASE

/QOpenSys/opt/ibm/ae/AL/master.al
  1. 在 AIX/Linux 上,如果部署进程需要一个多小时,那么您需要在其中一个激活脚本中包括下面的代码。
cp /tmp/activation-engine-*/ovf-env.xml /opt/ibm/ae/AP

这是因为在部署操作的过程中,由用户在 OVF Product Section 字段输入的值被放置在一个名称为 ovf-env.xml 的 DMTF 标准 OVF 环境文档中。此 XML 文件被放置在一个虚拟的 CD 镜像中,并被加载到 /tmp 下的虚拟服务器的一个虚拟光驱。在已部署的虚拟服务器的第一次引导过程中,激活引擎定位 CD 上的 OVF 环境文件,并处理用户输入。然后,VMControl 在完成部署一个小时后删除虚拟光学设备。

  1. 验证下列目录是否为空:
AIX/Linux
/opt/ibm/ae/AP
IBM i PASE
/QopenSys/opt/ibm/ae/AP

确保在 AP 目录中没有名称为 noap 的文件。此文件的存在会阻止激活引擎试图找到一个 OVF ​​环境文件。

  1. 或者,您可以请求直接访问 FSM 或 IBM Systems Director 中的活动虚拟系统。当 ICCT 在捕获操作过程中尝试解锁系统时,这可以帮助您捕捉由于超时错误造成的失败捕获。
  2. 不要在 FSM/IBM Systems Director 中直接删除虚拟服务器资源。Object ID (OID) 被分配到这个资源,ICCT 将其保存为参考,以执行捕获。

捕获

在捕获操作的过程中,ICCT 指示云环境捕获活动的虚拟系统。此过程会生成一个新的虚拟设备。ICCT 为软件束中定义的每个配置操作增加了一个单独的产品定义部分,从而构建 OVF envelope 文件。在 OVF envelope 文件内的 ProductSection 元素中定义产品部分。激活或配置脚本收到的配置参数值被替换成产品定义部分的属性。这些属性都在 VMControl 的虚拟设备部署向导的产品设置页面中展示给用户,如图 4 所示。

图 4. OVF 产品部分和产品设置映射
OVF 产品部分和产品设置映射

您需要执行下列步骤来监视捕获过程:

  1. 在 ICCT 系统中发出以下命令,跟踪日志条目:
tail -f /drouter/ramdisk2/mnt/raid-volume/raid0/logs/error/trace.log
  1. 验证激活引擎执行了所有必需的重置操作。日志应包括下述 reset 命令:
AE.sh --reset

重置完成后,虚拟服务器被自动关闭。

  1. 在 Systems Director/FSM 中,虚拟服务器上显示 Stopped 状态,以继续执行捕获,并能够继续构建 OVF 文件。通过使用 All inventory 配置文件,针对 VIOS 或 Power Systems 主机运行清单作业,可以手动更新系统状态。不要试图删除和重新发现虚拟服务器,因为这样做会分配一个新的 OID,并且在出现失败时,ICCT 将无法再次执行捕获。
  2. 验证是否已构建 OVF envelope 文件。ICCT 日志文件应该包括新的虚拟设备 OVF 内容。
  3. 登录到 FSM/IBM Systems Director 并进入 System Configuration > VMCotrol > Virtual Appliances,验证是否显示了新的虚拟设备。

最后,您可能想要在 VMControl 中部署新创建的虚拟设备,并验证激活。

导出

在 ICCT 中使用 PowerVM 设备格式导出一个 OVA 文件之前,您需要确认以下几点。

  1. ICCT 中正确设置了镜像存储库登录信息。
  2. VIOS /home/<user ID> 目录中(例如,/home/padmin)有镜像大小一倍那么大的可用空间,该目录中保存磁盘镜像的解压缩副本。
  3. 目标系统的剩余空间必须有两倍的镜像大小(原始磁盘镜像的副本和 OVA 必须同时存在)。
  4. 原始磁盘镜像被直接传输到目标系统。目标系统必须能够连接到存储系统和 VIOS。通常情况下,ICCT 系统本身用于导出 OVA 文件。

前面几小节介绍了 ICCT 中每个镜像任务的一些最佳实践。导出完成后,您可以在 VMControl 中测试导入,以确定是否有任何 OVA 文件损坏,OVA 是否已经就绪,可以分发了。推荐的导入方法是使用 HTTP 配置虚拟设备文件。您可以发出 jar (Java archive) 命令解压缩 ova.zip 文件:

jar -xvf <virtual_appliance_name>.ova.zip

要求 Java™ 5 或更高版本。

分割和验证大型 OVA 文件

ICCT 导出操作所创建的 OVA 压缩文件对于大多数虚拟设备(尤其是 IBM i)来说可能过大。可以在 Linux、IBM I 或 AIX 上使用 split 命令将 OVA 压缩文件分割成较小的块。执行以下步骤,在 AIX 中分割 OVA 压缩文件。

  1. 进入 OVA 压缩文件所在的目录。
  2. 执行以下命令:
split -b <size>m input_file file_prefix

大小可以使用 1024 MB,如下:

split -b 1024m aix_base_scs_image.ova.zip aix_base_scs_image.ova_
  1. 验证是否生成如下文件:
aix_base_scs_image.ova_aa
aix_base_scs_image.ova_ab
aix_base_scs_image.ova_aN

其中 aN → ac, ad, ae … aN

  1. 重命名文件,如下:
mv aix_base_scs_image.ova_aa aix_base_scs_image.ova_1ofN.zip
mv aix_base_scs_image.ova_ab aix_base_scs_image.ova_2ofN.zip
mv aix_base_scs_image.ova_aN aix_base_scs_image.ova_NofN.zip

较小的文件都准备好后,您可以执行以下命令再次合并它们:

cat aix_base_scs_image.ova_* >  aix_base_scs_image.ova.zip

如果您需要将这些文件传输到不同的位置,建议使用 MD5 哈希值验证文件的完整性。执行下列步骤,在 AIX 中安装 md5sum 命令,并检查 MD5 哈希值。

  1. AIX Toolbox 下载 coreutils RPM。使用以下命令安装它:
rpm -iv coreutils-5.2.1-2.aix5.1.ppc.rpm
  1. 获取每个文件的 ​​MD5 哈希值,并将输出重定向到一个文件。
/usr/bin/md5sum aix_base_scs_image.ova_1ofN.zip >> MD5SUMS
/usr/bin/md5sum aix_base_scs_image.ova_2ofN.zip >> MD5SUMS
/usr/bin/md5sum aix_base_scs_image.ova_NofN.zip >> MD5SUMS
  1. 如果 OVA 文件与 MD5SUMS 文件一起被传输到一个不同的位置,那么您就可以验证所有 MD5 哈希值,如下:
/usr/bin/md5sum -c MD5SUMS
aix_base_scs_image.ova_1ofN.zip: OK
aix_base_scs_image.ova_2ofN.zip: OK
aix_base_scs_image.ova_NofN.zip: OK

使用 REST API 更新虚拟设备 OVF

FSM 中也提供了 IBM Systems Director Representational State Transfer (REST) 应用程序编程接口 (API),可以用于更新给定虚拟设备的 OVF envelope 文件,以容纳其逻辑资源并满足您的要求或环境配置。有不同的浏览器插件可以帮助您提交 REST API 所支持的任何 HTTP 请求方法。

Mozilla Firefox 插件

Poster: 此工具可以用于提交 REST API 所支持的所有 HTTP 请求。从 Firefox Add-ons 网站下载 Poster Firefox 插件。针对 Chrome 提供了一个类似的插件,其名称为 REST Console。

JSONView: 此插件在 Firefox 浏览器中显示格式化的 JavaScript Object Notation (JSON) 内容。从 Firefox Add-ons 网站下载 JSONView 插件。此插件也可用于 Chrome。

获得虚拟镜像 OVF envelope 文件

执行以下步骤,使用 REST API 检索虚拟设备 OVF 文件。

  1. 在浏览器或 Poster 插件中输入以下 URL,并提交一个 GET 请求。此操作检索所有可用的虚拟设备。
https://<FSM or ISD host>:8422
/ibm/director/rest/VMControl/virtualAppliances
  1. 找到所需的虚拟设备的对象 ID,如图 5 所示。
图 5. 虚拟设备的对象 ID
虚拟设备的对象 ID
  1. 在 Firefox 中打开一个 Poster 窗口,并输入以下 URL:
https://<FSM or ISD host>:8422
/ibm/director/rest/VMControl/virtualAppliances/{VA OID}.ovf
  1. User Auth 字段提供 SMAdministrator 用户凭据。
  2. Content Type 字段输入 application/ovf+xml
  3. 单击 Actions 下面的 GET。一个包含虚拟设备 OVF 内容的响应窗口被打开。
  4. 将 OVF 内容复制到您首选的 XML 编辑器中。

如何调整基础镜像磁盘容量

此任务可以帮助您调整虚拟设备的磁盘容量。执行以下步骤,更改磁盘容量:

  1. 重复 获得虚拟镜像 OVF envelope 文件 小节中的步骤 1 到 7。
  2. 您只能增加大小,无法减少容量。此外,如果您改变大小,那么在部署镜像时不使用 IBM FlashCopy®,而是使用 “dd”。修改 ovf:capacity 值。默认的分配单元是字节。
<ovf:Disk ovf:capacity="73903636480"
ovf:capacityAllocationUnits="byte" ovf:diskId="disk1"
ovf:fileRef="file1"
ovf:format="http://www.ibm.com/xmlns/ovf/diskformat/power.raw"
ovf:populatedSize="73903636480"/>
  1. 复制 修改后的 OVF 内容 并将它粘贴到 Poster Content 字段。
  2. 从 URL 删除 .ovf 扩展名。
  3. 单击 PUT。如果更新成功,会收到响应状态 200。此操作更新虚拟设备 OVF。
  4. OVF 文件被更新后,在 ICCT 中导入镜像,如果镜像已经存在,重新导入它。
  5. 扩展并添加软件束,然后同步。

在 AIX 中,您需要发出以下命令才能将大小变更应用到卷组。此命令可以被包含在安装或配置脚本中。

chvg -g rootvg

如何映射虚拟设备网络与主机上的虚拟网络

若导入在云环境外部创建的虚拟设备,并且其以太网适配器与您主机中的虚拟网络 ID 不同,或者如果您需要添加更多以太网适配器到当前虚拟设备,那么这个任务非常有用。如果在虚拟设备 OVF 中定义的第一个以太网适配器连接名称与主机上的任何虚拟网络 ID 均不匹配,那么 VMControl 将它映射到主机上第一个可用的虚拟网络。这可能会导致在已部署的虚拟系统和 ICCT 之间缺乏连通性。

执行以下步骤,将主机虚拟网络映射到一个虚拟设备的以太网适配器。

  1. 重复 获得虚拟镜像 OVF envelope 文件 小节中的步骤 1 到 7。
  2. 验证 NetworkSection 元素是否包括一个与目标主机虚拟网络 ID 相同的网络名称。VMControl Deploy Virtual Appliance 向导中的 Network Mapping 页面同时显示虚拟设备网络名称和主机虚拟网络 ID,如图 6 所示。
图 6. VMControl 部署向导中的 Network Mapping 页面
VMControl 部署向导中的 Network Mapping 页面
  1. 使用以下 URL 提交一个 GET 请求。此操作会检索由 FSM 或 IBM Systems Director 管理的所有主机。
https://<FSM or ISD host>:8422/ibm/director/rest/VMControl/hosts
  1. 使用以下 URL 提交一个 GET 请求。此操作会检索主机上的虚拟网络 ID。
https://<FSM or ISD host>:8422
/ibm/director/rest/VMControl/hosts/{Host OID}/customization

图 7 显示了主机上的虚拟网络 ID 示例。

图 7. 主机上的虚拟网络 ID
主机上的虚拟网络 ID
  1. 使用主机上正确的虚拟网络 ID 作为 Network nameEthernet adapter Connection 的值,更新虚拟设备 OVF,如以下代码所示。该值应该与 (1)(2),以及在前一个步骤中找到的主机上的虚拟网络 ID 相同。
<ovf:NetworkSection>
<ovf:Info>Network Section</ovf:Info>
<ovf:Network ovf:name="Discovered-1-0">(1)
<ovf:Description>Captured from virtual server vm1877</ovf:Description>
</ovf:Network>
</ovf:NetworkSection>
...
<ovf:VirtualHardwareSection ovf:transport="iso">
...
<ovf:Item>
<rasd:Caption>Ethernet Adapter Allocation</rasd:Caption>
<rasd:Connection>Discovered-1-0</rasd:Connection>(2)
<rasd:Description>Discovered-1-0</rasd:Description>
<rasd:ElementName>Network adapter 1 on Discovered-1-0</rasd:ElementName>
<rasd:InstanceID>5</rasd:InstanceID>
<rasd:ResourceType>10</rasd:ResourceType>
<rasd:VirtualQuantity>1</rasd:VirtualQuantity>
</ovf:Item>
…
</ovf:VirtualHardwareSection>
  1. 为了更新 OVF 文件,使用 如何调整基础镜像磁盘容量 小节中的步骤 4 和 5。

在 OVF 文件中手动添加产品部分

FSM 或 Systems Director 中的虚拟服务器捕获过程可能会产生耗时的任务,对于大型镜像尤其如此。在某些时候,尽管镜像存储库中已创建了虚拟设备,ICCT 中的捕获操作仍然可能会失败。这可能会导致其 OVF 文件中的配置错误。若阻止 ICCT 及时获得新创建的虚拟设备 OVF,以添加所需的产品部分元素,存储系统可能会出现性能问题。

管理服务器和接受管理的虚拟系统之间的 Common Agent Services (CAS) 通信问题也可能会导致捕获失败。

执行以下步骤,仅当所创建的 OVF 没有激活定义,或者在 VMControl 中直接捕获虚拟服务器时,为软件束中所定义的每个配置操作添加一个 OVF ​​产品部分。

  1. 重复 获得虚拟镜像 OVF envelope 文件 小节中的步骤 1 到 7。
  2. 使用束配置操作名称作为 ProductSection 元素内 ovf:class 属性的值。
  3. 使用您的软件束中的每个配置参数来定义产品部分属性,如下所述:
表 2. OVF 产品部分属性的值
OVF 产品部分属性
ovf:key 配置参数名称
ovf:type 根据有效的参数值,例如:
unit32 - numericstring - strings
ovf:userConfigurable true - 允许用户输入一个值。
false - 该参数被禁用。用户不能输入一个值。
ovf:value 空白或默认参数值
ovf:msgid Argument label. Name convention - <product section class>.<configuration argument name>.label

您可以使用图 8 作为一个示例。

图 8. 产品激活属性映射
产品激活属性映射

虚拟设备升级

不能通过在原始镜像中直接插入新的激活逻辑或升级的软件二进制文件来更新虚拟设备。一旦虚拟设备已经部署,并且正在虚拟服务器上运行,软件升级和维护依照原有的方式来进行。

如果一个虚拟设备必须升级以被多次部署,那么建议构建新的软件束。ICCT 允许您扩展束来创建一个新的版本,其中您可以更新所有必需的二进制文件。在新的束更新了最新的软件后,您需要重复扩展、同步和捕获的相同步骤,以创建一个新的虚拟设备。


结束语

在构建新的虚拟设备时,软件束是所需要的核心可重用资产。ICCT 支持轻松地导出和导入软件束,带来一个在不同的云环境上进行虚拟设备开发的协作环境。虽然这里没有提到软件束脚本所使用的特定编程语言,但 AIX/Linux 的 shell 脚本和 IBM i 的 PASE shell 是最简单的实现方法。还提供一个名称为 Product Activation Development Kit 的 Eclipse 插件,以使用 Python 开发软件束。除了 Python 可移植性之外,使用 Product Activation Development Kit 的优势是它能够从 Eclipse 集成开发环境 (IDE) 运行和调试束操作。

在部署过程中,虚拟设备应该能够对其本身进行配置。然而,每一个应用程序和中间件在实现这一点上都有其自身的挑战。此外,VMControl 中尚未支持用户交互定制。然而,ICCT 旨在提供一种方法,让用户在部署过程中可以通过使用软件束脚本中的逻辑与虚拟设备配置进行交互。

参考资料

学习

讨论

  • 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

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=AIX and UNIX, Cloud computing, IBM i
ArticleID=934162
ArticleTitle=使用 IBM Image Construction and Composition Tool
publish-date=06172013