IBM Support

解决 Telnet 连接不到 IBM i 操作系统分区的问题

Technical Blog Post


Abstract

解决 Telnet 连接不到 IBM i 操作系统分区的问题

Body

 

解决 Telnet 连接不到 IBM i 操作系统分区的问题

使用 Telnet 协议连接 IBM i操作系统分区出现连接问题时,可尝试使用 PCOM 登陆 HMC,进入 IBM i 分区,按照问题发生可能性从大到小的顺序,依次检查以下内容:

1. 绿屏显示的提示

如果绿屏正在显示启动菜单,表示IPL 模式已设置成手动启动(只能从HMC更改到这一属性),造成在绿屏里直接输入重启命令后久久不能连上系统,需要手动确认IPL后,才能真正重启。

如果绿屏正在显示系统错误参考码(SRC),表示虚拟分区系统崩溃过,或者被人以强制保存MSD的方式重启。系统会自动在IPL前尝试保存MSD。如果当时ASP空间不够,系统自动保存MSD不成功,会停在参考码菜单等待人工操作,这时需要删掉旧的MSD重新保存,或者不保存继续IPL。由于IPL还没有做,此时虚拟分区上的网络服务都没有启动。

2. 产品 SS1 和 TC1 安装正常

运行命令 GO LICPGM , 选择选项10,查看SS1 和 TC1是否安装,有没有处于Error状态。

运行命令 CHKPRDOPT 5770SS1 ,查看有没有返回SS1产品的错误,根据返回信息修复产品。

运行命令 CHKPRDOPT 5770TC1,查看有没有返回TC1产品的错误,根据返回信息修复产品。

3. Telnet Server 启动正常

如果 Telnet Server 没有启动,需要以下命令或在 i Navigator 等 IBM i 管理工具启动它,需要注意有没有错误信息。

STRTCPSVR *TELNET

如果是系统 IPL 后没有自动启动 Telnet Server,需要修改以下属性避免问题再次出现:

(1)检查 IPL 属性里是否设置了自动启动 TCP:

DSPIPLA

CHGIPLA 改属性'Start TCP/IP' 为'*YES'

(2)检查启动 TCP 时有没有设置自动启动 Telnet server:

CHGTELNA 改属性"Autostart server" 为 *YES

4. IP地址和网关正确

检查IP地址是否正确,并关联Ethernet line:

CFGTCP -> 1. Work with TCP/IP interfaces -> 5=Display -> Line description

检查网关是否正确:

CFGTCP -> 2. Work with TCP/IP routes

检查域名是否正确:

使用命令nslookup检查主机名和IP是否正确,防止使用错误的连接信息。 

5. Ethernet Line / Controller / Device 状态正常

检查 TCP 配置里的 Ethernet line 的状态是不是“Active”:

WRKCFGSTS CFGTYPE(*LIN)

 图像 
 

如果状态不是“Active”,除了寻找各种Log错误信息外,可尝试如下命令,还不能恢复“Active”状态就需要检查网线没有插好。

EDNTCP

 WRKCFGSTS CFGTYPE(*LIN)

  Vary off Ethernet Line

Vary on Ethernet Line

  STRTCP

检查 Ethernet line 是否关联了正确的网卡(命名如CMN04):

WRKCFGSTS CFGTYPE(*LIN) -> Ethernet line 8=Work with description -> 5=Display -> Resource name

检查 Ethernet line 管理的 Network controller (*CTL)和 TCP device(*DEV):

(1)当 Network controller 不处于“Active”状态时,系统将无法创建 TCP device。

WRKCTLD - > F14

(2)用户对 Network Controler 和 TCP Device 对象有操作的权限一般为“*CHANGE”, 如果为“*EXCLUDE”,也会造成 Telnet 无法连接。

检查Ethernet line 关联的网卡是否是可用的网卡资源:

WRKHDWRSC *CMN -> 所有被描述为”Ethernet Port“的资源都是可用的网卡 -> 5=Work with configuration descriptions  

6. 网卡正常

检查网卡是否关联了正确的描述

WRKHDWRSC *CMN -> 选择网卡资源 -> 5=Work with configuration descriptions -> Configuration Description不为 ”*NONE“

-> 5=Work with description -> Line Description

用以下命令查看网卡资源(命名如CMN04)相关的硬件问题:

WRKPRB

STRSST -> 1. Start a service tool -> 1. Product activity log

7. CPU和ASP的使用率正常

CPU过忙时可能延迟任务运行,ASP用到99%可能造成新的任务分不到资源而运行不了。

WRKSYSSTS

8. 相关Job的Log和状态正常

查看Job Log,寻找错误信息.

WRKJOB [Job Name] -> 4. Work with spooled files / 10. Display job log, if active, on job queue, or pending

检查Job的状态,Job运行后的状态应该是OUTQ ,如果状态一直是 JOBQ,表示这个Job在Job queue中一直没有运行,需要进一步检查Job queue的状态。

WRKJOB -> 1. Display job status attributes

以下是和Telnet相关的Job:

QTCPCTL - TCP的主要系统任务

QTCPWRK - 随着TCP的启动和关闭而开始和停止的任务

QTVDEVICE - 设备管理任务,运行在QSYSWRK子系统中,启动后将运行到子系统被关闭为止,由系统决定用户需要多少这样的任务。(Job description : QTGSTELN)

QTVTELNET - Telnet服务器任务,也运行在QSYSWRK子系统中,随telnet服务器的开关而开关,通常只有一个这样的任务。(Job description : QTGSTELN)

QSTRTCP - 只有在使用IPL的配置属性启动TCP时,运行此任务。(Job description :QTOCSTRTCP)

QTCPSTSVRS - 负责启动 TCP Application Servers。(Job description :QTOCTCPIP)

QSTRUPJD - 为了用户从系统的启动程序来启动TCP而定义的任务。从它的JOB LOG中可以看出用户是否因权限不够而不能启动像QINTER这样的子系统,造成连接问题。 

9. 相关Job Queue

QSYSNOMAX job queue 负责初始化以下 Job : QTVDEVICE,QTVTELNET,QSTRTCP,QTCPSTSVRS.

WRKJOB [JOB Name] -> 2. Display job definition attributes ->Job queue: QSYSNOMAX

检查Job Queue的状态:

WRKJOBQ QSYSNOMAX

正常状态应该是RLS/SBS (Released), 如果是HLD/SBS (Held)状态,那么所有在此Queue的Job都不会在系统中运行,需要使用命令RLSJOBQ 解除这一状态 。

查看最大允许运行的Job 数:

WRKSBS -> QSYSWRK 5=Display subsystem description -> 6. Job queue entries -> Max Active 正常为 “*NOMAX”(不限制)。

如果为1,表示同一时间只有一个Job能运行,对于多用户使用同一服务器分区的状况很容易出问题,需要使用以下命令修改:

CHGJOBQE SBSD(QSYSWRK) JOBQ(QSYSNOMAX) MAXACT(*NOMAX)

10. 相关Message queue 和 QHST

用以下命令寻找系统运行中的错误信息:

DSPMSG QTCP

DSPMSG QSYSOPR

DSPLOG

11. 相关Subsystem状态正常

查看分区是否在受限状态:

WRKSBS -> F11 -> Status -> 检查子系统QINTER, QSYSWRK,QCTL 状态是否是“RSTD”。

正常状态分区的子系统如下图所示:

图像 

如果在受限状态,需要关闭子系统,然后重新启动控制子系统QCTL,它将调用IPL启动程序,从而默认启动TCP的接口和用户交互子系统QINTER:

ENDSBS SBS(*ALL) OPTION(*IMMED)

WRKSBS' -> F11 -> 检查上条命令执行结果:子系统只剩QCTL,并且状态为“RSTD”

STRSBS QCTL -> 启动系统正常运行时需要的所有子系统:

检查QCTL子系统是否自动启动 Job QSTRUPJD:

DSPSBSD QCTL -> Option 3 Display Autostart Job Entries -> QSTRUPJD job  

12. 使用 NETSTAT 命令检查

NETSTAT -> 命令执行后显示"TCP/IP services currently unavailable.",表示TCP stack无效,可能TCP没有启动,可尝试使用命令STRTCP。

NETSTAT -> 10 Display TCP/IP stack sates -> 状态是Active 表示TCP stack有效,那么可去QTCPWRK job log 和 QSYSOPR message queue 里找错误消息。

NETSTAT -> 1. Work with IPv4 interface status 查看你所用的 TCP/IP interfaces的状态是不是“Active”,如果不是就可能引起连接问题.

NETSTAT -> 3. Work with IPv4 Connection Status -> 从你的IP地址可以查找Telnet会话相关的任务.

13. System Value QAUTOVRT足够大

操作系统会根据输入的 Telnet 请求,自动分配一个虚拟显示设备,这由系统值 QAUTOVRT 管理。

系统刚安装好时默认 QAUTOVRT 为0,,会限制 telnet 连接,通过 Telnet 连接 IBM i 时不能显示登陆界面。

需要将它设成比可能发生的同时 telnet 连接数大得多的数值,也可设成 *NOMAX ,以使系统能够根据需要创建尽可能多的虚拟显示设备。

14. Sytem i 没有限制分区的通讯性能

如果Sytem i 的属性值5250 Application Capable 为 "False",所有分区的交互连接性能都会受到影响:

HMC web page -> Server -> Properties -> Capabilities -> 5250 Application Capable

15. 保存VLOG给专家分析

检查有没有Function Check (0200 major code)和Sourc/Sink (0700 major code) 这两种VOLG, 并且其内容有没有包含以下任务,如果有,可联系合适的developer分析。

(1)TCP 相关的任务

(2)通讯相关的slic任务,如 IOCM*

(3)流相关的slic任务,如 SK-ASC*

(4)IP路由相关的slic任务,如 IPRTR*. 

16. 保存Trace给专家分析

Telnet Trace

(1)开始 TRCTCPAPP APP(*TELNET) SET(*ON) MAXSTG(*APP)

(2)运行出错命令

(3)结束 TRCTCPAPP APP(*TELNET) SET(*OFF)

(4)查看 WRKSPLF

Communications Trace (以PCAP的格式抓包)

(1)开始 STRCMNTRC CFGOBJ(ETHLINE) CFGTYPE(*LIN) MAXSTG(2M) USRDTA(*MAX)

(2)运行出错命令

(3)结束 ENDCMNTRC CFGOBJ(ETHLINE) CFGTYPE(*LIN)

(4)查看 WRKTRC

TCP/IP Configuration Trace

(1)开始 STRTRC SSNID(*GEN) JOBTRCTYPE(*TRCTYPE) TRCTYPE((*TCPIPCFG *VERBOSE))

(2)运行出错命令

(3)结束 ENDTRC SSNID(*PRV) PRTTRC(*YES)

(4)查看 WRKSPLF

17. 最后的方法:重启

在急用系统的情况下,直接重启有可能修复问题,再从相关 Message queue 和 Job Log 中寻找出错的线索。

如果从 HMC 仍然无法进入 IBM i,需从 HMC 网页更改 IBM i 系统启动属性为 B Manual 模式,先在 DST 菜单查看数据,再执行IPL。

作者: Quan Xi

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":""}]

UID

ibm11145536