2008年(3500)
分类:
2008-05-04 23:26:53
假设和许多其他的公司一样,您已经使用 Solaris 已经十多年的时间了,您刚刚启动了一个从 Solaris 10 到 AIX(R) 6.1 的大型服务器整合和迁移项目。虽然许多命令都非常类似,但是您需要了解如何使用分区和虚拟化。IBM(R) 和 Sun 服务器在分区方面有哪些区别呢?并且,为了从 containers 进行成功的转换,您需要了解哪些有关工作负载分区 (WPAR) 的内容呢?WPAR 和 zones 之间的相似之处和区别之处分别是什么,以及创建 zones 和 WPAR 的过程有哪些不同?最后,您可以在 IBM System p(TM) 中进行哪些使用 Sun 服务器无法完成的操作呢?这些都是本文中所要解决的问题,其目的是使得您的转换工作更加容易。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)。
zonecfg:testzone> zonecfg:testzone> set zonepath=/zones/testzone zonecfg:testzone> commit zonecfg:testzone> export -f /testzone.cfg |
现在,您已经做好进行安装的准备(请参见清单 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 |
在大约 17 分钟后,将完成此次安装(请参见清单 4)。
Initialized <1580> packages on zone. Zone |
接下来,您需要启动这个区域(请参见清单 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)。
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)。
#hostname Testzone |
您可以进一步查看全局环境的 zone 划分信息(请参见清单 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)。
-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 进程,该进程将产生需要它的一些其他进程(inetd
和cron
)。系统 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)。
mkwpar
命令lpar13ml16fd_pub[/] > mkwpar -n tstsystemWPAR mkwpar: Creating file systems... / /home /opt /proc /tmp /usr /var |
当该进程完成时,它通过安装所需的所有文件集来实现此次安装(请参见清单 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)。
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)。
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)。
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)。
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 ---------------------------------------------------------------------------------------- |
对ifconfig
、hostname
、netstat
和ps
进行了优化,以便在全局环境和 WPAR 中运行。还有一些其他的命令无法支持 WPAR,如mpstat
和sar
。
应用程序 WPAR
您可能还记得,应用程序 WPAR 定义为允许进程或者应用程序在其中运行的 WPAR,非常类似于包装。它是临时的,应用程序结束时它将会结束。要创建它,您需要使用wparexec
命令。清单 17显示了在创建和运行应用程序 WPAR 时lswpar
的输出(如清单 16所示)。在这个示例中,创建 WPAR 大约需要花费六秒钟的时间,此外还需要大约一秒钟来运行该命令。
wparexec
创建应用程序 WPARlpar13ml16fd_pub[/usr/bin] > wparexec /usr/bin/w applWPARStarting 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
命令的输出。
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/tstsystemWPARw T A w / |
在该进程完成之后,很快 WPAR 将不再存在(请参见清单 18)。
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 虚拟化命令和概念的比较。
类型(描述) | Solaris(zone) | AIX (WPAR) |
---|---|---|
主要的 OS 映像 | 全局 zone | 全局环境 |
创建命令 | zonecfg & zoneadm(两个命令都需要) | mkwpar(系统)& wparexec(应用程序) |
类型 | 稀疏根区域、完全根区域 | 系统 WPAR、应用程序 WPAR |
查看信息 | zoneadm list -v | lswpar |
登录 | zlogin | clogin |
文件系统信息 | df -kZ | df -k |
总结
本文介绍了 SUN 和 IBM 平台中的分区和虚拟化。描述、创建和比较了 zone 和 WPAR 中的各个组成部分。迁移到 AIX 的 Solaris 管理员应该发现创建 WPAR 更加简单和快捷。AIX 6.1 中最新的创新(在 Solaris 和区域中并不存在),包括动态应用程序迁移,允许您将正在运行的 WPAR 迁移到另一个 LPAR,而不产生任何中断。使用工作负载分区管理器,您还应该发现对分区具有更强的可管理性。而且,进行前期研究以确定应用程序 WPAR 可以在何种情况下帮助您运行和测试应用程序,这还将有助于您充分地利用这个重要的特性。使用系统管理接口工具 (SMIT),即 IBM 前端接口,您可以运行许多 WPAR 命令。事实上,正在向 AIX 过渡的所有 Solaris 管理员都已经开始真正喜欢上这个工具了。
下载本文示例代码