问题摘要: 如果 ldm stop 在 SUNWscxvm.stop 中超时,则逻辑域 (logical domain, LDom) 保持绑定并阻止群集资源组完全关闭域。该行为会阻止资源组成功故障转移。此外,当前停止 LDom 时未考虑 STOP TIMEOUT 值,LDom 会在 60 秒后自动超时。
您可能会遇到以下错误消息之一:
[ID 885590 daemon.notice] Domain domain_name has been forcefully terminated. [ID 567783 daemon.notice] domain stop result code : 0 - ldom_name stop timed out. The domain might still be in the process of shutting down. [ID 567783 daemon.notice] domain stop result code : 0 - Either let it continue, or specify -f to force it to stop. [ID 567783 daemon.notice] domain stop result code : 0 - LDom ldom_name cannot be unbound because it is stopping [ID 567783 daemon.notice] domain stop result code : 0 - LDom ldom_name stopped
运行 ldm list 时,您会看到 LDom 处于 bound 状态。
# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 16 15872M 0.1% 0.1% 28m ldom-1 active -n---- 5000 8 8G 0.0% 0.0% 28m ldom-2 bound ------ 5001 112 112G
在 LDom 停止超时消息之后发出 clresourcegroup online 命令时,该命令会挂起,因为已强制终止该命令。
解决方法: 该解决方法仅对至少具有 Logical Domains Manager 3.1 的节点有效。修改 LDom 超时值:
在所有节点上编辑 /opt/SUNWscxvm/bin/functions 文件,方法是将:
${HATIMERUN} -t ${MAX_STOP_TIMEOUT} -k KILL ${LDM} stop-domain ${DOMAIN} >> $LOGFILE 2&1
替换为:
LDOM_TIMEOUT=$((MAX_STOP_TIMEOUT*80/100)) ${HATIMERUN} -t ${MAX_STOP_TIMEOUT} -k KILL ${LDM} stop-domain -t ${LDOM_TIMEOUT} ${DOMAIN} >> $LOGFILE 2&1
现在 ldm stop timeout 不是 60 秒,而是 LDOM_TIMEOUT 秒。如果 LDom 不在 LDOM_TIMEOUT 秒内关闭,则首先发出 ldm stop-domain 命令。然后发出 ldom stop-domain -q。该命令自动强制停止 LDom。为了使 ldom stop-domain -q 有时间执行,已将 LDOM_TIMEOUT 设置为 MAX_STOP_TIMEOUT 的 80%。