结合使用 NIM 服务处理程序和 NIM Alternate Disk Migration 工具

本文介绍如何结合使用 nimshnimadm 实现向 IBM® AIX® 版本 7.1 的迁移。

Chris Gibson, AIX 专家, IBM

/developerworks/i/p-cgibson.jpgChris Gibson 是 IBM Systems and Technology Group 的一名 Power Systems Client 技术专家,居住在澳大利亚墨尔本市。他与人合著了有关 AIX 的 IBM Redbooks®。Chris 通过其 AIX 博客 和 Twitter (@cgibbo) 向 AIX 社区投稿。


developerWorks 投稿作者

2014 年 1 月 06 日

简介

我撰写了一些有关 Network Install Manager Alternate Disk Migration (nimadm) 工具的文章(参考本文的 参考资料 部分)。每次写这些文章时,我都会讨论如何使用该工具实现不同 AIX 版本之间的迁移。现在,如果您希望用这个工具迁移 Network Installation Management (NIM) 客户端,则需要在客户端系统上启用 rshd。这会给某些客户带来困扰。由于组织的安全条例,一些客户无法启用或被禁止启用该服务,即使启用也是短期启用。因此,一些对安全敏感的站点必须找出迁移到新版 AIX 的其他方法。

从 AIX 6.1 TL8 和 AIX 7.1 TL2 起,nimadm 工具开始支持 NIM 服务处理程序(nimsh)协议。在使用该协议后,执行 AIX 迁移就不再需要在 NIM 客户端上启用 rshd。本文将介绍如何使用 nimsh 和 nimadm 迁移到 AIX 版本 7.1。


NIM 服务处理程序是什么?

不管您是否相信,nimsh 其实已经有接近十年的存在历史了。它最初是 AIX 5L V5.2 ML 07 和 AIX 5L V5.3(2004 年)的一个新特性,被称为 NIM Service Handler (NIMSH)。这个新特性使得在进行 NIM 客户端通信时不再需要运行 ‘r’ 命令。对于使用标准 rsh 协议无法满足安全需求的环境,使用 nimsh 是一项最佳实践并被广泛实施。

NIM 服务处理程序为 NIM 命令提供了一个 “包装器(wrapper)”。只有使用 nimsh(位于 /usr/lpp/bos.sysmgt/nim/methods 目录中)注册的命令被作为根命令运行:其他任何命令都将被拒绝执行。尽管 nimsh 消除了对 rsh 的需求,但在默认配置下,它并未提供可靠的基于密匙加密的认证。将 nimsh 配置为使用 OpenSSL 就可以利用密码认证。在 NIM 客户端上安装 OpenSSL 时,将在 nimsh 服务认证期间建立 Secure Sockets Layer (SSL) 套接字连接。启用 OpenSSL 后将提供 SSL 密匙生成功能,以及 SSL 版本 3 中支持的所有密码套件。参考 参考资料 部分,详细了解如何配置 nimsh 以使用 OpenSSL。

NIM 客户端守护进程 (nimsh) 是作为 bos.sysmgt.nim.client 文件集的一部分安装的。nimsh 客户端守护进程将数据记录到 /var/adm/ras/nimsh.log 文件。

nimsh 通信涉及两个端口,分别称为主端口(端口 3901)和副端口(端口 3902)。主端口侦听服务请求。巧合的是,SAP 也使用了与 nimsh 相同的端口号。参见 Chris 有关 nimsh 和 SAP 的 AIX 博客,获得有关此内容的更多信息,并了解如何处理这种情形。

nimsh 子系统在 System Resource Controller (SRC) 中进行了注册。SRC 组名是 nimclient,定义的子系统被称为 nimsh。

NIM 客户端可以混合使用 rshd 和 nimsh。但是,最好对所有 NIM 客户端通信都使用 nimsh,完全避免使用 rshd。


配置 nimsh

如果您还没有针对 nimsh 配置您的 AIX 系统,那么您需要执行下面的步骤,让 NIM 客户端通过 nimsh 与 NIM 主机通信。在 NIM 客户端上执行下面的步骤,重新配置 NIM 客户端。首先,移除所有以前的旧的 /etc/niminfo 配置文件,然后使用 niminit 命令重新配置 NIM 客户端,将 nimsh 设置为 NIM 客户端使用的通信协议。最后,确认 nimsh 子系统已激活。

# mv /etc/niminfo /etc/niminfo.old 
# niminit -a master=nim1 -a name=`hostname # stopsrc -s nimsh 
# smit nim_config_services 
* Communication Protocol used by client [nimsh] + 
# lssrc -s nimsh 
Subsystem  Group       PID        Status 
nimsh      nimclient   6029524    active

在 NIM 主机上,确认 NIM 客户端连接段(connect stanza)现在显示的是 nimsh 而非 shell。

# lsnim -l aix61 
aixlpar61: 
    class           = machines 
    type            = standalone 
    locked          = 9502758 
    connect                     = nimsh 
    platform        = chrp 
    netboot_kernel  = 64 
    if1             = network1 aixlpar61 0 
    cable_type1     = N/A 
    Cstate          = alt_disk_mig operation is being performed 
    prev_state      = ready for a NIM operation 
    Mstate          = currently running 
    lpp_source      = aix71 
    spot            = aix71spot
    cpuid           = 00C8E4244C00 
    control         = master 
    Cstate_result   = reset

使用 nim –o showlog 命令,验证 NIM 客户端可以通过 nimsh 与 NIM 主机进行通信。该命令应当返回 NIM 客户端上的 NIM 安装日志文件的内容(/var/adm/ras/nim.installp)。

# nim -o showlog aix61
BEGIN:Thu Mar 24 01:29:36 2011:032401293611
Command line is:
/usr/sbin/installp -u -e /var/adm/ras/nim.installp -b -f \
/tmp/.workdir.3014756.2686976_1/.genlib.installp.list.2686976
+-----------------------------------------------------------------------------+
                    Pre-deinstall Verification...
+-----------------------------------------------------------------------------+
done
…etc…
Installation Summary
--------------------
Name                        Level           Part        Event       Result
-------------------------------------------------------------------------------
bos.sysmgt.nim.master       6.1.0.0         USR         DEINSTALL   SUCCESS
END:Thu Mar 24 01:29:49 2011:032401294911

如果 nimsh 在 NIM 客户端上不能正常运行,那么您将收到类似如下所示的错误消息。

# nim -o showlog aix61
0042-001 nim: processing error encountered on "master":
0042-006 m_showlog: (From_Master) connect 
A remote host did not respond within the timeout period.
nconn: connect() failed, errno is 78
aix61: A remote host did not respond within the timeout period.

结合使用 nimsh 和 nimadm

在本节,我们将结合使用 nimsh 和 nimadm 从 AIX 版本 6.1 系统迁移到 AIX 版本 7.1。以下 AIX 版本、标准和补丁是已安装的内容:

NIM Master: 7100-02-01-1245 + IV46746m2c (Allow NIMADM with NIMSH and NIM CACHE)*
NIM Client: 6100-08-01-1245

为了确保迁移成功,您需要安装临时补丁 IV46746m2c。没有该补丁的话,nimadm 操作将会失败。这个临时补丁只安装在 NIM 主机上。您需要联系 IBM 支持中心来获取该补丁。

root@nim1[/tmp] # emgr -e IV46746m2c.130826.epkg.Z
root@nim1[/tmp] # emgr -l
ID  STATE LABEL      INSTALL TIME      UPDATED BY ABSTRACT
=== ===== ========== ================= ========== ======================================
1    S    IV46746m2c 08/27/13 12:39:55            Allow NIMADM with NIMSH and NIM CACHE

NIM 客户端安装了 AIX 6.1 TL8 SP1。为迁移准备了一个空闲磁盘。nimsh 子系统已激活。

root@aix61[/] # oslevel -s
6100-08-01-1245
root@aix61[/] # lspv
hdisk0          00c8e424e56b6006      rootvg     active
hdisk1                       00f6050a2cd79ef8                                        None
root@aix61[/] # lssrc -s nimsh
Subsystem       Group           PID          Status
  nimsh                       nimclient                   3539094                 active

NIM 主机安装了 AIX 7.1 TL2 SP1。NIM 客户端定义显示 nimsh 为连接协议。NIM 主机能够通过 nimsh 与 NIM 客户端通信。

root@nim1[/] # oslevel -s
7100-02-01-1245
root@nim1[/] # lsnim -l aix61
aix61:
   class          = machines
   type           = standalone
   connect   = nimsh
   platform       = chrp
   netboot_kernel = 64
   if1            = network1 aix61 0
   cable_type1    = N/A
   Cstate         = ready for a NIM operation
   prev_state     = ready for a NIM operation
   Mstate         = currently running
   cpuid          = 00C8E4245C00
   Cstate_result  = reset
root@nim1[/] # nim -o showlog aix61
BEGIN:Thu Mar 24 01:29:36 2011:032401293611
Command line is:
/usr/sbin/installp -u -e /var/adm/ras/nim.installp -b -f \
/tmp/.workdir.3014756.2686976_1/.genlib.installp.list.2686976
+-----------------------------------------------------------------------------+
                    Pre-deinstall Verification...
+-----------------------------------------------------------------------------+
done
…etc…
Installation Summary
--------------------
Name                        Level           Part        Event       Resul
-------------------------------------------------------------------------------
bos.sysmgt.nim.master       6.1.0.0         USR         DEINSTALL   SUCCESS
END:Thu Mar 24 01:29:49 2011:032401294911

rshd (shell) 守护程序在 NIM 客户端上被禁用。根用户的主目录(/)中没有 .rhosts 文件,shell 服务在 /etc/inetd.conf 中被注释掉。这将阻止 NIM 主机通过 rsh 与 NIM 客户端建立连接。

root@aix61[/] # ls -ltr .rhosts
ls: 0653-341 The file .rhosts does not exist.
root@aix61[/] # grep rshd /etc/inetd.conf
#shell  stream  tcp6    nowait  root    /usr/sbin/rshd  rshd
root@nim1[/] # rsh aix61 date
aix61: A remote host refused an attempted connect operation.

我利用 nimadm 将 NIM 客户端从 AIX 6.1 TL8 SP1 迁移到 AIX 7.1 TL2 SP1,如下所示。

root@nim1[/] # nimadm -j nimvg -c aix61 -s aix71spot -l aix71 -d
hdisk1 -Y
Initializing the NIM master.
Initializing NIM client aix61.
Verifying alt_disk_migration eligibility.
Initializing log: /var/adm/ras/alt_mig/aix61_alt_mig.log
Starting Alternate Disk Migration.
+-----------------------------------------------------------------------------+
Executing nimadm phase 1.
+-----------------------------------------------------------------------------+
Cloning altinst_rootvg on client, Phase 1.
Client alt_disk_install command: alt_disk_copy -j -M 7.1 -P1 -d "hdisk1"
Calling mkszfile to create new /image.data file.
Checking disk sizes.
LOGICAL_VOLUME= hd11admin
FS_LV= /dev/hd11admin
Creating cloned rootvg volume group and associated logical volumes.
...etc...
Generating a list of files
for backup and restore into the alternate file system...
Phase 1 complete.
+-----------------------------------------------------------------------------+
Executing nimadm phase 2.
+-----------------------------------------------------------------------------+
Creating nimadm cache file systems on volume group nimvg.
Checking for initial required migration space.
Creating cache file system /aix61_alt/alt_inst
...etc...
+-----------------------------------------------------------------------------+
Executing nimadm phase 3.
+-----------------------------------------------------------------------------+
Syncing client data to cache ...
+-----------------------------------------------------------------------------+
Executing nimadm phase 4.
+-----------------------------------------------------------------------------+
nimadm: There is no user customization script specified for this phase.
+-----------------------------------------------------------------------------+
Executing nimadm phase 5.
+-----------------------------------------------------------------------------+
Saving system configuration files.
Checking for initial required migration space.
Setting up for base operating system restore.
/aix61_alt/alt_inst
Restoring base operating system.
Merging system configuration files.
...etc...
+-----------------------------------------------------------------------------+
Executing nimadm phase 6.
+-----------------------------------------------------------------------------+
Installing and migrating software.
Updating install utilities.
+-----------------------------------------------------------------------------+
Pre-installation Verification...
+-----------------------------------------------------------------------------+
Verifying selections...done
Verifying requisites...done
Results...
...etc...
install_all_updates: Checking for recommended maintenance level 7100-02.
install_all_updates: Executing /usr/bin/oslevel -rf, Result = 7100-02
install_all_updates: Verification completed.
install_all_updates: Log file is /var/adm/ras/install_all_updates.log
install_all_updates: Result = SUCCESS
Known Recommended Maintenance Levels
------------------------------------
Restoring device ODM database.
+-----------------------------------------------------------------------------+
Executing nimadm phase 7.
+-----------------------------------------------------------------------------+
nimadm: There is no user customization script specified for this phase.
+-----------------------------------------------------------------------------+
Executing nimadm phase 8.
+-----------------------------------------------------------------------------+
Creating client boot image.
bosboot: Boot image is 53248 512 byte blocks.
Writing boot image to client's alternate boot disk hdisk1.
+-----------------------------------------------------------------------------+
Executing nimadm phase 9.
+-----------------------------------------------------------------------------+
Adjusting client file system sizes ...
Adjusting size for /
...etc...
+-----------------------------------------------------------------------------+
Executing nimadm phase 10.
+-----------------------------------------------------------------------------+
Unmounting client mounts on the NIM master.
forced unmount of /aix61_alt/alt_inst/var
...etc...
Removing cache file system /aix61_alt/alt_inst/var
+-----------------------------------------------------------------------------+
Executing nimadm phase 11.
+-----------------------------------------------------------------------------+
Cloning altinst_rootvg on client, Phase 3.
Client alt_disk_install command: alt_disk_copy -j -M 7.1 -P3 -d "hdisk1"
## Phase 3 ###################
Verifying altinst_rootvg...
Modifying ODM on cloned disk.
forced unmount of /alt_inst/var
...etc...
Bootlist is set to the boot disk: hdisk1 blv=hd5
+-----------------------------------------------------------------------------+
Executing nimadm phase 12.
+-----------------------------------------------------------------------------+
Cleaning up alt_disk_migration on the NIM master.
Cleaning up alt_disk_migration on client aix61.

完成 nimadm 操作后,我们在 alternaterootvg 磁盘上重启 NIM 客户端。客户端重启并按预期运行 AIX 7.1 TL2 SP1。

root@aix61[/] # oslevel -s
6100-08-01-1245
root@aix61[/] # lspv
hdisk0       00c8e424e56b6006    rootvg      active
hdisk1                00f6050a2cd79ef8               altinst_rootvg
root@aix61[/] # shutdown -Fr
root@aix61[/] # lspv
hdisk0       00c8e424e56b6006      old_rootvg
hdisk1                 00f6050a2cd79ef8                    rootvg             active

root@aix61[/] # oslevel -s
  7100-02-01-1245

总的来说,这与其他任何 nimadm 操作没有什么区别。惟一需要注意的是您是否安装了正确的 AIX 标准(以及必要的临时补丁),以及 NIM 主机能否通过 nimsh 与 NIM 客户端进行通信。

在 NIM 主机上,nimadm 日志文件的位置没有改变,在需要对迁移进行故障检查时可以引用它。在 NIM 客户端上,可以在 /var/adm/ras/nimsh. 日志文件中查找 NIM 客户端和主机之间所有 nimsh 通信的审计跟踪。例如:

root@aix61[/] # tail –f /var/adm/ras/nimsh.log
Mon Aug 26 23:50:25 2013	success: we got 1st write query is 0
Mon Aug 26 23:50:25 2013	success: we got 2nd write local id is 00C8E4244C00
Mon Aug 26 23:50:25 2013	success: we got 3rd write remote id is 00F604884C00
Mon Aug 26 23:50:25 2013	success: we got 4th write command is cd /alt_inst/var && 
/usr/sbin/restore -xqf /alt_inst/tmp/alt_mig.tmpbackup.6291574 > /dev/null || 
> /alt_inst/alt_disk_mig_rfail.6291574
Mon Aug 26 23:50:25 2013	passing OpenSSL setting of 0
Mon Aug 26 23:50:25 2013	authenticated client using standard host methods
Mon Aug 26 23:50:25 2013	sending ack to client
Mon Aug 26 23:50:25 2013	setting descriptors to include 2nd port
Mon Aug 26 23:50:25 2013	command to exec  __  cd /alt_inst/var &&
/usr/sbin/restore -xqf /alt_inst/tmp/alt_mig.tmpbackup.6291574 > /dev/null ||
> /alt_inst/alt_disk_mig_rfail.6291574
Mon Aug 26 23:50:26 2013	file descriptor is 5
Mon Aug 26 23:50:26 2013	file descriptor is : 5
Mon Aug 26 23:50:26 2013	family is : 24 (AF_INET6)
Mon Aug 26 23:50:26 2013	source port is : 1023
Mon Aug 26 23:50:26 2013	source addr is : ::ffff:172.29.154.111
Mon Aug 26 23:50:26 2013	source hostname is: nim1 (FQDN)
Mon Aug 26 23:50:26 2013	source hostname is: nim1 (node-only)
Mon Aug 26 23:50:26 2013	getting 2nd port

就我的测试而言,与 rsh 相比,使用 nimsh 使得整个迁移时间增加了大概 20 分钟。您的数据可能有所不同。

NIMSH+NIMADM

============

Start: Fri Aug 30 14:37 EET 2013

End: Fri Aug 30 15:47 EET 2013

1 hr 10 min

SHELL+NIMADM

============

Start: Sun Sep 1 20:01 EET 2013

Finish: Sun Sep 1 20:53 EET 2013

52 min

参考资料

学习

讨论

  • 加入 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
ArticleID=959409
ArticleTitle=结合使用 NIM 服务处理程序和 NIM Alternate Disk Migration 工具
publish-date=01062014