最后更新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故障,当然此过程非常漫长,而且需要一定的经验。
- 检查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)。
- 如果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
- 使用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
- 检查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"}
- 在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>
-------
- 检查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命令
- 增加trace,如果已有的trace文件太小(trace文件是循环使用的),无法记录足够的信息,可以增加trace文件的大小。
#stopsrc -s <RM resource name>
#startsrc -s <RM resource name> -e TR_SIZE=#######
依次更改每个需要增大trace文件的资源
- 更改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,可以保证足够安全。