2.3.6 CSM、RMC和RSCT管理系统

最后更新2021/07/14

这是一组逻辑组件,由几种软件组合在一起,实现小型机、分区、HMC之间通信和控制,CSM、RMC和RSCT互相交织在一起,互相调用。作者作为IBM和Power系统及AIX的Fans通常会接受一切IBM的新技术,对其优点大加颂扬,对其缺点尽可能地辩护,可是IBM经常时不时地弄出些自以为很美,用户使用起来要吐的古怪东西。CSM、RMC和RSCT就是最著名的几例,如果要追溯历史上其他类似的产品,能超越这三者的只有PSSP,这是IBM SP小型机(也就是和卡斯帕罗夫下国际象棋的那种结构的小型机)的管理软件。在此我能为IBM进行辩护的唯一论点是IBM超越了时代,没有想到她的用户不都是数学家。

RSCT、RMC、CSM三者在当前AIX虚拟化环境中越来越重要,很多分区动态操作动作都是由这三者结合来实现的。RSCT用于建立HMC与分区之间的通信链路;RMC则通过RSCT控制分区资源的识别,进而实现动态资源调整(Dlpar功能);CSM则与HMC操纵分区安装和重启动过程相关,属于NIM网络安装的辅助功能。

CSM、RSCT与AIX补丁之间有一定的对应关系要求,通常AIX的某个版本及补丁,包含了或者必须要对应版本的RSCT、CSM。CSM、RSCT可安装的版本可以从AIX的安装盘中找到,而补丁则需要从IBM网站下载。另外HACMP/Power-HA的光盘上也有可安装的RSCT,但版本不一定匹配。

RSCT本质上是群集管理软件,目的是为了管理群集内各节点,实现单点管理,但RSCT本身并不具有管理功能,只能作为管理的基础,提供节点间通信功能。这些在同一管理域内的节点被称为peer,管理域被称为peer domain。RSCT中重要的管理功能来自Configuration Resource Manager即CRM。当安装AIX或者单独安装RSCT时,peer domain被自动创建,同时RSCT还会调用preprpnode命令,此命令设置可信的主机、IP地址。RSCT另外也初始化了一个与ACL有关的控制文件: /var/ct/cfg/ctrmc.acls。此配置允许其它节点访问所有在同一个peer domain中节点的资源。

由于RSCT通过peer domain授权支持其它节点访问本身信息,因此最常见的错误就是“Permission denied errors”,/var/ct/cfg/ct_has.thl文件中保存着授权主机列表,列表虽然不是加密保存,但也不是可显示的明文。另外两个文件/var/ct/cfg/ctrmc.acls和/var/ct/cfg/ctsec.nodeinfo中也有额外的一些信息,都是明文。他们都与授权有关,thl文件中保存节点信息,即包括自身,又包括管理者,HMC被设置为省缺的管理节点,安装AIX后系统会自动将HMC相关授权保存在配置文件中。通过命令/usr/sbin/rsct/bin/ctsthl -l可以显示详细内容;acls文件中保存授权的操作。

如果以上文件中一个或者多个出现错误,则会导致RSCT管理功能失败,包括HMC无法进行动态DLpar操作。/usr/sbin/rsct/install/bin/recfgct可以重新初始化授权文件。由于很多IBM的系统都基于RSCT的配置,所以重新初始化RSCT会影响到这些软件,例如GPFS、HACMP等等,所以在执行类似操作时,最好将GPFS/PowerHA/HACMP等软件停下来,以避免潜在的宕机风险。
如果执行了以上重新配置的过程之后,依然不能解决问题,比较简单的修复方案是删掉RMC, RSCT等等程序集,再重新安装。但是如果系统非常重要,不能任意删除程序集重新安装,下面的过程可以帮助你一点一点检查和修复RMC故障,当然此过程非常漫长,而且需要一定的经验。

  1. 检查RMC守护进程状态。执行lssrc命令,查看输出。
# lssrc -s ctrmc
Subsystem         Group            PID     Status
 ctrmc            rsct             2388    active

如果守护进程的状态是inoperative,则需要更进一步检查其为何没有active,因为省缺AIX启动会自动执行ctrmc进程。查看errpt错误报告有时会发现一些问题。同时,在syslog文件中(/var/log/messages)也会记录一些有用的信息(查找RMCD关键字)。

如果ctrmc没有active,可以通过命令rmcctrl重新启动,然后再次检查状态及错误记录:

#/usr/sbin/rsct/bin/rmcctrl -s

更进一步,可以直接执行/usr/sbin/rsct/bin/rmcd,任何错误提示都会直接打印到屏幕上。(rmcctrl -s也是执行rmcd以启动RMC)。

  1. 如果rmcd不能正常启动,可以查看netstat -a 或-an及-A。rmcd需要监听UDP/TCP协议的657端口,如果此端口被占用,则rmcd不能启动,可以使用lsof之类的命令查看657端口的占用者。而rmcd正常启动后,657端口状态也应当是LISTEN。
#/usr/sbin/rsct/bin # netstat -an | more
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address  Foreign Address        (state)
tcp        0      0  *.21                   *.*                    LISTEN
tcp4       0      0  *.22                   *.*                    LISTEN
tcp        0      0  *.23                   *.*                    LISTEN
tcp4       0      0  *.111                  *.*                    LISTEN
tcp4       0      0  *.199                  *.*                    LISTEN
tcp        0      0  *.657                  *.*                    LISTEN
  1. 使用rmcdomainstatus查看rmc管理域信息。应当可以看到HMC的(IP)信息及其状态(节点信息)。没有任何提示或者其他提示信息则表示RMC管理域中存在问题。
#/usr/sbin/rsct/bin/rmcdomainstatus -s ctrmc
Management Domain Status: Management Control Points
  I A  0xe81cea1a25060a2c  0001  10.10.160.72
  I A  0xb7b0064a1b1b75e9  0002  10.10.160.73

在一个RMC管理域中有多种类型节点信息:

  • S 表示自身节点信息
  • I 表示提示信息
  • A 表示active
  1. 检查RMC管理域相关的配置和运行log。
  • /etc/hosts中IP地址和域名对应。HMC的域名和IP可以不存在,但如果在/etc/hosts中有记录,则必须保证其正确。
  • 删除以下log
/var/ct/IW/log/mc/trace (ctrmc log)
/var/ct/IW/log/mc/IBM.CSMAgentRM/trace (CSMAgentRM log)
/var/ct/IW/log/mc/IBM.DMRSM/trace (DRM log)
  • 执行以下命令重新启动rmc之后,再次查看log:
#rmcctrl -z on both HMC and LPAR (在HMC上执行需要先申请pe password然后su到root)
#rmcctrl -A on HMC first
#rmcctrl -A on LPAR second
  • 等待5分钟后查看log,使用rpttr -o dtic trace命令查看以上log
  • 使用-l参数,依次查看lsrsrc各项,例如IBM.MCP
#/var/ct/IW/log/mc/lsrsrc IBM.MCP
Resource Persistent Attributes for IBM.MCP
resource 1:
        MNName           = "192.168.42.164"
        NodeID           = 16725500514158381612
        KeyToken         = "10.10.160.72"
        IPAddresses= {"10.10.160.72","172.17.0.2","fe80::e61f:13ff:fe2c:349c","fe80::e61f:13ff:fe2c:349e"}
        ActivePeerDomain = ""
        NodeNameList     = {"server5"}
resource 2:
        MNName           = "192.168.42.164"
        NodeID           = 13236086220194018793
        KeyToken         = "10.10.160.73"
        IPAddresses= {"10.10.160.73","172.16.0.1","fe80::e61f:13ff:fe2c:31b8","fe80::e61f:13ff:fe2c:31ba"}
        ActivePeerDomain = ""
        NodeNameList     = {"server5"}
  1. 在HMC上使用debug模式执行lspartition
lspartition -dlpar -debug
     <#0> Partition:<002, rp02.mytest.com, 10.114.69.66>
          Active:<1>, OS:<AIX, 5.2>, DCaps:<0xf>, CmdCaps:<0x1, 0x1>
          -------
     <#1> Partition:<004, rp04.mytest.com, 10.114.69.68>
          Active:<1>, OS:<AIX, 5.2>, DCaps:<0xf>, CmdCaps:<0x1, 0x1>
          -------
  1. 检查DLPAR守护进程(HMC上执行需要先申请pe password再su到root)
  • IBM.LparCmdRM用途:
    a) 在HMC上运行
    b) 完成DLPAR操作
  • IBM.DRM
    a) 在分区上运行
    b) 执行DLPAR命令
    c) 当HMC通过LparCmdRM发送过来命令之后执行
              HMC                               LPARs
1) DMSRM创建加密密钥并推送给LPARs   ------->    CSMAgentRM
                 <----------  返回记录信息 <-----------|
2) LparCmdRM  -----------> 发送LparCmd_cb  ------>DRM
                                                  |
                                             执行DLPAR命令
  1. 增加trace,如果已有的trace文件太小(trace文件是循环使用的),无法记录足够的信息,可以增加trace文件的大小。
#stopsrc -s <RM resource name>
#startsrc -s <RM resource name> -e TR_SIZE=#######

依次更改每个需要增大trace文件的资源

  1. 更改trace项目
  • ctcasd(以下更改将trace的详细程度从1升级到8,最高为9):
vi /usr/sbin/rsct/cfg/ctcasd.cfg
找到“TRACELEVELS= _SEC:Info=1,_SEC:Errors=1”一行,将其更改为:
“TRACELEVELS= _SEC:Info=8,_SEC:Errors=8”
stopsrc -s ctcasd
startsrc -s ctcasd
  • RMC守护进程跟踪
/usr/sbin/rsct/bin/rmctrace -s ctrmc -a all_but_msgs=2
#除了msgs之外的所有项目跟踪级别为2

/usr/sbin/rsct/bin/rmctrace -s ctrmc -a all=2
#设置所有项目跟踪级别为2

/usr/sbin/rsct/bin/rmctrace -s ctrmc -a all=0
#设置所有项目跟踪级别为0,即禁止任何提示信息。由于有一些信息是不受级别控制的,因此即使设置0,系统依然会显示出一些信息。

chssys -s ctrmc -a "-d all=2"
#跟踪rmcd启动
  • 对RMC GS(Group Service)跟踪
vi /usr/sbin/rsct/bin/rmcd_start
在“exec /usr/sbin/rsct/bin/rmcd $ROPT $MOPT $NOPT $@”一行之前增加:
export CT_TR_TRACE_LEVELS="_GSA:Info=2"
  • 对RMC 命令跟踪
#开启:
/usr/sbin/rsct/bin/rmctrace -s ctrmc -a prm=100
#Trace文件在/var/ct/IW/log/mc目录下

#禁止
/usr/sbin/rsct/bin/rmctrace -s ctrmc -a prm=0

#格式化输出。Trace文件所在位置/var/ct/<peer domain or IW>/log/mc(每个命令都有自己的trace文件。peer domain是一组数字,每个AIX实例中应当不同)
/usr/bin/rpttr -o dtic “trace文件名” 
  • RMC API。由于RMC被广泛地用在HMC分区管理、HACMP节点管理等许多地方都会调用RMC API,如果想要增加RMC trace的内容,可以使用如下命令:
export CT_TR_FILENAME=/tmp/cmd.trace
export CT_TR_SIZE=0x100000
#CT_TR_SIZE用于控制trace文件大小,本例中是1MB
export CT_TR_TRACE_LEVELS="_MCA:*=8"
# *代表所有项目
#执行lsrsrc或者其它相关命令,查看/tmp/cmd.trace文件是否被创建
#执行其他需要跟踪的RMC命令或者动作。以下2条命令禁止trace
unset CT_TR_FILENAME
unset CT_TR_TRACE_LEVEL

两个常见的RSCT问题是:比较旧的AIX在用mksysb安装系统时没有很好地重新初始化RSCT等唯一节点标识,导致两个用同一mksysb安装的系统RSCT ID冲突,建议先把AIX升级到比较新的TL,删掉RSCT再重新安装,或者删掉node ID再重新配置。彻底删掉Node ID再重新配置的过程如下:

#stopsrc -g rsct_rm
#stopsrc -g rsct
#/usr/bin/odmdelete -o CuAt -q 'attribute=node_uuid'
#/usr/sbin/rsct/bin/mknodeid -f
#/usr/sbin/rsct/install/bin/recfgct
#通常最后命令执行完后,rsct等进程会自动重新启动,如果没有重新启动,请参考本节前面的内容手工

另一个问题是在HMC和分区之间设置了防火墙,建议用单独的管理网连接HMC和分区。HMC和分区之间的连接可以通过独立的VLAN完成,不需要路由到其他VLAN,可以保证足够安全。

上一篇:英语修饰符词序


下一篇:[转帖]Testing a Chinese x86 CPU: A Deep Dive into Zen-based Hygon Dhyana Processors