Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90872513
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-20 13:04:33

developerWorks
 

赵 钦, 软件工程师, IBM

2008 年 1 月 24 日

工作负载分区 (WPAR) 是 AIX 6 提供了一种全新的虚拟化技术。WPAR 技术为企业构建虚拟 IT 基础设施提供了强有力的支持。本文着重介绍了系统 WPAR 的管理和使用方法。

AIX 6 提供的工作负载分区 (WPAR) 技术是一种全新的软件虚拟技术,用于隔离用户和应用程序。它不依赖于硬件特性,是多种 AIX 核心技术的综合体现。AIX 6 可以提供两种类型的 WPAR,分别是系统 WPAR 和应用程序 WPAR。系统 WPAR 是一个完整的 AIX 运行环境,而应用程序 WPAR 是一个轻量级的环境,适合运行一个或少量的应用程序进程。系统 WPAR 是一种虚拟化的操作系统。通过创建 WPAR 环境,AIX 操作系统会被划分成若干个 WPAR,每一个 WPAR 上运行一个 AIX 实例,并且可以运行应用程序。这些 WPAR 相互独立,WPAR 上运行的应用程序被完全隔离,互不干扰。本文着重介绍系统 WPAR 的管理和使用方法,如无特别说明,本文所述的 WPAR 均指系统 WPAR。

在具体介绍 WPAR 之前还需要介绍另一个新的名词,即全局环境(Global Environmnet)。全局环境是指运行 WPAR 的 AIX 操作系统。在一个 AIX 系统上创建 WPAR 并不会影响此系统的使用。用户依然可以登录到全局环境,运行应用程序。运行 WPAR 的 AIX 系统和不运行 WPAR 的 AIX 系统没用任何区别。







创建系统 WPAR 非常简单。唯一的准备工作就是以 root 用户身份创建 /wpars 目录,并把权限改称 700。很明显,我们不希望普通用户随便进入 WPAR 的虚拟 rootvg。另外,如果你要创建 WPAR 名称已经在 /etc/hosts 或 DNS 系统中存在 , 那么你要做的仅仅是执行一个命令 :

# mkwpar –s -n wpar_zhaoqin

其中 zhaoqin 是已经存在的 WPAR 的名称。

成功启动 WPAR 之后,你可以从任何地方连接到 WPAR,就如同你使用一个独立的系统一样。通常可以从全局环境运行 clogin 命令进入 WPAR。

# clogin wpar_zhaoqin
*******************************************************************************
* *
* *
* Welcome to AIX Version 6.1! *
* *
* *
* Please see the README file in /usr/lpp/bos for information pertinent to *
* this release of the AIX Operating System. *
* *
* *
*******************************************************************************

#

看到熟悉的 AIX 欢迎画面和 # 提示符之后,就可以开始使用你的 WPAR 了!







在继续介绍 WPAR 之前,首先介绍一个 WPAR 环境下的常用命令,即 uname -Wuname -W 命令输出 WPAR 的标识符,如果标识符为 0,代表全局环境,非零值代表 WPAR。

系统 WPAR 和独立的 AIX 系统一样,拥有 init 进程和其他系统进程。用户在 WPAR 内部,只能访问 WPAR 自己的进程,无法访问全局环境或其他 WPAR 的进程。

# uname -W ; ps -ef | grep init | grep -v grep
1
 root 1 0 0 06:27:02 - 0:00 /etc/init

用户在全局环境,也可以看到 WPAR 的 init 进程和其他进程。

# uname -W ; ps -ef | grep init | grep -v grep
0
 root 1 0 0 Nov 28 - 0:00 /etc/init
 root 397554 143502 0 06:27:02 - 0:00 /etc/init

在上面的例子中,397554 就是 wpar_zhaoqin 的 init 进程在全局环境中的进程号。WPAR 中的进程号和全局环境中的进程号一一对应。

AIX 6 的 ps 命令专门为 WPAR 增加了 -@ 选项。在全局环境中,这个选项可以使 ps 命令显示进程所属的 WPAR 名称。

# uname -W ; ps -ef -@ | grep init | grep -v grep
0
 Global root 1 0 0 Nov 28 - 0:16 /etc/init
 wpar_zhaoqin root 336008 143502 0 Dec 04 - 0:01 /etc/init

而在 WPAR 内部,所有进程的 WPAR 名称都会被显示为 Global。

# uname -W ; ps -ef -@ | head -n 4
1
 WPAR UID PID PPID C STIME TTY TIME CMD
 Global root 176206 1 0 Dec 04 - 0:00 /usr/sbin/srcmstr
 Global root 299184 176206 0 Dec 04 - 0:00 /usr/sbin/qdaemon
 Global root 1 0 0 Dec 04 - 0:01 /etc/init







系统 WPAR 是一种可以被创建,启动,停止并迁移的动态的抽象对象。这种动态的特征在逻辑上由其状态改变来体现。表 1 列举了系统 WPAR 的 7 种状态。



状态名 标识符 描述
Defined D WPAR 已经被创建,但是还没有启动。
Active A WPAR 正在运行中。
Paused P 可迁移 WPAR 的状态,代表 WPAR 已经成功通过同步检查点
Broken B WPAR 发生严重错误,并且恢复操作失败。
Transitional T 一种特殊状态,代表 WPAR 正在从一个状态变为另一个状态
Frozen F 可迁移 WPAR 的状态,代表 WPAR 可以进入同步检查点
Loaded L 可迁移 WPAR 的内部状态

lswpar 命令可以用来察看 WPAR 的状态。刚刚创建的 wpar_zhaoqin 分区正在运行,它的状态是 Active。

# lswpar
Name State Type Hostname Directory
-------------------------------------------------------------
wpar_zhaoqin A S wpar_zhaoqin /wpars/wpar_zhaoqin

WPAR 的管理命令触发 WPAR 的状态迁移。例如 stopwpar 命令将处于 Acitive 状态的 WPAR 改变成 Defined 状态。

# stopwpar wpar_zhaoqin
Stopping workload partition wpar_zhaoqin.
Stopping workload partition subsystem cor_wpar_zhaoqin.
0513-044 The cor_wpar_zhaoqin Subsystem was requested to stop.
stopwpar: 0960-261 Waiting up to 600 seconds for workload partition to halt.
Shutting down all workload partition processes.
Unmounting all workload partition file systems.
# lswpar wpar_zhaoqin
Name State Type Hostname Directory
-------------------------------------------------------------
wpar_zhaoqin D S wpar_zhaoqin /wpars/wpar_zhaoqin

WPAR 的这种动态特性可以用状态机描述。图 1 是系统 WPAR 的状态迁移图。图中的实线结点代表 WPAR 的状态,虚线结点代表 WPAR 的内部状态,实线箭头代表 WPAR 的正常状态迁移,虚线箭头代表 WPAR 的出错状态迁移。










上面的例子中,参数 wpar_zhaoqin 是 WPAR 的名称。mkwpar 命令会创建 WPAR 所有的文件系统 (/, /home, /tmp, /var and /proc),和共享文件系统 /opt 和 /usr。这些文件系统创建完成之后就会被装载。缺省的情况下,所有的文件系统都被创建于 rootvg,逻辑卷的的名称也会使用缺省的名称。参数 -g 可以用来在其他的卷组上创建逻辑卷。WPAR 的根目录位于全局环境的 /wpars。在全局环境就可以察看 WPAR 根目录。

# ls /wpars/wpar_zhaoqin
.sh_history dev lost+found proc u wpars
admin etc lpp sbin unix
audit home mnt tftpboot usr
bin lib opt tmp var

全局环境的 mount 命令可以显示 WPAR 的所有文件系统。

# mount | grep wpar_zhaoqin
 /dev/fslv00 /wpars/wpar_zhaoqin jfs2 Dec 04 06:26 rw,log=INLINE 
 /dev/fslv01 /wpars/wpar_zhaoqin/home jfs2 Dec 04 06:26 rw,log=INLINE
 /opt /wpars/wpar_zhaoqin/opt namefs Dec 04 06:26 ro 
 /proc /wpars/wpar_zhaoqin/proc namefs Dec 04 06:26 rw 
 /dev/fslv02 /wpars/wpar_zhaoqin/tmp jfs2 Dec 04 06:27 rw,log=INLINE
 /usr /wpars/wpar_zhaoqin/usr namefs Dec 04 06:27 ro 
 /dev/fslv03 /wpars/wpar_zhaoqin/var jfs2 Dec 04 06:27 rw,log=INLINE

mount 命令输出中类型为 namefs 的文件系统是 WPAR 和全局环境共享的文件系统。全局环境拥有这些共享文件系统的读写权限,而 WPAR 只拥有读权限。这种与全局环境共享 /usr 和 /opt 文件系统的 WPAR 被称为共享 WPAR。共享 WPAR 不能写 /usr 和 /opt 文件系统,这个局限性可能会影响某些应用程序的使用。如果用户需要在共享 WPAR 中写 /usr 文件系统,可以在全局环境创建一个新的文件系统,然后把这个文件系统装载到 WPAR 的目录结构下,并在全局环境的 /usr 目录结构下创建符号链接指向这个新的文件系统。

还有一种非共享 WPAR,它拥有私有的 /usr 和 /opt 文件系统。WPAR 是共享还是非共享只能在创建时决定。下面的 mkwpar 命令将会创建一个非共享的 WPAR。

# mkwpar -M directory=/ vfs=jfs2 dev=/dev/lv_wpar_zhaoqin -M vfs=directory 
directory=/var -M vfs=directory directory=/tmp -M vfs=directory directory=/home 
-M vfs=directory directory=/usr -M vfs=directory directory=/opt -n wpar_zhaoqin

无论是共享的 WPAR 还是非共享的 WPAR,都可以通过装载 NFS 与全局环境共享文件系统。







由于共享 WPAR 无法写 /usr 和 /opt 文件系统,我们无法为共享 WPAR 单独安装应用程序。如果需要为共享 WPAR 安装应用程序,必须首先在全局环境安装该应用程序,然后使用 syncwpar 命令同步全局环境和共享 WPAR,这样 WPAR 才可以使用该应用程序。下面的文字以安装 openssl.base 为例,介绍了在共享 WPAR 上安装应用程序的方法。

首先在全局环境安装 openssl.base。

# installp -acY -d. openssl.base
……
Installation Summary
--------------------
Name Level Part Event Result
-------------------------------------------------------------------------------
openssl.base 0.9.8.4 USR APPLY SUCCESS
openssl.base 0.9.8.4 ROOT APPLY SUCCESS

installp 的输出中可以看到 openssl.base 包括 USR 和 ROOT 两部分,这两部分都被成功的安装到了全局环境。由于全局环境和 WPAR 共享 USR 部分,但是不共享 ROOT 部分,如果用户想在 WPAR 中使用 openssl.base,还需要将 openssl 的 ROOT 部分安装到 WPAR 中去。这个安装操作由 syncwpar 命令完成。

# syncwpar wpar_zhaoqin
*******************************************************************************
Synchronizing workload partition wpar_zhaoqin (1 of 1).
*******************************************************************************
Executing /usr/sbin/syncroot in workload partition wpar_zhaoqin.
syncroot: Processing root part installation status.
syncroot: Synchronizing installp software.
……
Installation Summary
--------------------
Name Level Part Event Result
-------------------------------------------------------------------------------
openssl.base 0.9.8.4 ROOT APPLY SUCCESS
syncroot: Processing root part installation status.
syncroot: Installp root packages are currently synchronized.
syncroot: RPM root packages are currently synchronized.
syncroot: Root part is currently synchronized.
syncroot: Returns Status = SUCCESS
Workload partition wpar_zhaoqin synchronized successfully.

Return Status = SUCCESS.

syncwpar 命令的输出中我们可以发现,syncwpar 会检查安装在全局环境和 WPAR 的 ROOT 部分的应用程序(包括 installp 和 RPM)。如果发现 WPAR 的 ROOT 部分和全局环境的 ROOT 部分不一致,就会在 WPAR 的 ROOT 部分安装(或卸载)应用程序,使其和全局环境保持一致。如果用户需要从 WPAR 卸载应用程序,也需要先在全局环境卸载该应用程序,再使用 syncwpar 命令从 WPAR 卸载该应用程序。

除了 syncwpar 命令以外,AIX 还提供了 syncroot 命令,也可以为 WPAR 的 ROOT 部分安装应用程序。与 syncwpar 命令不同的是,syncroot 命令需要在 WPAR 内部运行。

如果用户创建的 WPAR 是非共享 WPAR(即 WPAR 不共享全局环境的 USR 部分),那么用户就不需要使用 syncwpar 安装或卸载 WPAR 中的应用程序。非共享的 WPAR 拥有独立的 USR 部分,无须和全局环境保持一致,用户只需要在 WPAR 中运行 installp 安装应用程序即可。







AIX 系统中所有 WPAR 和全局环境共同使用服务器的 CPU,内存等系统资源。如何管理和利用这些系统资源十分重要。只有合理且充分的利用这些系统资源,才能真正有效的应用 WPAR 这个虚拟化的系统。WPAR 在创建时会被赋予缺省的资源分配策略。使用 lswpar -R 命令可以查看 WPAR 的系统资源分配策略。

# lswpar -R
=================================================================
wpar_zhaoqin - Active
=================================================================
Active: yes
Resource Set:
CPU Shares: unlimited
CPU Limits: 0%-100%,100%
Memory Shares: unlimited
Memory Limits: 0%-100%,100%
Per-Process Virtual Memory Limit: unlimited
Total Processes: unlimited
Total Threads: unlimited

lswpar -R 命令的输出中可以看出,WPAR 的系统资源分配策略涵盖了三个方面,分别是 CPU, 内存,进程与线程。WPAR 允许用户根据需要来配置的 CPU 和内存的分配比例,最大进程数和最大线程数,以及每个进程的虚存上界。下文以 CPU 资源为例,介绍了配置管理 WPAR 资源的方法。

lswpar -R 的输出中有关 CPU 资源的分配策略包括了两个属性,CPU Shares 和 CPU Limits。CPU Shares 属性值的是一个正整数,其大小代表 WPAR 对 CPU 资源的需求程度,值越大说明 WPAR 需要越多的 CPU 资源。CPU Shares 的最大值用 unlimited 代表。CPU Limits 属性值包含 3 个百分数,按从左到右的顺序分别被称为软下界,软上界和硬上界。它们的含义是:

  • 软下界:WPAR 有请求时,至少分配给 WPAR 的 CPU 资源比例
  • 软上界:有竞争的情况下,至多分配给 WPAR 的 CPU 资源比例
  • 硬上界:无竞争的情况下,至多分配给 WPAR 的 CPU 资源比例

其中软上界的值不能大于硬上界的值。

WPAR 缺省的 CPU 分配策略将 CPU Shares 的值定为 unlimited, 软上界和硬上界的值都是 100%。这样的分配策略可以使 WPAR 无限制的使用服务器的 CPU 资源。我们可以通过一个实验说明这一点。实验使用的服务器拥有两个 CPU,因此可以在 WPAR 中同时运行两个无限循环的 shell 脚本,使这台服务器的 CPU 利用率达到最大。

# i=0
# while true ; do ((i=i+1)) ; done

在全局环境中,用 vmstat 命令可以看到此时服务器的 CPU 利用率接近 100%

# vmstat 5 3

System configuration: lcpu=2 mem=3968MB

kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
 r b avm fre re pi po fr sr cy in sy cs us sy id wa
 2 0 227495 661331 0 0 0 0 0 0 2 35 101 99 0 0 0
 2 0 227495 661331 0 0 0 0 0 0 9 12 105 99 0 0 0
 2 0 227495 661331 0 0 0 0 0 0 2 17 102 99 0 0 0

接下来,使用 chwpar 命令把 WPAR 的 CPU 软上界和硬上界分别减少为 30% 和 50%。

# chwpar -R CPU=0%-30%,50% wpar_zhaoqin
# lswpar -R
=================================================================
wpar_zhaoqin - Active
=================================================================
Active: yes
Resource Set:
CPU Shares: unlimited
CPU Limits: 0%-30%,50%
Memory Shares: unlimited
Memory Limits: 0%-100%,100%
Per-Process Virtual Memory Limit: unlimited
Total Processes: unlimited
Total Threads: unlimited

再次运行 vmstat,可以看到 CPU 利用率明显降低。

# vmstat 5 3

System configuration: lcpu=2 mem=3968MB

kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
 r b avm fre re pi po fr sr cy in sy cs us sy id wa
 2 0 227859 660967 0 0 0 0 0 0 16 2845 215 38 2 60 0
 2 0 227345 661481 0 0 0 0 0 0 2 2490 117 49 0 51 0
 2 0 227345 661481 0 0 0 0 0 0 21 10 128 36 0 64 0

WPAR 内存的分配策略和 CPU 类似。用户可以根据具体应用的需求来配置 WPAR 的 CPU 和内存分配策略,以实现运算资源的优化配置。







本文向您详细介绍了 AIX 6 系统 WPAR 的管理和使用方法,使您更加深入地了解了 AIX 新的虚拟化技术。希望这些先进的虚拟化技术能为您的工作提供有效的帮助。

阅读(1021) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~