从 Solaris 过渡到 AIX

分区和虚拟化

假设和许多其他的公司一样,您已经使用 Solaris 已经十多年的时间了,您刚刚启动了一个从 Solaris 10 到 AIX(R) 6.1 的大型服务器整合和迁移项目。虽然许多命令都非常类似,但是您需要了解如何使用分区和虚拟化。IBM(R) 和 Sun 服务器在分区方面有哪些区别呢?并且,为了从 containers 进行成功的转换,您需要了解哪些有关工作负载分区 (WPAR) 的内容呢?WPAR 和 zones 之间的相似之处和区别之处分别是什么,以及创建 zones 和 WPAR 的过程有哪些不同?最后,您可以在 IBM System p(TM) 中进行哪些使用 Sun 服务器无法完成的操作呢?这些都是本文中所要解决的问题,其目的是使得您的转换工作更加容易。

Ken Milberg (ken@unix-linux.org), UNIX 顾问、技术作家和网站专家, Future Tech

Ken Milberg 是 techtarget.com 网站的技术作家和网站专家,并且在 searchopensource.com 网站提供 Linux 技术信息和支持。他还是《IBM 系统杂志(开放系统版)》的撰稿人和技术编辑。Ken 拥有马里兰大学计算机和信息科学学士学位以及技术管理硕士学位。他是长岛 POWER-AIX 用户组的创立者和负责人。多年以来,他在大小型企业工作过,并且担任过从 CIO 到高级 AIX 工程师的各种职位。现在,他在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 是一名通过 PMI 认证的项目管理专业人员 (PMP),还是一名通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006),并且是通过 Solaris 认证的网络管理员 (SCNA)。您可以通过 kmilberg@gmail.com 与他联系。



2008 年 3 月 17 日

引言

首先您需要了解一些基本概念,因为它们与 System p™ 和 AIX® 密切相关。要研究这些命令本身的区别,这是很容易的。Rosetta Stone(请参见参考资料)是一个很受欢迎的站点,该站点对如何在许多不同的 UNIX® 和 Linux® 发行版中执行一些常见的系统管理任务进行了对照比较。IBM® 还提供了几本为 Solaris 管理员特别定制的 IBM 红皮书®,以帮助他们进行文件系统管理、用户管理和内核优化(请参见参考资料)的工作。但是对于诸如分区和虚拟化之类的非传统任务,情况又如何呢?对于这些方面,您必须进一步深入研究,以便真正地理解相关的概念。工作负载分区 (WPAR) 是 IBM 的一项比较新的技术。简单地说,它们可以虚拟化您的操作系统 (OS),在物理服务器中允许实现较少的操作系统映像(您可以将其对应于于 IBM 逻辑分区 (LPAR)、Solaris Logical Domain (LDom) 或者 Sun Dynamic System Domain),这将使得您可以更轻松地完成日常任务。它们可以简化系统的部署和管理,以及整合应用程序。使用 IBM LPAR、Solaris LDom 或者 Sun Dynamic System Domain (DSD) 对服务器本身进行分区,这应该在进行实际的 OS 虚拟化之前进行。

早在 2001 年,POWER4 体系结构以及 AIX 5L™ 通过 LPAR 技术引入了 IBM UNIX 平台上的分区(值得一提的是,IBM 在 1967 年通过 Hypervisor 开始了虚拟化,并在 1987 年开始使用 LPAR 进行大型机的分区)。IBM LPAR 技术允许您将物理服务器分区为一些独立的 LPAR,并且每个分区都拥有它自己单独的 AIX 或者 Linux 系统。这个技术本身(基于 Hypervisor 的技术)更多地是一种虚拟计算机技术,并且类似于 VMWARE 和 Xen。随着 AIX 5.2 的推出,它添加了无需重新启动分区就能实现 CPU、I/O 适配器和内存的动态迁移的功能,。这种功能是通过动态逻辑分区 (DLPAR) 实现的,也就是将附加的 CPU 或者内存服务器动态地分配给一个正在运行的 LPAR。AIX 5.3 和 POWER5 体系结构为 IBM System p 引入了高级 POWER 虚拟化 (APV),它包括对虚拟 I/O 服务器(共享以太网和虚拟 SCSI)、微分区、无上限的分区(使用共享的处理器池),以及最近刚刚停止使用的分区负载管理器 (PLM) 的支持。在 IBM System p 中,AIX 或者 Linux 可以作为 LPAR 在相同的框架中运行,并且每个 LPAR 都具有自己的 OS 映像(CPU、RAM 和 I/O)。要对 IBM 服务器进行分区,您可以使用硬件管理控制台 (HMC) 或者相对较新的、称为集成虚拟化管理器 (IVM) 的产品。HMC 是运行在 IBM 自定义配置版 Linux 上的 PC,它允许您创建、配置和维护经过分区的服务器。IVM 进行这项工作时不需要独立的工作站。它是一种基于浏览器的用户界面,允许您在服务器中配置逻辑资源。

本文并不打算对 IBM LPAR 与 Solaris 容器和区域进行比较,因为这实际上并不是同类型的比较。然而,完全可以说在过去的几年中,IBM 和 Sun 都不断地尝试在市场销售期间将这种竞争作为卖点。在经过分区的 IBM System p 中,每个 LPAR 都具有自己的映像,然而容器和区域也具有各自相同的基础操作系统。从这个意义上,LPAR 更类似于 Sun 的 DSD(基于硬件的分区,并且不带有任何实际虚拟化的功能)和 LDom;尽管从技术观点来看,它们更加类似于 Sun 即将推出的 xVM,一种基于 Xen 的半虚拟化策略。本文将介绍 Sun 的容器虚拟服务器技术,并将其与 IBM WPAR 技术进行比较,还将介绍作为 Solaris 管理员,要想在 IBM 领域中取得成功所需要了解的内容。其次,这应该也适用于希望更全面理解 OS 虚拟化(WPAR 和区域)总体信息的 AIX 管理员。

为什么要使用 WPAR 呢?

如果您使用了 LPAR、DSD 或者 LDom,那么为什么还需要使用 WPAR 或者 zones 呢?IBM 和 Sun 都受到“向心力”的吸引而相互靠拢,这一点是很有趣的。IBM 和 Sun 并没有继续争论 LPAR 和容器虚拟服务器技术之间孰优孰劣,而是充分认识到对方所提供的技术的重要性,从而推动 IBM 开发出 WPAR、而 Sun 开发出 LDom(它出现于 LPAR 之后,其设计目的是使得 Solaris 更适合于进行分区),并且后者很快成为一种半虚拟化的产品(比如 xVM)。任何 AIX 管理员都将告诉您,虽然 LPAR 非常优秀,但是它们也存在一些缺点,比如需要维护多个映像,并可能需要使用高成本的硬件资源(如 RAM)。简单地说,分区(硬件和基于 Hypervisor 或者固件的分区)有助于在单个物理服务器中整合和虚拟化硬件,并提供在较大物理系统中配置独立主机系统的重要功能。OS 虚拟化(如 WPAR 或者区域),提供了更细粒度的资源管理方法。它通过共享 OS 映像来实现这项功能,并且它显然是对处理器,内存和 I/O 资源最有效地使用。

正如 WPAR 对 LPAR 进行了补充,zones 也对 DSD 或者 LDOM 进行了补充。它们都为业务提供了实际的价值。zones 或者 WPAR 形式的 OS 虚拟化,允许您进一步虚拟化应用程序工作负载,这将支持针对多种工作负载映像运行单个 OS 实例。使用这些虚拟化的 OS 分区可以迅速地部署新的应用程序,在使用 IBM 产品的情况下,您不需要始终关注于创建新的分区和安装新的 OS。而且,需要管理和修复的映像将更少,需要分配的硬件资源也将更少。另一方面,WPAR 是一个单点故障;例如,在 LPAR 出现问题时,所有的基础 WPAR 都将受到影响。它们还将受到计划停机的影响,因为在分区的 LPAR 中运行的每个 WPAR 实例都必须具有相同的 OS 级别,以防止需要在 LPAR 中安装修补程序包。

containers 和 zones

Solaris 的 container 虚拟服务器技术包括两个主要的组件:zone 分区技术和资源管理工具。尽管这些术语可以交换使用,但 zone 是一种实际的虚拟化环境,而 container 则是使用 OS 资源管理工具的一个 zone 。Solaris 10 最先引入这项技术。zone 可用于为应用程序的运行提供一种隔离的、并且安全的环境,zone 是在 Solaris 的单个实例中所创建的环境。从理论上说,您最多可以创建 8192 个 zone;然而,它们必须由系统中的其他约束来决定。

在创建任何其他区域之前,您所拥有的是 Solaris Global zone。当首次安装和部署系统时,所有的进程都运行于这个 Global zone 中。对于所有的实际用途和目的,非 Global zone 才是真正的区域。一共有两种类型的 non-global zones :一种是稀疏根区域 (sparse root zone),一种是完全根区域 (whole root zone)。稀疏根区域(它具有 inherit-pkg-dir 资源)可以优化对象共享,并由一个 root 文件系统(其中仅有部分内容是从数据包和文件复制而来的)组成。这种类型的区域通常需要大约 100GB 的空间。在这种模型中,root f/s 的四个目录(如下所示)都是可访问的:

  • /lib
  • /platform
  • /sbin
  • /usr

而且,仅复制了最重要的文件,其中 SUNW_PKGTYPE 设置为 root。其余的数据包并不安装到这个区域中,并且使用一个只读模式的环回文件系统 (lofs),可以访问这些数据包。一个完全根区域需要完整的 Solaris 10 安装。虽然它将占用更多的空间,但它可以提供更好的灵活性,因为您可以删除任何不需要的文件或者数据包,而这是您在使用稀疏模型时无法实现的。

稀疏模型是缺省模型。非全局区域的管理必须在全局区域(可启动的系统)中进行。它包含 Solaris 的完整安装,并且可以识别系统中的所有设备和文件系统。资源管理允许管理包括 CPU 和内存在内的各种系统资源。Sun 通过其 Solaris 资源管理器(容器虚拟服务器技术的一个组件)提供了动态的资源池。它允许对资源分配进行更多的控制,包括资源池和资源上限。作为一般规则,大多数的应用程序都可以直接在区域中工作。在某些情况下,这只是一个配置问题。在其他情况下,必须对应用程序进行修改以支持区域。其中包括需要访问 /dev/kmem 和网络设备的一些应用程序。Sun 提供了一个应用程序列表(列出充分支持的应用程序),因为它们由独立软件供应商 (ISV) 进行了评估。如果您的应用程序不在其中,也不要认为它将无法工作。一些 ISV 将区域作为和任何其他的应用程序一样处理,而并不认为必须对它们进行认证。

创建和管理 zone

在这个部分中,您将创建并配置一些 Solaris zone。您所使用的环境是 Sun Fire V210,这是运行于 1336 MHz 的 2 路 UltraSparc-IIIi CPU。

首先,您需要初始化该 zone:

. root[ksh]@ezqspc18# zonecfg -z testzone

然后,您需要列出当前配置的缺省信息,并将这些信息保存到一个文件中(请参见清单 1)。

清单 1. 输出当前配置的缺省信息
zonecfg:testzone>
zonecfg:testzone> export
create -b
set zonepath=/home/zones/myzone
set autoboot=false
set ip-type=shared
add inherit-pkg-dir
set dir=/lib
end
add inherit-pkg-dir
set dir=/platform
end
add inherit-pkg-dir
set dir=/sbin
end
add inherit-pkg-dir
set dir=/usr
end
add net
set address=192.168.0.22
set physical=e1000g0
end

对于上述的内容,您将更改一些变量的配置,设置您的安装区域路径和配置文件(请参见清单 2)。

清单 2. 更改一些变量的配置
zonecfg:testzone>
zonecfg:testzone> set zonepath=/zones/testzone
zonecfg:testzone> commit
zonecfg:testzone> export -f /testzone.cfg

现在,您已经做好进行安装的准备(请参见清单 3)。

清单 3. 安装
root[ksh]@ezqspc18# zoneadm -z testzone install
WARNING: skipping network interface 'e1000g0' which may not be present/plumbed \
    in the global zone.
Preparing to install zone <testzone>.
Creating list of files to copy from the global zone.
Copying <7231> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1580> packages on the zone.
Initializing package <367> of <1580>: percent complete: 23%

在大约 17 分钟后,将完成此次安装(请参见清单 4)。

清单 4. 安装完成
Initialized <1580> packages on zone.
Zone <testzone> is initialized.
The file </zones/testzone/root/var/sadm/system/logs/install_log> contains a log \
    of the zone installation.
root[ksh]@ezqspc18#

接下来,您需要启动这个区域(请参见清单 5)。

清单 5. 启动区域
root[ksh]@ezqspc18# zoneadm -z testzone boot
WARNING: skipping network interface 'e1000g0' which may not be present/plumbed \
    in the global zone.
root[ksh]@ezqspc18#

此时,您可以使用 zlogin 从全局环境进行登录:

zlogin -C testzone

在登录之后,您将看到连接的屏幕,但除此之外没有任何其他内容:

Connected to zone 'testzone' console]

在大约五分钟之后,您将接收到下一条消息。您将不会立即得到一个登录提示,但也不要惊慌。在第一次进行这项操作时,您需要对环境进行进一步的配置,这需要输入您的终端类型、加上主机名和网络信息(请参见清单 6)。

清单 6. 进一步配置您的环境
Select a Language

  0. English

Please make a choice (0 - 0), or press h or ? for help: 0
What type of terminal are you using?
 1) ANSI Standard CRT
 2) DEC VT52
 3) DEC VT100
 4) Heathkit 19
 5) Lear Siegler ADM31
 6) PC Console
 7) Sun Command Tool
 8) Sun Workstation
 9) Televideo 910
 10) Televideo 925
 11) Wyse Model 50
 12) X Terminal Emulator (xterms)
 13) CDE Terminal Emulator (dtterm)
 14) Other
Type the number of your choice and press Return: 3
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair
Configuring network interface addresses:.
? Host Name ????????????????????????????????????????????????????

  Enter the host name which identifies this system on the network.  The name
  must be unique within your domain; creating a duplicate host name will cause
  problems on the network after you install Solaris.

  A host name must have at least one character; it can contain letters,
  digits, and minus signs (-).

    Host name

System identification is completed.
rebooting system due to change(s) in /etc/default/init

[NOTICE: Zone rebooting]

System identification is completed.

rebooting system due to change(s) in /etc/default/init

[NOTICE: Zone rebooting]
SunOS Release 5.10 Version Generic_120011-14 64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: testzone

testzone console login: Jan 13 15:57:10 testzone sendmail[25411]: 
My unqualified host name (localhost) unknown; sleeping for retry

此时,您应该可以验证该 zone 已经启动(请参见清单 7)。

清单 7. 验证区域已经启动
#hostname
Testzone

您可以进一步查看全局环境的 zone 划分信息(请参见清单 8)。

清单 8. 全局环境的区域划分信息
root[ksh]@ezqspc18# zoneadm list -v
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              native   shared
   1 testzone         running    /zones/testzone                native   shared
root[ksh]@ezqspc18#

df 命令(使用 -Z 标志)显示了文件系统输出,包括 zone (请参见清单 9)。

清单 9. 带 -Z 标志的 df 命令
root[ksh]@ezqspc18# df -kZ
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0t0d0s0    60502476 11620301 48277151    20%    /
/devices                   0       0       0     0%    /devices
ctfs                       0       0       0     0%    /system/contract
proc                       0       0       0     0%    /proc
mnttab                     0       0       0     0%    /etc/mnttab
swap                 16904432    1376 16903056     1%    /etc/svc/volatile
objfs                      0       0       0     0%    /system/object
fd                         0       0       0     0%    /dev/fd
swap                 16903568     512 16903056     1%    /tmp
swap                 16903104      48 16903056     1%    /var/run
/platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1
        60502476 11620301 48277151    20%    /platform/sun4u-us3/lib/libc_psr.so.1
/platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1
     60502476 11620301 48277151    20%    /platform/sun4u-us3/lib/sparcv9/libc_psr.so.1
/zones/testzone/dev  60502476 11620301 48277151    20%    /zones/testzone/root/dev
/lib                 60502476 11620301 48277151    20%    /zones/testzone/root/lib
/platform            60502476 11620301 48277151    20%    /zones/testzone/root/platform
/sbin                60502476 11620301 48277151    20%    /zones/testzone/root/sbin
/usr                 60502476 11620301 48277151    20%    /zones/testzone/root/usr
proc                       0       0       0     0%    /zones/testzone/root/proc
ctfs                       0       0       0     0%  /zones/testzone/root/system/contract
mnttab                     0       0       0     0%    /zones/testzone/root/etc/mnttab
objfs                      0       0       0     0%    /zones/testzone/root/system/object
swap            16903248     192 16903056     1%    /zones/testzone/root/etc/svc/volatile
/zones/testzone/root/platform/sun4u-us3/lib/libc_psr/libc_psr_hwcap1.so.1
                     60502476 11620301 48277151    20% \
       /zones/testzone/root/platform/sun4u-us3/lib/libc_psr.so.1
/zones/testzone/root/platform/sun4u-us3/lib/sparcv9/libc_psr/libc_psr_hwcap1.so.1
                     60502476 11620301 48277151    20% \
       /zones/testzone/root/platform/sun4u-us3/lib/sparcv9/libc_psr.so.1
fd                         0       0       0     0%    /zones/testzone/root/dev/fd
swap                 16903056       0 16903056     0%    /zones/testzone/root/tmp
swap                 16903056       0 16903056     0%    /zones/testzone/root/var/run
root[ksh]@ezqspc18#

WPAR

WPAR 是在单个 AIX 映像中创建的虚拟化 OS 环境(只在 AIX 6.1 中受到支持)。每个分区都是一个安全的、并且隔离的环境,其中的每个进程在自己的映像中执行。尽管可以在没有经过分区的完全物理服务器中创建它们,但通常在 LPAR 中创建它们。承载分区的 AIX OS 部分称为全局环境。与 Solaris 类似,您可以在不由 WPAR 承载的全局环境(在具有 WPAR 的 LPAR 中)中运行应用程序。全局环境拥有 LPAR 的所有物理资源(CPU、RAM、网络和磁盘 I/O),并将 CPU 和内存资源分配给每个 WPAR。在全局环境中,您可以查看和控制在 WPAR 中运行的所有进程,包括它的文件系统。从 WPAR 之外运行的任何其他进程来看,所有的 WPAR 都是完全自包含的(具有私有的执行环境),并且还可以使用专门的网络地址。有两种类型的 WPAR:应用程序工作负载分区和系统工作负载分区。系统 WPAR 很接近于 AIX 的完整版本,并且类似于稀疏、或者满填充根 zone。每个 WPAR 都具有它自己专门的可写文件系统。在启动一个 WPAR 时,实际上将为该 WPAR 创建一个 init 进程,该进程将产生需要它的一些其他进程(inetdcron)。系统 LPAR 具有共享只读 /usr/ 和 /opt 文件系统的缺省选项;因此,从这个意义来看,它们也非常类似于稀疏和完全根 zone。

应用程序 WPAR 是虚拟化 OS 环境的真正的轻量级版本,与完整的应用程序相比,它更适合于执行进程。这种类型的分区可以共享全局环境的文件系统,但它不拥有任何专门的存储。虽然它可以运行应用程序守护进程,但它并没有运行任何守护进程,如 inetd 或者 cron。它也不允许对这个专门的环境进行远程访问。应用程序 WPAR 只是一些临时对象;在启动进程时创建它们,在应用程序分区中的最后一个进程结束时销毁它们。它们可以共享全局环境中的所有内容,在某种意义上,可以将它们看作是一种隔离地运行进程的包装。

对于 AIX 管理员来说,WPAR 的优点是在无需创建和管理新的 AIX 分区的情况下创建新环境的灵活性。而且它们允许整合应用程序,并且横向扩展工作环境,例如,开发和测试。现在,每个应用程序都可以在一个 WPAR 中执行,而不是创建独立的 LPAR。WPAR 对于硬件没有任何依赖关系,您甚至可以在不支持 IBM PowerVM Editions(以前的 IBM 高级 POWER 虚拟化)的 POWER4 系统中使用它们。从理论上讲,一个 LPAR 中最多可以执行 8192 个 WPAR(与 Solaris 相同);然而,从实践的角度来看,其他的 AIX 限制使得无法达到这个极限。使用一种名为 Relocative Software Packages 的软件安装新方法,实际上您可以在一个 AIX 映像中安装相同应用程序的多个版本,然后在独立的 WPAR 中启动该应用程序的每个版本。

在升级或者修补 LPAR 时,需要理解它如何影响在该 LPAR 中定义的各个 WPAR。因此,在产品之外使用多种测试环境变得更加重要。而且,系统管理员现在必须管理更多的文件系统;因为 WPAR 在全局环境中创建了更多的文件系统,每个 WPAR 至少拥有四个专门的文件系统(/、/home、/tmp 和 /var)。从应用程序的观点来看(类似于 Solaris 区域),大多数应用程序都应该是即时可用的;然而,需要使用系统设备的应用程序可能会出现问题。在 WPAR 中,不支持物理设备。尽管可以使用某种方式导出设备,但要求不可导出设备的应用程序仍然受到限制,只能在全局环境中运行。WPAR 还支持一种称为动态应用程序迁移的重要的 AIX 6.1 创新。它允许将某个 LPAR 中执行的、由 WPAR 承载的应用程序临时移动到另一个 LPAR 中,而不会带来任何停机时间。

创建并管理 WPAR

在这个部分中,您将创建并配置 IBM WPAR(系统和应用程序)。您的工作环境是使用一个 CPU 的 LPAR 分区的 p570,CPU 为 1654 MHz 的 POWER5。

系统 WPAR

首先,您将运行 mkwpar 命令,该命令首先将创建 WPAR 并安装文件系统(请参见清单 10)。

清单 10. 运行 mkwpar 命令
lpar13ml16fd_pub[/] > mkwpar -n tstsystemWPAR
mkwpar: Creating file systems...
 /
 /home
 /opt
 /proc
 /tmp
 /usr
 /var

当该进程完成时,它通过安装所需的所有文件集来实现此次安装(请参见清单 11)。

清单 11. 安装所需的文件集
bos.rte.serv_aid            6.1.0.1         ROOT        COMMIT      SUCCESS
vac.C                       9.0.0.2         ROOT        COMMIT      SUCCESS
Workload partition testsystemWPAR created successfully.
mkwpar: 0960-390 To start the workload partition, execute the following as root: 
startwpar [-v] testsystemWPAR
lpar13ml16fd_pub[/] >

这个过程用时不到三分钟,包括 217 个文件集的安装。

让我们来查看一下 WPAR 的状态(请参见清单 12)。

清单 12. 检查 WPAR 的状态
lpar13ml16fd_pub[/] > lswpar
Name            State  Type  Hostname        Directory
-------------------------------------------------------------------
MyTestWpar1     A      S     MyTestWpar1     /wpars/MyTestWpar1
MyTestWpar2     A      S     MyTestWpar2     /wpars/MyTestWpar2
testsystemWPAR  D      S     testsystemWPAR  /wpars/testsystemWPAR
lpar13ml16fd_pub[/] >

您所安装的 WPAR 现在处于已定义(defined)的状态。要激活它,可以使用 startwpar 命令(请参见清单 13)。

清单 13. 使用 startwpar 命令
lpar13ml16fd_pub[/] > startwpar -v testsystemWPAR
Starting workload partition testsystemWPAR.
Mounting all workload partition file systems.
Mounting /wpars/testsystemWPAR
Mounting /wpars/testsystemWPAR/home
Mounting /wpars/testsystemWPAR/opt
Mounting /wpars/testsystemWPAR/proc
Mounting /wpars/testsystemWPAR/tmp
Mounting /wpars/testsystemWPAR/usr
Mounting /wpars/testsystemWPAR/var
Loading workload partition.
$corral_t = {
              'name' => 'testsystemWPAR',
              'wlm_cpu' => [
                             undef,
                             undef,
                             undef,
                             undef
                           ],
              'path' => '/wpars/testsystemWPAR',
              'hostname' => 'testsystemWPAR',
              'wlm_procVirtMem' => [
                                     -1,
                                     undef
                                   ],
              'wlm_mem' => [
                             undef,
                             undef,
                             undef,
                             undef
                           ],
              'key' => 4,
              'vips' => [],
              'wlm_rset' => undef,
              'opts' => 4,
              'id' => 0
            };
Exporting workload partition devices.
Starting workload partition subsystem cor_testsystemWPAR.
0513-059 The cor_testsystemWPAR Subsystem has been started. Subsystem PID is 237720.
Verifying workload partition startup.
Return Status = SUCCESS.
lpar13ml16fd_pub[/] >

您可以使用不带任何标志的标准 df 命令,进一步显示相关的信息(请参见清单 14)。

清单 14. 使用 df 命令显示输出信息
df -k
/dev/fslv13        131072    128660    2%        5     1% /wpars/testsystemWPAR/home
/opt               262144    119808   55%     3048    11% /wpars/testsystemWPAR/opt
/proc                   -         -    -         -     -  /wpars/testsystemWPAR/proc
/dev/fslv14        131072    128424    3%        9     1% /wpars/testsystemWPAR/tmp
/usr              3538944    158348   96%    91414    69% /wpars/testsystemWPAR/usr
/dev/fslv15        131072    117088   11%      370     2% /wpars/testsystemWPAR/var

需要说明的是,为了增强对 WPAR 的支持,还对某些 AIX 命令经过了优化。vmstat 就是一个示例。这个输出(运行于全局环境中)将输出所有处于运行状态的 WPAR 中的数据(请参见清单 15)。

清单 15. 输出所有处于运行状态的 WPAR 的数据
lpar13ml16fd_pub[/] > vmstat -@ ALL 1 5

System configuration: lcpu=2 mem=2048MB drives=0 ent=0.25 wpar=3

wpar  kthr    memory              page              faults              cpu
----- ----- ----------- ------------------------ ------------ --------------------------
       r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa    pc    rc
System  0  0 264810 112840   0   0   0   0    0   0 849  104 250  0 32 67  0  0.10  39.4
Global  0  0     -     -     0   0   0   0    0   0   -    - 249  1 99  -  -  0.08  32.8
MyTestWpar1  0  0     -      0   0   0   0    0   0   -    -   1 54 46  -  -  0.00   0.1
MyTestWpar2  0  0     -      0   0   0   0    0   0   -    -   0  0  0  -  -  0.00   0.0
testsystemWPAR  0  0     -   0   0   0   0    0   0   -    -   0  0  0  -  -  0.00   0.0
----------------------------------------------------------------------------------------

ifconfighostnamenetstatps 进行了优化,以便在全局环境和 WPAR 中运行。还有一些其他的命令无法支持 WPAR,如 mpstatsar

应用程序 WPAR

您可能还记得,应用程序 WPAR 定义为允许进程或者应用程序在其中运行的 WPAR,非常类似于包装。它是临时的,应用程序结束时它将会结束。要创建它,您需要使用 wparexec 命令。清单 17 显示了在创建和运行应用程序 WPAR 时 lswpar 的输出(如清单 16 所示)。在这个示例中,创建 WPAR 大约需要花费六秒钟的时间,此外还需要大约一秒钟来运行该命令。

清单 16. 使用 wparexec 创建应用程序 WPAR
lpar13ml16fd_pub[/usr/bin] > wparexec /usr/bin/w applWPAR
Starting workload partition w.
Mounting all workload partition file systems.
Loading workload partition.
  01:18PM   up 2 days,   1:02,  2 users,  load average: 0.01, 0.09, 0.16
User     tty          login@       idle      JCPU      PCPU what
Shutting down all workload partition processes.

清单 17 显示了 lswpar 命令的输出。

清单 17. lswpar 的输出
lpar13ml16fd_pub[/] > lswpar
Name            State  Type  Hostname        Directory
-------------------------------------------------------------------
MyTestWpar1     A      S     MyTestWpar1     /wpars/MyTestWpar1
MyTestWpar2     A      S     MyTestWpar2     /wpars/MyTestWpar2
testsystemWPAR  A      S     testsystemWPAR  /wpars/testsystemWPAR
tstsystemWPAR   D      S     tstsystemWPAR   /wpars/tstsystemWPAR
w               T      A     w               /

在该进程完成之后,很快 WPAR 将不再存在(请参见清单 18)。

清单 18. WPAR 不再存在
lpar13ml16fd_pub[/] > lswpar
Name            State  Type  Hostname        Directory
-------------------------------------------------------------------
MyTestWpar1     A      S     MyTestWpar1     /wpars/MyTestWpar1
MyTestWpar2     A      S     MyTestWpar2     /wpars/MyTestWpar2
testsystemWPAR  A      S     testsystemWPAR  /wpars/testsystemWPAR
tstsystemWPAR   D      S     tstsystemWPAR   /wpars/tstsystemWPAR
lpar13ml16fd_pub[/] >

尽管应用程序 WPAR 是非常有限的,但它们有一定存在的意义,并且可以在测试进程和小型应用程序方面为系统管理员提供了更好的灵活性。

简要比较

这个部分将介绍 Sun 区域和 IBM WPAR 之间的一些重要区别。您可以回顾一个比较 OS 虚拟化概念和命令的表格。

动态应用程序迁移

动态应用程序迁移(AIX 6.1 的一种特性),允许您移动正在运行的 WPAR,而不中断任何用户的操作,并且它是 zone 和 WPAR 之间的一个最重要的功能或者特性区别。在 Solaris 中无法进行这项操作。要在 Solaris 中执行类似的操作,您必须附接和取下一个挂起的区域,因为 Solaris 系统管理员不能在多个服务器之间转移正在运行的工作负载。这种特性还允许对多个系统进行工作负载平衡。在进行这项工作中,通过允许操作员将工作负载转移到负载较少的系统,它还可以帮助节省数据中心的成本。

易用性

对于 zone 来说,要创建它,您需要使用几个命令,并且作为启动过程的一部分,您还必须完成进一步配置迭代。对于 WPAR 来说,安装就像运行一个命令那样简单。配置也更简单。

速度

系统 WPAR 的创建在三分钟之内就完成了;然而,创建 zone 的过程花费了我近半个小时,包括执行更多的命令。

应用程序 WPAR

尽管 Solaris 提供了两种类型的 zone ,但它们都等价于 AIX 中的系统 WPAR。Solaris 不支持应用程序 WPAR(它可以在 10 秒内创建)。

隔离性

zone 只提供了内存和处理器隔离,而 WPAR 则包含进程和分页隔离。

工作负载分区管理器

工作负载分区管理器是 IBM Systems Director 的一个组成部分,并且支持动态应用程序迁移。它是一个独立的可安装程序,与 Sun 所提供的工具相比,它是一种具有更好的可管理性的工具。在其他特性中,它包括 WPAR 的交叉系统管理和基于策略的自动化应用程序迁移。

双重打击

因为分区和虚拟化相互配合,所以 IBM 显然提供了更好的分区产品(使用其基于 LPAR 的技术),现在 IBM PowerVM Editions 实现了这种方式。与 zone 和 DSD 或者 zone 和 LDom 的结合相比,LPAR 和 WPAR 的结合是一个更好的组合,并且可以更加紧密地集成在一起。值得一提的是,LDom 只能在运行 Solaris 10 的单芯片解决方案(Suns UltraSPARC T1 或者 UltraSPARC T2 处理器)中运行,无法像 System p 服务器那样具有伸缩性;无法使用多芯片 SMP。Dynamic Systems Domain 建立在硬件分区的基础之上(为 DSD 分配的浮点计算资源的粒度受到主板的限制),并且实际上不提供任何虚拟化功能。

成熟性

公平地说,因为基于容器的技术存在的时间比 WPAR 长,所以相比之下,这种产品更加成熟、而且应该更加稳定。尽管认证并不是必需的,但经过 ISV 认证的、运行于区域中的应用程序要比运行于 WPAR 中的应用程序要更多一些。还应该注意一点,尽管没有认证 Oracle RAC 能够在这两者之一的实现中运行,但 Oracle 经过认证可以在这两者中运行。

表 1 提供了 Solaris 和 AIX 之间 OS 虚拟化命令和概念的比较。

表 1. WPAR 和区域的命令和概念的对比
类型(描述)Solaris(zone)AIX (WPAR)
主要的 OS 映像全局 zone全局环境
创建命令zonecfg & zoneadm(两个命令都需要)mkwpar(系统)& wparexec(应用程序)
类型稀疏根区域、完全根区域系统 WPAR、应用程序 WPAR
查看信息zoneadm list -vlswpar
登录zloginclogin
文件系统信息df -kZdf -k

总结

本文介绍了 SUN 和 IBM 平台中的分区和虚拟化。描述、创建和比较了 zone 和 WPAR 中的各个组成部分。迁移到 AIX 的 Solaris 管理员应该发现创建 WPAR 更加简单和快捷。AIX 6.1 中最新的创新(在 Solaris 和区域中并不存在),包括动态应用程序迁移,允许您将正在运行的 WPAR 迁移到另一个 LPAR,而不产生任何中断。使用工作负载分区管理器,您还应该发现对分区具有更强的可管理性。而且,进行前期研究以确定应用程序 WPAR 可以在何种情况下帮助您运行和测试应用程序,这还将有助于您充分地利用这个重要的特性。使用系统管理接口工具 (SMIT),即 IBM 前端接口,您可以运行许多 WPAR 命令。事实上,正在向 AIX 过渡的所有 Solaris 管理员都已经开始真正喜欢上这个工具了。

参考资料

学习

获得产品和技术

  • IBM 试用软件:从 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
ArticleID=295353
ArticleTitle=从 Solaris 过渡到 AIX
publish-date=03172008