AIX疑难问题分析过程 下载本文

1.1 1 与inode相关的几个命令

环境:(产品AIX,平台pSeries)

问题描述: 本文介绍了与inode相关的几个命令,及其使用方法. 解答:

inode是AIX操作系统中的一种数据结构,它包含了与文件系统中各个文件相关的 一些重要信息,例如: > inode 编号 > 文件所在设备 > 属主的UID > 属主的GID > 文件的大小 > 文件的链接数目 > 最近一次修改的时间 > 最近一次访问的时间 > 最近一次更改的时间

下面介绍AIX中与inode相关的几个命令: 1. df命令 - 监视 inode的使用

当在AIX中创建一个文件系统时,将为 inode表分配一定的磁盘空间.每次在文件系 统中创建一个文件时,都会为该文件分配一个 inode.在df命令的输出中,可以查看 各个文件系统中已使用的 inode的数目,以及文件系统中总体使用情况百分比: # df -m | head -6

Filesystem MB blocks Free %Used Iused %Iused Mounted on /dev/hd4 288.00 77.17 74% 12980 37% /

/dev/hd2 2528.00 109.54 96% 53299 58% /usr /dev/hd9var 80.00 6.64 92% 4764 70% /var /dev/hd3 464.00 365.88 22% 512 1% /tmp /dev/hd1 16.00 15.50 4% 55 2% /home

如果由于某种原因,某个文件系统 inode的使用率达到百分之百,那么将无法在该 文件系统中创建更多的文件、设备、目录等等。对于这种情况, 可以通过 chfs命令 为该文件系统添加更多的空间. 2. istat命令 - 查看 inode信息

# istat /etc/hosts

Inode 568 on device 10/4 File Protection: rw-rw-r--

Owner: 0(root) Group: 0(system) Link count: 1 Length 2204 bytes

Last updated: Thu Mar 19 11:27:35 GMT+08:00 2009 Last modified: Thu Mar 19 11:27:35 GMT+08:00 2009 Last accessed: Mon Mar 30 11:36:27 GMT+08:00 2009 3. ls命令 - 查看目录里各文件的inode编号 例如查看/etc目录:

# ls -ils /etc | grep host

567 4 -rw-r----- 1 root system 1964 Nov 05 18:29 hostmibd.conf 568 4 -rw-rw-r-- 1 root system 2204 Mar 19 11:27 hosts 667 4 -rw-r--r-- 1 root system 2134 Jan 13 10:15 hosts.bak 569 4 -rw-r--r-- 1 root system 2048 Nov 05 18:29 hosts.equiv 570 4 -rw-rw-r-- 1 root system 1894 Nov 05 18:29 hosts.lpd 1309 4 -rw-r--r-- 1 root system 2493 Jan 13 11:25 hosts.test 869 4 -rw-r--r-- 1 root system 1227 Nov 05 18:29 -6000

第一列即为inode编号。 4. find命令 - 定位文件: 例如

(1) 查找/etc下 inode为568的文件: # find /etc -xdev -inum 568 /etc/hosts

(2) 用于删除文件名中包含特殊字符的文件:

先通过上面的ls命令,确认要删除的文件的inode编号, 例如要删除上例中的

869 4 -rw-r--r-- 1 root system 1227 Nov 05 18:29 -6000

使用find命令和rm命令删除: # find . -inum 869 -exec rm {} \\;

1.2 2 如何确认使用端口的进程

环境:(产品AIX,平台pSeries)

问题描述: 本文介绍了如何确认正在使用某端口的进程. 解答:

应用程序有时会因为要使用的端口被其他程序使用,而无法正常启动,这时我们需要查看正在使用此端口的进程信息. 下面介绍了两个方法: 1. lsof方法: > 参考文档: http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1811994C16000

> 下载lsof: ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/lsof (下载对相应版本的)

> # lsof -i | grep

-> 从结果中可以得到PID -> # ps -ef | grep PID -> 确定进程 2. netstat/rmsock方法: > 以端口25举例:

(1) # netstat -Aan | grep 25

获得25号端口的PCB(protocol control block),且查看协议为tcp. (输出信息中第一列即是PCB)

例如:

# netstat -Aan |grep 25

f100070000d373b0 tcp4 0 0 *.25 *.* LISTEN f100070000d25600 udp 0 0 *.* *.* f100070000d25400 udp 0 0 *.* *.* f100070000d25000 udp 0 0 *.* *.*

f100070000d25c00 udp 0 0 127.255.255.255.12 *.* f100070000d2d200 udp 0 0 10.10.10.255.123 *.* f100070000d25a00 udp4 0 0 *.514 *.* f100070000d25200 udp4 0 0 *.517 *.*

(2) 如果是tcp连接,那么# rmsock tcpcb 如果是udp连接,那么# rmsock inpcb

# rmsock f100070000d373b0 tcpcb

The socket 0xd37008 is being held by proccess 213096 (sendmail). 结果显示25号端口正在被sendmail进程使用,PID为213096.

1.3 3 如何删除在系统里显示为乱码的文件

环境:(产品,平台,机型,软件版本,等)AIX5L

问题描述:有时候客户会碰到这样的情况:用ls -l查看文件名为全乱码,尝试使用复制/粘贴文件名的方法,使用rm命令也没法成功删除。尝试更改语言环境和终端类型仍然显示乱码。 # ls -l

total 10635

-rw-r--r-- 1 root system 0 Aug 23 2008 -rw-r--r-- 1 root system 0 Aug 23 2008 -rw-r--r-- 1 root system 0 Aug 23 2008 -rw-r--r-- 1 root system 0 Aug 23 2008 -rw-r--r-- 1 root system 0 Aug 23 2008 -rw-r--r-- 1 root system 0 Aug 23 2008 -rw-r--r-- 1 root system 0 Aug 23 2008 # -rw-r--r-- 1 root system 0 Aug 23 2008 #

-rw-r--r-- 1 root system 0 Aug 23 2008 ^G^G -rw-r--r-- 1 root system 0 Aug 23 2008 ^G^G§^B^?¢^?^új^?o^B?1?^

-rw-r--r-- 1 root system 0 Aug 23 2008 # -rw-r--r-- 1 root system 0 Aug 23 2008 #^G -rw-r--r-- 1 root system 0 Aug 23 2008 . -rw-r--r-- 1 root system 0 Aug 23 2008 @

-rw-r--r-- 1 root system 0 Aug 23 2008 @^@^@^@^@^@ 解答:

1. 进入要删除的乱码文件所在的目录

2. 先用ls -il先查看一下要删除文件的inode号

3. find . inum #inode ------- ---- 其中#inode为步骤2中查到的文件,并且根据inode号确认此为要删除的文件

4. 然后执行find . -inum #inode -exec rm {} \\; 这样就可以成功删除了

Note: 要注意一定要在计划被删除的文件所在目录执行find . xxxx命令。如果执行了find / xxxx命令,进行删除的话,有可能会将/tmp, /var或者其他间接挂载在/之下的inode值相同的文件全都删除掉。

1.4 4 ftp登陆本地,所有用户都报错service not available, remote server has closed connection, login failed

环境:(产品,平台,机型,软件版本,等)AIX5307SP2 问题描述:

用户升级系统从5305CSP到5307SP2后,重启机器。使用所有用户ftp登陆本地都发现报错如下:

service not available, remote server has closed connection, login failed 解答:

1.检查errpt -a,发现有ftpd生成的coredump,收集coredump,收集系统信息,进行分析。 2.检查ftp服务,lssrc -t ftp

Service Command Description Status ftp /usr/sbin/ftpd ftpd -u 000 active

3.检查/etc/services文件,关于ftp的默认端口并没有被注释掉。 ftp 21/tcp # File Transfer [Control] ftp 21/udp # File Transfer [Control] 4.重启ftp服务,

#stopsrc -t ftp

0513-127 The ftp subserver was stopped successfully. #startsrc -t ftp

0513-124 The ftp subserver has been started. ftp本地,报错依旧。

5.检查ftpd产生的coredump,发现如下stack: see the stack for ftpd core: ADDITIONAL INFORMATION rightmost 8 free_y 460 free_comm 80 free_78_7 68 stanza_co 908 method_co 11C putuserat D90 ftp_unsuc 52C pass 4C0 yyparse 3E4 main 9F4 __start 9C

SYMPTOM CODE

PIDS/5765E6200 LVLS/520 PCSS/SPI2 FLDS/ftpd SIG/11 FLDS/rightmost VALU/8 FLDS/ftp_unsuc

IZ20480解决了该问题,需要将系统升级到5307SP4。 6.本地临时的解决方案:

/etc/security/lastlog文件格式已经损坏。 备份文件/etc/security/lastlog, 创建一个新的lastlog文件。 ftp 本地,成功。

1.5 5 邮件乱码的主要原因及解决方法 环境:(产品,平台,机型,软件版本,等)

AIX5L

问题描述: 邮件乱码的主要原因及解决方法 . 解决方法: 邮件乱码的主要原因及解决方法

邮件乱码的主要原因及解决方法

汉字邮件出现乱码的原因很多,主要的原因是Internet上的某些邮件主机不支持8位(非ASCII码格式)传输,以及因不同的邮件编码,不同设置的电子邮件收发软件,不同语种的操作系统等造成。

当你收到一封乱码的邮件时,应根据邮件内容中的关键字符,判别其编码方法。不同的乱码,在不同的平台上有不同的解决方法,因此解码前必须先看一下文件的内容,根据特征对文件可能的编码方式

(Uuencode、Base64 encode、QP-encode或其它编码方式)进行判断。 1.Uuencode“乱码”

Uuencode编码主要来自Unix系统环境的使用者,目前,使用者已经很少。这种软件内 部所用的算法为base64。其格式与Base64 encode格式非常相似,它们的差别仅仅在于“信头”部分的不同。

Uuencode“乱码”大体格式为:

begin 0600 index.gb MH;ZQOL2_PKS#O]3\ 在乱码前面含有“begin xxx”,后面紧接着编码之前原始文件的名称。接着是已经Uuencode编码的邮件的内容。在乱码内容后面,即最后一行为“end”。

如果你电脑上的的邮件收发软件不支持UU解码,那么你看到的就是这些Uuencode“乱码”。 解决Uuencode“乱码”的办法:

将Uuencode“乱码”邮件转寄到自己的邮箱中,再使用能够支持UU解码的电子邮件接收程序(如Eudora、OutLook Express等)来接收该邮件。 通过剪贴板将Uuencode“乱码”存入文本文件,改文件名后缀为UUE,然后使用Winzip解码。 将Uuencode“乱码”存入一个文件,然后在DOS下用uudecode.exe程序将文件解码。 将 Uuencode“乱码”存入一个文件,然后在Windows下用Wincode解码。 Wincode除支持UU编码外也支持MIME、Binhex等编码格式,应用范围颇为广泛。 2.Base64 encode“乱码”

Base64是MIME标准编码之一。Base64 encode编码方式是将3个字节(8位)用4个字节(6位)表示,由于编码后的内容是6位的,因此可以避免第8位被截掉。Base64 encode“乱

码”大体格式为:

MIME-Version:1.0 Content-Type:text/plain; charset=\ascii″ Content-Transfer-Encoding:base64 Status:R yrE68shis+o/IMTcsrvE3Ljmy9/L47YEzajRtrX-Y1re6zbYnu7Chow0LDQo=3d 在Base64编码邮件的乱码前一般有如下几部分“信头”:Content-Type(内容类型)、charset(字符集)及Content-Transfer-Encoding(内容传输编码方式)。 如果你的电子邮件接收程序不支持Base64解码,那么你看到的就是这些Base64 encode“乱码”。 解决Base64 encode“乱码”的办法:

将Base64 encode“乱码”邮件存成一个文本文件,改文件名后缀为.UUE,然后使用 Winzip 解码。 将Base64 encode“乱码”邮件存成一个文件,

将文件后缀改为.EML,由OutLook Express 打开,就可以自动解码。

3.QP-encode“乱码”

QP-encode(Quoted-Printable Content-Transfer-Encoding)是MIME标准编码之一。由于用这种格式表示的信息,其内容主要都是 ASCII字符集中可以打印的字符

,因此名称中含有printable。QP编码的方式,是将一个字节用两个16进制数值表示,然后在前面加“=”。QP-encode“乱码”大体格式为:=d2=bc=b3=b8=d5=db=c4=c4=bc=d2=b5=f6=b1=e5=c9=e7=b6=f8=b0

采用QP编码方式的邮件很容易进行判别,因为它的内容通常有很多等号“=”,因此不需要看“信头”也可以判断是否为QP编码。 如果你的电子邮件接收程序不支持QP解码, 那么你看到的就是这些QP-encode“乱码”。 解决QP-encode“乱码”的办法: 将QP-encode“乱码”邮件转寄到自己的邮箱中,然后用支持QP解码的电子邮件接收程序 (如Netscape mail、Eudora、OutLook Express、Becky等)来接收该邮件。 使用Winzip对Quoted-Printable解码。必须注意:

(1)在邮件信头中检查、添加这样两行:Mime-Version: 1.0Content-Transfer-Encoding: quoted-printable; (2)信头中间不要空行,信头和信体之间要有一个空行。这样形成的文件,改后缀名为UUE,即可双击启动Winzip得到解码。

4.HZ中文乱码

由于我们可能使用不同的电子邮件收发软件,因此,来往的邮件内容可能包含着看不懂的乱码,例如,如果看到下面这串乱码,你一定看不懂它的意思:HZ- ~{Q'Hm<~!\ 实际上这是一串“简体中文HZ”编码,如果使用Outlook Express发送邮件时,选用HZ编码,而邮件的接收者使用Eudora来阅读邮件,看到的就是这些乱码。正确的方法是,在撰写邮件窗口中,

选择“格式”菜单下的“语言”命令,并选中“简体中文(GB2312)”项,然后发送邮件。 这时,如果你使用Outlook Express,可以打开“查看”菜单,点击“语言”选项中的“简体中文(GB2312)”项,

或者点击工具栏上“语言”后面的向下箭头,选择“简体中文(GB2312)”功能项,屏幕出现一个对话框,单击“是”按钮,应用新的字符集。 如果你使用Eudora之类的软件,可以使用“南极星”之

类的软件,自动转换不同的汉字编码。如果还看不到的话,可将这些编码文本,拷贝到一个文本编辑器中。

5、“半个汉字”乱码 汉字的另一个问题是所谓的“半个汉字”乱码。如下面这串乱码:“把砑⒂萌砑⒙蛉砑暮冒槁隆薄* ” 由于很多英文编辑软件以字符为单位来处理文本,

汉字被删除一半后,剩余的部分会和相邻的汉字重新组合,使得文本面目全非。因此,除了在输入、删除的时候注意这种问题外,还要注意不要在英文字处理软件中轻易使用“字符替换”功能,

这往往会把一个汉字的后一个字符和相邻汉字的前一个字符当成一个汉字被替换掉。 对于“半个汉字”乱码,只要将“乱码”邮件存成一个文本文件,然后使用以字符为单位的编辑软件,

将“乱码”行的首字符删除,后面的部分就会和相邻的“乱码”重新组合成可识别的汉字。 如果上述方法不能奏效,那么只好告诉对方正确的发送方式,请对方重新发一份邮件给你。

1.6 6 如何收集java进程产生的coredump文件及相关数据, 发送到IBM做分析. 环境:(产品,平台,机型,软件版本,等) 产品: AIX5.3 or AIX6.1

平台: p5,pSeries, RS/6000 解答:

java进程在异常终止时会产生coredump, 进程异常终止的原因有很多, 如错误的编译代码, 错误的配置, 错误的内存访问等. 问题可能很复杂, 所以仅收集java进程的coredump文件, 对问题的分析可能是不够的.

为了加快对问题的确定和解决, 用户可以按照以下步骤对系统做设置, 并收集相关数据发送到IBM做分析. -------- 系统设置

-------- 1>

打开用户limit限制, 确保用户可以获得相关系统资源: # chuser fsize=-1 data=-1 core=-1 <应用用户名称> 2>

将系统fullcore模式打开, 以获得完整的core文件:

# chdev -l sys0 -a fullcore=true 3>

确认以下文件集已在系统安装, 可以使用\命令检查: bos.net.uucp bos.rte.control bos.rte.serv_aid 4>

禁用 Java 信号处理:

Java142及Java131版本设置以下的环境变量: export DISABLE_JAVADUMP=true export IBM_NOSIGHANDLER=true Java5版本使用以下的java选项:

-Xdump:system:none -Xdump:tool:exec=\%pid core.%Y%m%d.%H%M%S.dmp\

注意: 在执行完以上设置后, 需要用户重新登录系统使设置生效, 并重新启动应用程序.

-------- 收集数据

--------

完成以上设置, 在问题出现后, 请收集以下数据:

1>

# errpt -a > errpt.out # lslpp -lc > lslpp.out # instfix -i > instfix.out

# bootinfo -K > bootinfo.out # lsattr -El sys0 > lsattr.out # lsps -s > lsps.out

# tar -cf - *.out | compress -c > sysinfo.tar.Z 2>

使用snapcore命令收集java core文件

如果不确定core文件所在的位置,可以使用\-a | pg\并查找以LABEL: CORE_DUMP开头的, PROGRAM NAME为java的错误日志,

在错误日志中条目为CORE FILE NAME的部分是表示core文件的位置。 snapcore命令收集的core文件存放在/tmp/snapcore/snapcore.pax.Z. # snapcore 3>

将数据打包

# tar -cf xxx.yyy.zzz.tar sysinfo.tar.Z snapcore.pax.Z

注意: xxx.yyy.zzz为IBM问题编号, 可以通过拨打IBM 800技术支持热线获得.

-------------

上传数据到IBM

-------------

在将数据打包后, 上传到IBM ftp服务器, 由IBM工程师分析数据. 如果上传失败, 需要将文件重命名后, 重新上传 xxx.yyy.zzz.tar ---> xxx.yyy.zzz.1.tar

ftp testcase.boulder.ibm.com login: anonymous

password: user@host.com > cd /toibm/aix > bin

> put xxx.yyy.zzz.tar > quit

英文原文连接:

http://www.ibm.com/developerworks/aix/library/au-javaonaix_core.html

1.7 7 关于使用tail -f 命令无法用Ctrl+C 终止进程的解决方法

环境: aix 5.3-09

问题描述:用户发现当使用tail -f 来跟踪观察某些持续变化的文件时,当需要使用Ctrl+C退出的时候,系统就会hang住,此时只能用Ctrl+Z来退出,但是

这种方法无法终止进程,tail -f 的进程始终在后台运行,还需要通过ps 命令找出进程用kill -9 来杀掉进程 解答:

引起这种现象的原因是在 /etc/profile中存在trap \,但是/etc/profile文件的最后缺失trap 1 2 3。

trap \表示将signal 1,2,3的handler设置为空,效果是不响应signal 1,2,3,而Ctrl+C就是signal 3。

trap 1 2 3,表示取消trap \的声明。 通常情况下,这两条语句应该成对出现。

将/etc/profile文件的最后,增加语句trap 1 2 3,并且重新登陆,问题解决。

1.8 8 如何查看共享内存的详细信息

环境:(产品AIX,平台pSeries)

问题描述: 本文介绍了查看共享内存的详细使用情况的方法. 解答:

系统内存的使用情况是影响系统整体性能的关键因素. 当前的主流数据库或应用

等大型程序通常承担庞大的业务压力,这就需要大量的共享内存以确保良好的性能。 而我们通常会遇到内存使用率异常高,或者内存耗尽的情况, 此时可以借助于 下面的方法,检查共享内存的详细使用情况及相关进程的信息。 1.ipcs 命令用于查看系统中共享内存的信息.

\参数将列出所有与此共享内存块相关联的SID(内存段号). 举例如下:

# ipcs -cmbpS

IPC status from /dev/mem as of Wed Feb 25 11:06:01 BEIST 2009 T ID KEY MODE OWNER GROUP CREATOR CGROUP SEGSZ CPID LPID Shared Memory:

m 512753697 0xffffffff --rw------- dwinst db2grp dwinst db2grp 1249165312 2773180 3498238 SID :

0x1f3b3e 0x124053 0x74326 0xa1d0b 0x152454

与这块共享内存相关联的段为: 0x1f3b3e 0x124053 0x74326 0xa1d0b 0x152454 2.svmon命令可以查看,当前使用这些段的进程:

# svmon -Sl

Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual

1f3b3e 78000003 work default shmat/mmap s 65284 0 0 65284 pid(s)=3948800, 3924330, 3801480, 3707204, 3547570, 3498298, pid(s)=3465548, 3375538, 3019026, 2982196, 2691464, 2584950,

pid(s)=2412968, 2261334, 2220406, 2138490, 2118118, 2097452, pid(s)=2093326, 2048302, 1929536, 1601864, 1450464, 1442226, pid(s)=1380818, 1298830, 942412, 790792, 586094, 500078, pid(s)=463158, 446964, 360720, 4010188, 3940488, 3903556, pid(s)=3879078, 3817562, 3780778, 3743784, 3702992, 3584134, pid(s)=3575948, 3563716, 3514416, 3498238, 3494010, 3453108, pid(s)=3379402, 3326202, 3240040, 3080364, 3043556, 2961590, pid(s)=2850868, 2826428, 2773180, 2728022, 2678824, 2408484, pid(s)=1859804, 1785998, 1777896, 1552384, 1400900, 1359942, pid(s)=1339490, 1183750, 1106086, 933920, 843992, 839782, pid(s)=757788, 643126, 585930, 503830, 442478, 372796

3.如有必要,可以使用“ps -ef|grep PID”来查看对应进程的信息。

1.9 9 tcp_recvspace,tcp_sendspace参数解释及其应用

环境:(产品,平台,机型,软件版本,等)AIX5.3

问题描述:tcp_recvspace,tcp_sendspace参数解释及其应用 解答:

tcp_recvspace---接收TCP协议数据缓冲区大小。tcp_sendspace---发送TCP协议数据缓冲区大小。

以tcp_recvspace为例:

1.当TCP数据传输到本地接口时,首先会放置在缓冲区,如果该缓冲区被撑满,会向发送方发送该缓冲区已满信号,发送方停止继续发送数据。

2.系统默认值为16kb,可修改的区间为4kbytes 至 sb_max所赋予的值(no -a|grep sb_max,sb_max是系统允许的给予TCP socket和UDP socket最大的缓冲值,默认值为1Mb)。

建议根据实际物理网络设备设置相应大小。

3.如果系统网卡都为千兆网卡,如果该值太小,必然会影响网络传输效率,为了保证网络数据能高速传输,建议设置为64kb。 4.如果要设置大于64kb的值,必须先将参数rfc1323(TCP Extensions for High Performance)打开(no -p -o rfs1323=1),默认是0,关闭的。

修改该值后,只会对接下来新生成的tcp链接产生影响。 5.对于由inetd启动的服务,在修改后,需要重启inetd服务才可生效:stopsrc -s inetd;startsrc -s inetd。

6.由于该值默认最大只能为1Mb,所以对系统影响是可以忽略不计的

1.10 10 如何更改用户登录目录?

环境:(产品,平台,机型,软件版本,等)RS6000,AIX

问题描述:有些客户要求特定的用户登录后即在工作目录下。 解答:有两种方法可以满足这种要求:

1. 修改/etc/passwd文件,修改用户的home目录:

在/etc/passwd文件中其中相应用户条的第六项即是home目录项。

如例,test1:!:206:1::/home/test1:/usr/bin/ksh,test1用户的第六字段/home/test1就是home目录,更改为相应的目录保存即可。

使用smitty user也可以修改用户的home目录,这个操作也是同样的修改了/etc/passwd这个文件。

需要注意的是,修改完用户的home目录后,需要用chown命令将新的home目录关联到该用户及所在的组。然后重新登录用户,在新的home目录下会产生.sh_history,及smit相关文件。

.profile文件则需要重新创建,也同样要关联到该用户和组。 2. 修改用户的.profile文件:

在相应用户的目录下,在$home/.profile中加入cd /abc命令即可,用户登录后会自动cd到/abc工作目录。

这个方法不需要考虑目录、文件与用户的关联关系,用户相关文件仍然保存在home目录下,比较简单易行。

1.11 11 AIX系统关机命令的正确使用

环境:(产品,平台,机型,软件版本,等) 平台:pSeries AIX 机型:pSeries 问题描述:

AIX系统的关机命令有shutdown、halt;重启命令有shutdown -Fr和reboot,但是对于这几个命令的正确使用却存在一些误区。 解答:

用shutdown命令停止操作系统是一个最安全最彻底的方法。使用不带参数的shutdown命令,在停止系统运行之前,他将通过wall命令吧系统即将关闭的信息告诉已登录的所有用户,并且留给1分钟(默认时间,可以更改)时间来完成剩余工作,1分钟后,系统开始调用killall命令杀死人在系统中运行的进程,用sync命令将内存中的缓冲数据保存到硬盘上,再卸载已经安装的文件系统,最后是用halt命令停止系统。

使用halt命令来关闭系统,该命令只能有root用户执行,halt一般是在单用户模式下使用,执行它时,先将数据保存到磁盘上,然后就停止处理器的运行,halt命令不做任何提示,而是直接杀死进程。如果有其他用户已经登录到系统中,就不要执行halt命令。只有除root用户之外的其他所有用户都退出系统之后,才可以执行halt命令,否则会导致用户数据丢失。实际上halt命令也是调用fasthalt命令来停止系统的。当halt命令执行时,它会调用syslogd进程在/var/adm/wtmp文件中写一条关闭系统的记录,同时也记录一条状态为关闭的错误日志信息。做hacmp切换测试时,常使用halt -q命令。

reboot命令可以重新启动系统,但是执行reboot命令之前,必须确保所有的用户已经退出系统,reboot命令一般在单用户模式下使用。虽然使用reboot可以快速重启计算机,但是使用reboot命令比较危险,在多用户模式下很容易使文件系统受损,导致数据丢失,严重时会导致系统无法启动。

有客户在多用户环境下使用reboot做hacmp切换测试,会发现系统无法重启,其实这是合理现象,毕竟reboot不支持多用户模式下的使用。shutdown是一个graceful的关机动作,因而不会引起hacmp的切换。所以在做hacmp切换的测试中需要将其他用户退出后使用halt命令进去测试。

可以使用下面的命令进入单用户模式,也就是维护模式下:#init s

使用shutdown -m命令也可以将系统运行级别从多用户模式下改变到单用户模式,实际上它还是会调用了#init -s命令来完成的。

ps:#init 0这个命令在其他unix或linux系统上都是一个关机命令,但是在aix系统上init 0这个命令并不能用来关机,会进入一个比较奇怪的状态,因为在aix中,0、1目前还没有含义,是系统为将来保留的

1.12 12 增加新物理卷到HA的共享卷组 环境:(产品,平台,机型,软件版本,等)

aix 5.3 问题描述:

使用下列操作步骤往一个包括三节点HA的共享卷组中新增加物理卷时发现报错:“1800-051 there is no item of this type” smitty hacmp -> cspoc

-> lvm management

-> set characteristics of a shared vg -> add volume from shared vg -> select volume group

-> display: 1800-051 there is no item of this type. 解答:

1.检查pv信息发现要增加的物理卷hdisk4/hdisk5没有pvid. s2#lspv

hdisk0 00c45f4cdd725575 rootvg active hdisk1 00cfcefb940e97e1 rootvg active hdisk2 00ce17ebddf28265 oravg active hdisk3 00ce17ebe155f905 appvg hdisk4 none None hdisk5 none None hdisk6 none None hdisk7 none None

hdisk8 00cd923119c63b00 appvg hdisk9 none None hdisk10 none None hdisk11 none None

hdisk12 00cd923119c876a6 hbvg1 hdisk13 00cd923119c75ecd hbvg2 hdisk14 00cd923119c93a6b hbvg3 hdisk15 none None

hdisk16 00cd923119c571e5 oravg active

------------------------------------------------------------------------------ s1#lspv

hdisk0 00c172ec9c378b69 rootvg active hdisk1 00ce17ebdd47f0c2 rootvg active hdisk2 00ce17ebddf28265 oravg

hdisk3 00ce17ebe155f905 appvg hdisk4 none None hdisk5 none None hdisk6 none None hdisk7 none None

hdisk8 00cd923119c63b00 appvg hdisk9 none None hdisk10 none None hdisk11 none None

hdisk12 00cd923119c876a6 hbvg1 hdisk13 00cd923119c75ecd hbvg2 hdisk14 00cd923119c93a6b hbvg3 hdisk15 none None

hdisk16 00cd923119c571e5 oravg

-------------------------------------------------------------------------- s3#lspv

hdisk0 00cd9231e828bea6 rootvg active hdisk1 00cd9231fcb65a60 rootvg active hdisk2 00ce17ebddf28265 oravg

hdisk3 00ce17ebe155f905 appvg active hdisk4 none None hdisk5 none None hdisk6 none None hdisk7 none None

hdisk8 00cd923119c63b00 appvg active hdisk9 none None hdisk10 none None hdisk11 none None

hdisk12 00cd923119c876a6 hbvg1 hdisk13 00cd923119c75ecd hbvg2 hdisk14 00cd923119c93a6b hbvg3 hdisk15 none None hdisk16 none None

2.要使用下列命令在每个节点上为新增物理卷赋予相同pvid 。

#chdev -l hdiskX -a pv=yes

3.当在每个节点上出现新增物理卷的相同pvid后。再使用下列步骤就可以将物理卷正确加入到共享卷组中。

#smitty hacmp -> cspoc

-> lvm management

-> set characteristics of a shared vg -> add volume from shared vg -> select volume group -> select hdisk4 -> enter

1.13 13 为何find的时候报 find: 0652-023 Cannot open file /proc/xxxxxx 问题描述:有时候客户在执行find的时候会出现如下报错:

#find / -name xxxx

#find: 0652-023 Cannot open file /proc/459000

解答:/proc文件系统,是AIX操作系统提供的对处于活动状态的进程和线程一种操作方式 /proc/xxxxxx中的xxxxxx对应于系统中进程的pid号,所以我们可以通过ps命令找到这个目录对应的进程

#ps a |grep 45900

459000 Z 0:00

667660 pts/27 A 0:00 grep 45900

由此可以看出45900这个进程是一个defunct进程(僵尸进程) 所以find命令无法正常访问此proc目录,导致了此问题的发生 关于/proc文件系统以及defunct僵尸进程,可以参阅如下文章:

http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2811994E27000 http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2311123000005

1.14 14 /proc文件系统介绍

本文介绍/proc文件系统的部分知识,份三个部分描述 1, 描述 2, 目录结构 3, 注意事项

/proc文件系统介绍 一,描述

/proc文件系统,是AIX操作系统提供的对处于活动状态的进程和线程一种操作方式。 在/proc文件系统中,是以数字命名文件目录的,直接反映进程的标示符,目录的属主 为进程用户。/proc文件系统的文件源于核心线程,而不是用户空间的线程,可以用术 语LWP(Light Weight Process)描述,但AIX操作系统并不使用LWP描述其核心线程, 为兼容与其他的UNIX系统,AIX使用/proc文件系统描述。

/proc文件系统的文件的操作可以使用标准的系统函数,如open, close, read, write。

大多数描述进程状态的文件是只读的,但是控制进程的状态文件ctl和lwpctl,则只允许以写方式打开此文件。包含运行进程的影像的as(地址空间)文件,可以以读写的方 式打开,从读写打开的方式可以看出,写方式打开即允许操作、控制进程,而只读的 打开方式则意味着只能监控系统进程状态。

一般情况下,/proc文件系统的文件允许多个进程同时打开,而独占式的打开方

式则不允许其他进程同时打开同一文件。借助于open系统函数,及输入参数O_EXCL, 进程可以使用独占式的方式打开进程文件,这对某些进程控制文件而言是必要的,如 as, ctl, lwpctl控制文件,如果目标进程已经以独占方式打开,则任何再次打开此进程的尝试,将失败。一读操作的方式打开文件,参数项O_EXCL将被忽略,第一次打开操 作进程的写操作要使用O_EXCL参数项。

通过lseek系统函数,在as文件中,可以定位到任何需要的位置,换言之,可以在进

程地址空间中根据需要转移数据。另外,进程的信息和控制操作也可以从系统体统的 头文件中获得,头文件为procfs.h,定义了相应的数据结构,消息格式等信息。其中某 些定义为一组符号标示集: pr_sigset_t:信号量集合 fltset_t:缺陷集合

sysset_t:系统调用集合

借助于系统提供的宏定义,可以实现对这些集合的操作,操作为: prfillset(&set):设置set指定的集合中的标示 premptyset(&set):清除set指定的集合中的标示

praddset(&set, flag):设置set指定的集合中的flag标示 prdelset(&set, flag):清除set指定的集合中的flag标示

prismember(&set, flag):判断指定的表示是否设置,如果返回值不为0,则已经设置,反之未设置

不管是prfillset还是premptset操作,使用前,需确认pr_sigset_t或者fltset_t已经被初始化,flag指定的标示必须是相应指定的符号集中的值。对系统调用集合的操作,系统提 供了不同格式的宏定义,分别为:

prfillsysset(&set):设置set集中所有的系统调用 premptysyset(&set):清除set集中的所有系统调用 praddsysset(&set, num):设定指定的系统调用 prdelsysset(&set, num):清除指定的系统调用

prissyssetmember(&set, num):判断系统调用是否被设置,如返回值不为0,则以设置每一个处于活动状态的进程至少包含一个核心线程,每一个核心线程都代表了一组

系统的调度,同一进程的核心线程共享地址空间,使用ctl和lwpctl文件,可以控制每一个核心线程。 二,目录结构 /proc文件系统,是以进程标示为第一级子目录的,每一进程下都包含相应的进程状态文件,如下:

/proc:进程文件系统的根目录

/proc/pid:以进程为标示的第一级子目录 /proc/pid/status:相应进程的状态 /proc/pid/ctl:相应进程的控制文件 /proc/pid/psinfo:相应进程的ps信息 /proc/pid/as:相应进程的地址空间 /proc/pid/map:相应进程的映射信息 /proc/pid/object:相应进程的对象信息 /proc/pid/sigact:相应进程的信号量操作 /proc/pid/sysent:相应进程的系统调用信息

/proc/pid/lwp/tid:相应进程的核心线程标示符目录 /proc/pid/lwp/tid/lwpstatus:核心线程的状态 /proc/pid/lwp/tid/lwpctl:核心线程控制文件 /proc/pid/lwp/tid/lwpsinfo:核心线程的ps信息 三,注意事项

因为安全原因,除非是特权用户,只有有效的用户、组才可以使用open系统函数打开/proc文件,否则,失败。对应于setuid和setgid过程的文件只有特权用户才可以打开。对/proc文件系统的更详细的信息可以参考AIX系统的相关文档。

1.15 15 有关Defunct进程(死进程)的问题确定 有关Defunct进程(死进程)的问题确定

本文介绍了为什么会产生defunct进程,如何确定引起defunct进程的原因,以及当需要进一步确定问题时应提供何种信息给软件供应商。 1.Defunct进程的产生

在AIX操作系统实施的进程结构中,每一个进程都有一个父进程。当一个进程结束时会通知它的父进程,从而该进程的父进程会收集该进程的状态信息。若父进程在一定的时间内无法收集到状态信息,则系统中就会残留一个defunct进程。

因为defunct进程是已经停止的,所以使用杀死进程的方法来杀defunct进程是无效的。defunct进程不使用CPU或硬盘等系统资源,而只使用极少量的内存用于存储退出状态和资源使用信息。 2.问题确定

某一个进程在结束时由它的父进程负责删除它。要找到某一个进程的父进程,执行ps -ef命令,输出中的PPID列给出了一个进程的父进程的进程号。 (1)如果PPID为1应该如何做?

如果一个defunct进程的PPID为1,则该defunct进程的父进程为init进程。init进程是系统中所有进程的起源。通常情况下,init进程通过将defunct进程的PPID设为1来收回该进程。

如果一个defunct进程的父进程号为1,则需要确认该defunct进程是否已结束了若干分钟。(方法是等几分钟后再查看该defunct进程是否还存在。)一个系统中,特别是任务繁忙的系统中,父进程为init的defunct进程存在1~2分钟是正常的。defunct进程经常由复杂的shell脚本程序产生,这种情况通常是正常的,并不能说明有问题存在。

当init进程没有处理完/etc/inittab文件而在等其中的某一项命令结束(通常是一个/etc/rc脚本)时,可能会发生问题。在这时候,init进程会忽略掉其它所有结束的子进程,而只等这个特定的子进程结束。由一个挂起的/etc/inittab文件中的任务引起的问题的征兆是:父进程为init的defunct进程无限制的增长。在AIX4.3及以后的版本中,init进程的功能被增强,用以有效地处理defunct进程。

如果/etc/inittab文件中含有类似下一行的项,则删除它:

install_assist:2:wait:/usr/lib/lpd/pio/etc/pioinit > /dev/null 2>&1

该进程会引起defunct进程。该项应在初始化安装结束后被自动删除。

(2)如果PPID不为1应该如何做?

如果父进程号不为1,则相应的父进程应负责收回结束的子进程。未收回子进程的原因之一是shell管道。系统中的许多命令都不会产生子进程,这些进程也无法处理那些结束的子进程。这种情况在一个shell管道中有一个或多个短时进程及一个和多个长时间进程时更为明显。一个defunct进程会在它的父进程运行期间一直存在。

任何一个程序在产生子进程时都应负责在子进程结束时收回它们。如果程序在编写中没有考虑到处理它们产生的子进程,则该程序存在问题。 3.如果需要对问题做进一步确认,如何

做?

如果确认一个进程是defunct进程,并且该进程应该被它的父进程收回,则可能需要提供下面的信息给应用软件供应商用以分析问题产生的可能原因: (1)下面命令的输出: # ps -ef

(2)下面命令的输出: # who -a

(3)/etc/inittab 文件 (4)下面命令的输出:

SLOT=`expr / 256`

(echo u $SLOT ; echo trace -k $SLOT) | crash >

其中,是defunct进程的父进程号, 是输出文件的文件名。

1.16 16 hostname不一致导致smit无法使用

环境:(产品,平台,机型,软件版本,等)AIX 5L

问题描述:执行smit的时候,无法出现smit的操作界面,直接跳回命令提示符 解答:经过了解,在smit无法执行前,客户通过smit修改了hostname, 之后便发现smit无法再次运行,做如下检查: #hostname p570

#uanme -a

AIX localhost 3 5 00068B06D700

发现uanme -a看到的主机名和hostname不一致 于是将uanme也对应的修改为p570 #uname -S p570

再次执行smit,恢复正常

1.17 17 EEH报错引起系统宕机问题解决一例 环境:RS6000,pSeries AIX 问题描述:

机器重启后errpt发现以下报错:

E142C6D4 1104025808 T H sysplanar0 EEH temporary error for adapter A2205861 1104025808 P S SYSPROC Excessive interrupt disablement time 详细错误信息如下:

--------------------------------------------------------------------------- LABEL: PCI_RECOVERABLE_ERR IDENTIFIER: E142C6D4

Date/Time: Thu Nov 13 10:18:02 2008 Sequence Number: 166566 Machine Id: 00CEE68E4C00 Node Id: NODEA Class: H Type: TEMP

Resource Name: sysplanar0 Resource Class: planar

Resource Type: sysplanar_rspc Location: Description

EEH temporary error for adapter Probable Causes SYSTEM I/O BUS

SOFTWARE PROGRAM ADAPTER

Recommended Actions

PERFORM PROBLEM DETERMINATION PROCEDURES Detail Data BID

9000 00E0 DEVFUNC 0000 0008 RTAS TOKEN 0000 0036 ....

--------------------------------------------------------------------------- LABEL: DELAYED_INTS IDENTIFIER: A2205861

Date/Time: Thu Nov 13 10:18:02 2008 Sequence Number: 166567 Machine Id: 00CEE68E4C00 Node Id: NODEA Class: S Type: PERF

Resource Name: SYSPROC Description

Excessive interrupt disablement time Probable Causes

SOFTWARE PROGRAM Failure Causes

SOFTWARE PROGRAM Recommended Actions REPORT DETAILED DATA Detail Data

TICKS 51 (3) decr, IAR 42A2F24 jas_getchars+470, LR 42A2E50 jas_getchars+39C jas_getchars+470 jas_getchars+398 jas_slih+8B4 i_poll_soft+184

i_softmod+358 [175CF0] ....

sysdumpdev -L 检查有dump产生,状态正常. 解答:

宕机原因是:EEH temporary error for adapter 报错后,引发了Excessive interrupt disablement time报错,

文件集 devices.pci.4f11c800.rte版本低于5.3.7.2.当出现以上报错时,系统会发生宕机.5.3.7.2 解决了这个问题.

请下载安装相应的补丁,补丁说明如下:

Error description

Panic in jasdd with the following stack [00064308]e_block_thread+000418 ()

[03EA2888]pse:pse_block_thread+0002C4 ()

[03EA2C18]pse:pse_sleep_thread+000134 (??, ??, ??) [03F18644]jasdd:jas_pci_read+00009C (??, ??, ??, ??, ??) [03F18730]jasdd:jas_setpci+000094 (??)

[03F17740]jasdd:jas_reset_bd+0000BC (??, ??)

[03F17A14]jasdd:jas_eeh_callback+0001A4 (??, ??, ??) [03CF245C]pci_busdd:eeh_issue_callbacks+0003DC (??) [03CF1DE0]pci_busdd:eeh_iodone+00002C (??) [0014CCAC]internal_iodone_offl+000128 (??, ??) [0014CB24]iodone_offl+000028 () [0014522C]i_softmod+0001D8 ()

[0014A358].finish_interrupt+000024 (??, ??, ??, ??, ??, ??)

Local fix

Problem summary

During EEH event,jas pci read routine calls sleep in interrupt level, so the system panics Problem conclusion

Sleep is removed from interrupt level and put into a proper place

aix不同版本对应的补丁: 5300-06 - AIX APAR IZ25676 5300-07 - AIX APAR IZ25417 5300-08 - AIX APAR IZ12697 6100-00 - AIX APAR IZ27313 6100-01 - AIX APAR IZ27151

1.18 18 怎样修改HBA卡的属性 环境:(产品,平台,机型,软件版本,等) 问题描述:

为了修改HBA卡的属性,必须保证fcsX以及其子设备fcnetX和fscsiX处于defined状态。问题是我们用rmdev删除了上述设备后,执行cfgmgr,识别回的设备状态又会显示为fcsX和fscsiX处于available的状态,这样还是不能修改属性。那么有什么办法保证它们的状态都变成defined呢。方法如下:

#rmdev -l fscsiX #rmdev -l fcsX 这样用lsdev去看,就会看到所有HBA卡的设备都变成了defined状态,然后就可以用chdev去修改fcsX的属性了。当然,修改完了以后,还需要执行mkdev或cfgmgr让fscX和fscsiX的状态变回available.

1.19 19 如何在AIX中消除文本文件中的^M

环境:(产品,平台,机型,软件版本,等) AIX 4L & 5L 问题描述:

由于AIX(或UNIX)系统和Windows系统对于文本文件的行末结束符(或回车换行符)的处理方式不同,当我们将Windows格式的一个文本文件以BIN格式(而不是ASCII方式)上传至AIX上时,用vi查看该文件会发现每行的行末出现一个^M的符号。这会导致AIX系统下对该文本文件的处理出现异常,并且在该文件是脚本的情况下,也会导致脚本执行异常。 解答:

用vi编辑该文件,在命令行方式下(即:方式下)输入如下命令: 1,$s/.$//g

则可以去除文件中所有的^M。

1.20 20 如何查看设备的子设备或者父设备

用户经常咨询如何查看某个设备的子设备或者父设备,介绍如下: 查看父设备

方法一:通过location code来查看

ha_node1@/>lsdev -C|grep 1S-08

hdisk0 Available 1S-08-00-8,0 16 Bit LVD SCSI Disk Drive hdisk1 Available 1S-08-00-9,0 16 Bit LVD SCSI Disk Drive hdisk2 Available 1S-08-00-10,0 16 Bit LVD SCSI Disk Drive hdisk3 Available 1S-08-00-11,0 16 Bit LVD SCSI Disk Drive scsi0 Available 1S-08 Wide/Ultra-3 SCSI I/O Controller

ses0 Available 1S-08-00-15,0 SCSI Enclosure Services Device

在上面的例子中,我们通过第三列的location code,可以看出,hdisk0、hdisk1、hdisk2、hdisk3都是挂在1S-08上的,他们都是scsi0的子设备。 方法二:通过下面的命令来查看 ha_node1@/>lsdev -Cl hdisk0 -F parent scsi0

查看子设备:

方法一:通过location code来查看

ha_node1@/>lsdev -C|grep 1S-08

hdisk0 Available 1S-08-00-8,0 16 Bit LVD SCSI Disk Drive

hdisk1 Available 1S-08-00-9,0 16 Bit LVD SCSI Disk Drive hdisk2 Available 1S-08-00-10,0 16 Bit LVD SCSI Disk Drive hdisk3 Available 1S-08-00-11,0 16 Bit LVD SCSI Disk Drive scsi0 Available 1S-08 Wide/Ultra-3 SCSI I/O Controller

ses0 Available 1S-08-00-15,0 SCSI Enclosure Services Device

在上面的例子中,scsi0上挂了hdisk0,hdisk1,hdisk2,hdisk3,他们都是scsi0的子设备。 方法二:通过下面的命令来查看:

9.123.131.147/# lsdev -p scsi0

hdisk0 Available 04-08-00-3,0 16 Bit LVD SCSI Disk Drive hdisk1 Available 04-08-00-4,0 16 Bit LVD SCSI Disk Drive hdisk2 Available 04-08-00-5,0 16 Bit LVD SCSI Disk Drive hdisk3 Available 04-08-00-8,0 16 Bit LVD SCSI Disk Drive ses0 Available 04-08-00-15,0 SCSI Enclosure Services Device

1.21 21 AIX上如何正确挂载Linux 的nfs共享目录 环境:(产品,平台,机型,软件版本,等)

AIX 5.3 问题描述:

Linux 服务器上共享了/nfs 这个目录,如何将这个共享目录正确的挂载到AIX 的/data/wuxf 这个挂点。 解答:

1.在Linux 服务器上共享/nfs 这个目录, 在/etc/exports文件定义: /nfs *(rw,no_root_squash,sync) hostname : testcom #service portmap start #service nfslock start #service nfs start

2.在AIX 端检查Linux的nfs 共享目录有没有存在:

whoselife@/data>showmount -e testcom *:/nfs

如果AIX上portmap 没有启动,运行showmount -e会出现如下报错: whoselife@/data>showmount -e

whoselife: RPC: 1832-019 Program not registered

如果出现1832-019的报错需要重新启动portmap 和nfs 的服务: whoselife@/data>stopsrc -g nfs

0513-044 The biod Subsystem was requested to stop. 0513-044 The nfsd Subsystem was requested to stop.

0513-044 The rpc.mountd Subsystem was requested to stop. 0513-044 The rpc.lockd Subsystem was requested to stop. 0513-044 The rpc.statd Subsystem was requested to stop. whoselife@/data>stopsrc -s portmap

0513-044 The portmap Subsystem was requested to stop. whoselife@/data>startsrc -s portmap

0513-059 The portmap Subsystem has been started. Subsystem PID is 954432. whoselife@/data>startsrc -g nfs

0513-059 The biod Subsystem has been started. Subsystem PID is 344286. 0513-059 The nfsd Subsystem has been started. Subsystem PID is 618542.

0513-059 The rpc.mountd Subsystem has been started. Subsystem PID is 975026. 0513-059 The nfsrgyd Subsystem has been started. Subsystem PID is 380956. 0513-059 The gssd Subsystem has been started. Subsystem PID is 380958. 0513-059 The rpc.lockd Subsystem has been started. Subsystem PID is 380960. 0513-059 The rpc.statd Subsystem has been started. Subsystem PID is 143412. whoselife@/data>showmount -e testcom *:/nfs

这样就成功检测到了共享文件。

3. 检查/etc/hosts ,确定服务器和客户机的主机名地址可以正确解析。

whoselife@/>traceroute testcom trying to get source for testcom source should be 9.123.x.y

traceroute to testcom (9.123.a.b) from 9.123.x.4 (9.123.x.y), 30 hops max outgoing MTU = 1500

1 9.123.x.4 (9.123.x.4) 1 ms 1 ms 1 ms 2 testcom (9.123.130.34) 1 ms 1 ms 1 ms whoselife@/>host 9.123.a.b testcom is 9.123.a.b

whoselife@/>host 9.123.x.y whoselife is 9.123.x.y

如果检查到0827-803的错误,需要在服务器和客户机的/etc/hosts加入两边正确的主机名和ip地址。

whoselife@/data>host 9.123.131.147

host: 0827-803 Cannot find address 9.123.131.147. 4。挂载Linux nfs 文件系统到AIX 的目录/data/wuxf whoselife@/>mount testcom:/nfs /data/wuxf 如果出现下列不能挂载的问题:

whoselife@/>mount testcom:/nfs/ data/wuxf mount: giving up on: testcom:/nfs/

vmount: Not owner 需要检查nfso -a:

whoselife@/data>nfso -a | grep nfs_use_reserved_ports nfs_use_reserved_ports = 0

默认情况,AIX系统执行mount命令请求时并不使用预先定义好的端口,设置nfs_use_reserved_ports后可使用1024以下的预定义端口。 whoselife@/>nfso -o nfs_use_reserved_ports=1 Setting nfs_use_reserved_ports to 1

这样AIX 就可以正确挂载Linux 的nfs 共享文件了

1.22 22 TCP/IP系统调用序列简介

环境:(产品,平台,机型,软件版本,等) 问题描述: TCP/IP系统调用序列简介 解答:

典型的 TCP 客户机和服务器应用程序通过TCP系统调用序列来获取某些函数。 这些系统调用包括 socket ()、bind ()、listen ()、accept ()、send () 和 receive()。 TCP 应用程序进行的普通调用序列:

TCP 系统调用的各层:

套接字(socket)层接收进行的任何 TCP 系统调用。套接字层验证 TCP 应用程序传递的参数的正确性。这是一个独立于协议 的层,因为尚未将协议连接到调用中。 套接字层下面是协议层,该层包含协议的实际实现(本例中为 TCP)。当套接字层对协议层进行调用时,将确保对两个层之间共享的数据结构具有独占访问权限。这样做是为了避免任何数据结构损坏。

各种网络设备驱动程序在接口层运行,该层从物理链路接收数据,并向物理链路传输数据。 每个套接字具有一个套接字队列,并且每个接口具有一个用于数据通信的接口队列。不过,对于整个协议层,只有一个称为 IP 输入队列的协议队列。接口层通过此 IP 输入队列将数据输入到协议层。协议层使用相应的接口队列将数据输出到接口。

1.23 23 非root用户不能登陆CDE问题

环境:AIX 5300-06

问题描述:1、仅root用户可以登陆CDE,其他用户登录后启动CDE界面2秒钟后无法显示正确的CDE界面,而显示界面提示如下信息: “无法启动tooltalk” ,并在界面内提示了一些解决方法,如下所示:

2、系统启动日志$HOME/.dt/startlog中提示如下错误:

--- /usr/dt/bin/Xsession starting... --- Xsession started by dtlogin

--- sourcing /home/zxin10/.dtprofile...

--- sourcing /usr/dt/config/Xsession.d/0010.dtpaths... --- sourcing /usr/dt/config/Xsession.d/0030.dttmpdir... --- sourcing /usr/dt/config/Xsession.d/0040.xmbind... --- sourcing /usr/dt/config/Xsession.d/0050.dtxmodmap... --- starting /usr/dt/bin/dthello & --- starting /usr/dt/bin/dtsearchpath --- starting /usr/dt/bin/dtappgather &

--- Tooltalk Message Server did not start within timeout specified. --- Launching Xfailsafe_tooltalk_error to correct problems. 2053-049 mwm:2053-033 无效的助记键规范。

检查窗口管理器资源描述文件。 在第 87 行上,该行属于配置文件 /usr/lib/X11/zh_CN/system.mwmrc

2053-049 mwm:2053-033 无效的助记键规范。

检查窗口管理器资源描述文件。 在第 88 行上,该行属于配置文件 /usr/lib/X11/zh_CN/system.mwmrc

警告:Missing charsets in String to FontSet conversion 警告:Missing charsets in String to FontSet conversion 3、用root用户可以正常登录CDE 解答:

1.查看/etc/hosts文件,确定ip地址和主机名唯一对应并可以相互正确解析。修改/etc/netsvc.conf文件,添加hosts=local,bind项 。问题没有解决。

2.查看/ect/hosts和/etc/netsvc.conf文件以及/dev的访问权限。确保文件访问权限如下所示:

/dev/null的权限为666 /dev/lft0的权限为666 /dev/tty的权限为666

/dev/console的权限为622 /var/tmp的权限为666 /var/dt/tmp的权限为666 /etc/hosts的权限为664

/etc/netsvc.conf 的权限为664

/home/$USER必须对该用户有rwx权限 /dev 的权限是775 /dev/null 的权限是666 /dev/mouse0 的权限是666 /dev/kbd0 的权限是666 /dev/lft0 的权限是600

最后发现etc/hosts 的权限是644 ,即system组没有写权限,其他都正确。将/etc/hosts文件权限改成664之后,非root用户可以正常登陆CDE ,问题解决。

1.24 24 关于config_too_long报警的处理方法

问题描述:在HACMP的日志中,经常会看到有config_too_long的报错,诸如:

Nov 10 07:39:34 EVENT START: config_too_long 540 /usr/es/sbin/cluster/events/node_down.rp 这到底代表什么意思,又如何避免呢?

解答:实际上,每当cluster事件的执行时间超过了某一特定时间之后,config_too_long这条信息就会报在HACMP的日志中。

在早于HACMP4.5的版本中,超时的时限通常会被定死在360秒,而如果诸如node_up或node_down事件的执行超过了360秒,那么每

隔30秒钟,HACMP会报出一条config_too_long警告信息,直到事件执行结束。

而在HACMP 4.5及之后的版本中,客户可以自己定制超时的时限。而在缺省情况下,config_too_long的告警记录规律如下:

1. 头5条config_too_long告警信息会以30秒的间隔记录。

2. 之后每5条config_too_long信息的时间间隔都会比之前5条间隔长一倍,直到间隔到达1小时为止。

3. 之后每一小时记录一次,直到事件结束或终止。

对比于之前举的例子:Nov 10 07:39:34 EVENT START: config_too_long 540 /usr/es/sbin/cluster/events/node_down.rp,它代表的意思是:11月10日的早上7点39分34秒,config_too_long已经执行了540秒还没有结束,对应的事件名是node_down.rp。 导致这一报警的可能原因及解决方案如下:

1. 某脚本的执行时间超过了超时时限,例如多磁盘的操作或者比较复杂的脚本执行。在这一情况下,要解决问题可以通过整一下导致长执行时间的脚本,或者去延长一下超时时限。延长的办法是:

smit hacmp/Extended Configuration/Extended Event Configuration/Change/Show Time Until Warning (smit cm_time_before_warning)

Max. Event-only Duration (in seconds) [180]

Max. Resource Group Processing Time (in seconds) [180]

把这两个值修改一下即可。下面的Total time to process a Resource Group event before a warning is displayed代表的就是config too long的时间。

2. 某一个命令hang住了导致之后的脚本config_too_long。在这种情况下,hang住的命令通常出现于/var/hacmp/log/hacmp.out文件中config_too_long报警之前的命令,而它应该也可以通过ps -ef看到。解决办法就是kill掉这一命令(hang住的命令)。

1.25 25 rsh链接报错解决办法

环境:(产品,平台,机型,软件版本,等)AIX5.3 问题描述:

rsh链接报错:rsh protocol failure due to unexpected closure from server end 解答:

1.检查服务器端rshd服务是否是active状态:

#lssrc -ls inetd |grep shell

shell /usr/sbin/rshd rshd active

2.检查rshd服务使用的默认端口514是否为LISTEN状态: #netstat -an |grep 514 tcp 0 0 *.514 *.* LISTEN 3.检查如下命令的访问权限

# ls -al /usr/bin/rsh

#-r-sr-xr-x 2 root system 303506 Feb 10 14:11 /usr/bin/rsh #ls -l /usr/sbin/rshd

#-r-sr-xr-- 1 root system 24556 Feb 10 14:12 /usr/sbin/rshd #ls -l /usr/bin/rcp

#-r-sr-xr-x 1 root system 319972 Apr 08 2001 /usr/bin/rcp #ls -al /usr/bin/rlogin

#-r-sr-xr-x 1 root bin 306328 Apr 10 2002 /usr/bin/rlogin # ls -al /usr/sbin/rlogind

#-r-sr-xr-- 1 root system 33864 Jul 172002/usr/sbin/rlogind

除了rshd和rlogind的权限为4554,其他命令的权限都必须为4555。

如果不是的话,请参照如下命令修改访问权限:

#chmod 4554 /usr/sbin/rshd #chmod 4555 /usr/sbin/rexecd 4.确定访问权限已经正确;

5.刷新inetd服务: #refresh -s inetd

1.26 26 如何远程进入HMC的命令行模式

环境:HMC V7

问题描述: 如何远程进入HMC的命令行模式 解答:

通过HMC的命令行管理界面,我们可以使用HMC的命令对逻辑分区等进行管理。 可以参考如下步骤进入HMC的命令行模式: 1. 打开SSH客户端和HMC通讯的模式:

在HMC的管理界面选择 HMC Management =>> HMC Configuration =>> Enable/Disable Remote Command Execution

在弹出的窗口中选择“enable SSH”

2. 可以在客户端使用PuTTy等工具来连接HMC,连接方式选择?SSH?,输入相应用户名和密码登陆。

1.27 27 AIX系统如何使用命令弹出光驱

环境:(产品,平台,机型,软件版本,等)AIX5L 问题描述:AIX系统如何使用命令弹出光驱

解答:AIX系统弹出光驱的命令是cdeject,但是有以下几个主意事项: 1.支持cdeject命令的文件集为bos.cdmount。

ha_node1@/>lslpp -l bos.cdmount Fileset Level State Description

---------------------------------------------------------------------------- Path: /usr/lib/objrepos

bos.cdmount 5.2.0.95 COMMITTED CD/DVD Automount Facility Path: /etc/objrepos

bos.cdmount 5.2.0.95 COMMITTED CD/DVD Automount Facility 2.使用cdeject命令需要先开启cdromd deamon,否则会提示失败。

ha_node1@/>cdeject

cdeject: 0905-012 cdromd daemon is not running. 3.如果光驱处于mount的状态,输入cdeject后会有“cdeject:0905-015 can not unmount cd0 device is busy”的提示。

4.如果光驱中没有介质,也会有错误提示: #cdeject cd0

0905-014 No media present in cd0

1.28 28 如何查看aio 的 Maximum number of REQUESTS 的最大值

环境:(产品,平台,机型,软件版本,等)AIX 5L

问题描述:在AIX5L中如何查看aio 的 Maximum number of REQUESTS 的最大值 解答:此参数是通过odm设置最大值的,可以通过如下命令查看

#odmget PdAt|grep -p maxreqs PdAt:

uniquetype = \attribute = \deflt = \

values = \width = \type = \

generic = \rep = \nls_index = 4 PdAt:

uniquetype = \attribute = \deflt = \

values = \width = \type = \

generic = \rep = \nls_index = 4

从 values = \可以看到此参数的取值范围为4096-1000000

1.29 29 svmon -S中inuse的求和脚本及其结果比svmon -G小的原因

内容提要:

很多客户可能认为svmon -S中inuse的求和结果和svmon -G中的inuse一样,但是实际是不一样的。下面的脚本可以用来统计svmon -S中的inuse的相加结果:

============================================== #!/usr/bin/ksh

svmon -S | cut -c54-62 | awk '/^[-sLm]/ {if ($1 ~ /L/) {COUNT1 =($2*4096+COUNT1)} else if ($1 ~ /m/)

{COUNT2 =($2*16+COUNT2)} else {COUNT3 =$2+COUNT3}}

END {printf \page count=%d\\n4k page count=%d\\nTatal page count=%d\\n\COUNT1,COUNT2,COUNT3,'COUNT1+COUNT2+COUNT3'}'

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

那么,产生这种差别的原因是什么呢?解释如下:

svmon -S用来显示系统中所有内存段(segment)的内存使用信息。AIX上仅存在三种内存段,它们是work,client和persistent。因此,统计svmon -S中inuse的和就是将被使用的上述三种内存段进行求和。但是,这种统计并没有将系统上所有的被使用的内存页面统计进来。系统里存在着一些尚未被VMM管理的内存页面,这些页面已经被使用,但是不属于上述三种内存段,因此在svmon -S中体现不出来。而svmon -G则包含了这些未被管理的页面。

这些未被VMM管理的内存主要是被硬件使用,用来对物理内存做一些设置。在AIX 5L中,可以通过在kdb执行vmstat来查看未被管理的内存,输出如下: VMM Memory Limits:

Total available memory (4K frames) : 00100000 4.0GB

Total unmanaged mem (wlm_hw_pages): 0000D639 214.3MB 4K number of frames : 000F29C7 3.8GB 4K frames pinned : 00009FEE 160.0MB

4K system pinnable frames remaining: 000B817E 2.9GB 4K user pinnable frames remaining : 000BC0BC 3.0GB Free paging space (in 4K blocks) : 0001FD00 509.0MB Paging space SIGDANGER level : 00001000 16.0MB Paging space SIGKILL level : 00000400 4.0MB

其中“unmanaged mem”就代表这类未被VMM管理的内存页面。

1.30 30 在AIX环境下升级主机的微码版本(没有HMC)

内容提要:主机的高版本微码除了提供对一些新硬件和高版本操作系统的支持之外,还修补了一些已经发现的硬件隐患。所以在进行主机维护时将主机微码升级到最新版本能够更好地保证系统稳定运行。

说明:下面介绍一下升级主机微码的具体步骤

1. 把微码补丁从网站下到个人电脑里。所有的公网用户都可以通过IBM的英文网站http://www14.software.ibm.com/webapp/set2/firmware/gjsn完成微码的下载。

2. 老款Pseries主机的微码下载通常提供三种格式:AIX,DOS和RPM;而新款主机的微码格式则为RPM和ISO。下面分别介绍一下对应这几种微码的包装格式,应该怎么完成微码升级。

A. 对应于AIX格式:选择此方式下载之后,会发现微码的文件名为诸如现70286C4F.BIN的格式。首先需要将它通过FTP上传(注意一定要使用bin方式)到AIX主机上。 # cd /tmp/firmware (确认上传成功) # ls

70286C4F.BIN

# ls –l (然后查看文件的权限)

-rw-r-r--- 1 root system 4430377 Sept 09 15:50 70286C4F.BIN

# chmod u+x 123.bin (没有执行权限就要用chmod命令添加该权限) # ls –l (在查看是否成功)

-rwxr--r-- 1 root system 4430377 Sept 09 15:56 70286C4F.BIN

# ./ 70286C4F.BIN (权限添加成功后,开始本地执行该文件,执行后文件变成img格式) # ls –l

-r-xr-xr-x 1 root system 5100471 May 19 2007 3R080425.img

B. 对应于DOS格式:此方式下载之后的文件为.EXE格式。直接在windows下执行此文件,即可得BIN格式的文件。然后参考前面的步骤上传,并直接执行即可完成解压缩并得到img格式文件。

C. 对应于RPM格式:此方式下载之后文件为.rpm格式。上传到AIX上之后,执行: # rpm ivh --ignoreos 4354596 Sep 26 09:55 3R080425.rpm 3R080425

################################################## Verifying checksums for /tmp/fwupdate/3R080425.img against /tmp/fwupdate/3R080425.chksum

Checksum file /tmp/fwupdate/3R080425.chksum: checksum=41435 blocks=4981 Image file /tmp/fwupdate/3R080425.img: checksum=41435 blocks=4981 The checksums and block sizes match!

这样,img格式的firmware文件就出现在/tmp/fwupdate目录下:

# ls -l /tmp/fwupdate total 9984

-rw-r--r-- 1 root system 82 Apr 26 05:09 3R080425.chksum -rw-rw-r-- 1 root system 5100471 Apr 26 02:17 3R080425.img -rwxr-x--- 1 root system 2432 Feb 20 2003 checksum.pl

D. 对应于ISO格式:此方式下载之后为一个.iso格式文件。可以在windows下用虚拟光驱软件将其解压缩为rpm格式,然后参考前面步骤。

需要说明的是:ISO格式的文件主要是为了刻录光盘然后通过HMC升级。所以没有HMC的话,一般不采用下载这种格式的文件。

3. 在通过前面的步骤得到了.imp格式的firmware文件之后,就可以通过命令或菜单的方式进行微码升级了。要注意的是,执行微码升级一定是需要root权限的。 A. 命令方式:

对照无误后进入到.imp所在目录。

# ls –l

-r-xr-xr-x 1 root system 5100471 May 19 2007 3R080425.img

#/usr/lpp/diagnostics/bin/update_flash -f 3R080425.img (在该目录下执行update_flash命令)

此命令大概需要10分钟或更多的执行时间。重起过后,再用lsmcode -A命令检查升级是否成功。

B. diag菜单方式

在AIX命令行提示符下输入diag回车进入diag菜单:

然后依次选择Tasks and Service Aids Update and Manage Flash,此时会出现下面的菜单: UPDATE AND MANAGE FLASH 802810

The current permanent system firmware image is SF240_284 The current temporary system firmware image is SF240_284

The system is currently booted from the temporary firmware image. Move cursor to selection, then press 'Enter'. Validate and Update System Firmware Validate System Firmware

Commit the Temporary Image Select

如果要升级firmware的话,可以选择第一项,然后在下一个页面里选择img所在的目录和

文件名,之后回车即可开始升级。升级之后的操作和命令行升级没什么区别。 系统重新启动之后,检验一下升级是否成功:

# lsmcode -A

sys0!system:3R080425 |System Firmware:RG080425_d79e22_regatta

注意:如果主机分了LPAR,那么建议还是通过HMC来完成微码升级会比较好

1.31 31 在AIX环境下升级主机的微码版本(有HMC)

内容提要:主机的高版本微码除了提供对一些新硬件和高版本操作系统的支持之外,还修补了一些已经发现的硬件隐患。所以在进行主机维护时将主机微码升级到最新版本能够更好地保证系统稳定运行。

说明:下面介绍一下升级主机微码的具体步骤

1. 把微码补丁从网站下到个人电脑里。所有的公网用户都可以通过IBM的英文网站http://www14.software.ibm.com/webapp/set2/firmware/gjsn完成微码的下载。

2. 老款Pseries主机的微码下载通常提供三种格式:AIX,DOS和RPM;而新款主机的微码格式则为RPM和ISO。对于使用HMC升级微码来讲,应该选用RPM和ISO两种格式的文件。把它们刻录到光盘中以备接下来的操作。下面介绍一下这两种文件:

A. 对应于RPM格式:此方式下载之后文件为.rpm格式。实际上由于老机型的下载列表里可能只有rpm格式的微码文件,所以需要下载之后把该文件刻录到CD中,然后通过HMC来升级。

B. 对应于ISO格式:此方式下载之后为一个.iso格式文件。如果是新机型的微码升级,那么由于这种格式的文件在windows里很方便地可以进行刻录,所以通常都下载此格式来刻录光盘。

3. 在将微码文件刻录到光盘之后,将光盘插入HMC的光驱就可以进行升级了,步骤如下: 打开Licensed Internal Code Maintenance的目录树 点击Licensed Internal Code Updates标签

在Contents区域里点击Change Internal Code.

在Target Object Selection窗口中选择要升级微码的系统,然后点OK.

在Change Internal Code窗口里选择Select advanced features然后点击OK. 在Advanced Features窗口中选择Accept,然后点击OK. 在Confirm the Action窗口中选择OK.

升级操作大概需要持续10分钟左右即可完成。

需要额外提一句的是:如果通过HMC升级过某一版本的微码之后,HMC的硬盘中会保留这一版本微码的一份备份。那么如果下在该HMC管理的其他机器需要升级此微码的时候,可以直接从HMC的硬盘里选择要升级微码的版本。

1.32 32 处于CLOSE_WAIT状态的socket表示什么,如何处理?

内容提要:

当某一个节点的socket处于CLOSE_WAIT时,表示它收到了来自socket远端节点的FIN请求,并向远端节点发送了ACK。这个时候,该socket就会处于CLOSE_WAIT状态。接下来,正常情况应该是使用该socket的应用负责发出关闭这个socket的命令,然后这个socket向远端节点发出FIN,并进入正常关闭程序,直到socket完全关闭。如果这里提到的应用程序没有关闭socket,那么该socket就会一直出于CLOSE_WAIT状态,直至应用程序关闭或者系统重启。 下面的流程详细描述了整个socket的关闭过程。

client server

--> client sends -->

<-- server sends <--

<-- server sends <--

--> client sends -->

因此,当发现某个socket长时间处于CLOSE_WAIT状态,应该联系应用程序的工程师进行分析。从AIX的角度,我们可以对应用程序和系统的一些参数进行设置,以减小socket处于CLOSE_WAIT的时间。要做到这一点,首先需要在应用程序的socket属性里通过setsockopt函数设置SO_KEEPALIVE属性,然后修改系统的tcp_keepidle参数。默认的tcp_keepidle参数的值是14400,以半秒为单位,也就是2小时。修改方法如下: # no -p -o tcp_keepidle=1200

1.33 33 ftp后900秒自动断开

问题描述:用户希望延长ftp在inactive状态(即不活动状态)的时间,缺省是900秒ftp超时断开。

通过man查看了ftpd的一些参数配置,其中“-t”和“-T”是与timeout 有关的参数。

-t:当ftp处于inactive状态,达到多少秒的时候ftp连接会因为超时被断开,缺省为900秒,该参数同时应用于数据连接和控制连接。

-T:当ftp处于inactive状态,最大达到多少秒时候ftp连接会因为超时被断开。使用者可以自行设定timeout的时间,但我们可以在这里设定最长timeout的时间。缺省是2小时。 例:如果用户希望将ftp在inactive状态下的timeout时候延长到10小时,可以用下面的方法:

(1)vi /etc/inetd.conf

ftp stream tcp6 nowait root /usr/sbin/ftpd ftpd 更改为 ftp stream tcp6 nowait root /usr/sbin/ftpd ftpd -t 36000 –T 36000 (2)refresh –s inetd

1.34 34 使用alt_disk_install命令快速完成多台服务器环境的部署。

内容提要:

在拥有多台PSeries服务器的环境下,多台服务器/分区环境要求一致,但是需要快速部署时,一台一台地安装或者用mksysb/restore的方式显然是费时费力。此时,alt_disk_install可以说是较适合的AIX工具了。 说明:

下面通过一个简单的实例来说明在AIX 5L下怎么使用alt_disk_install命令来完成快速部署: # lspv

hdisk0 005d25cf9d6b63a8 rootvg active hdisk11 005d25cf9d57fae8 None hdisk12 005d25cf76b5e519 None

# alt_disk_install -C -O hdisk11 (也可以通过smitty alt_clone 菜单, 来将rootvg 克隆到备份磁盘)

Calling mkszfile to create new /image.data file. Checking disk sizes.

Creating cloned rootvg volume group and associated logical volumes. Creating logical volume alt_hd5 Creating logical volume alt_hd6 Creating logical volume alt_hd8 Creating logical volume alt_hd4 Creating logical volume alt_hd2 Creating logical volume alt_hd9var Creating logical volume alt_hd3 Creating logical volume alt_hd1 Creating logical volume alt_hd10opt Creating logical volume alt_fwdump Creating /alt_inst/ file system.

Creating /alt_inst/home file system. Creating /alt_inst/opt file system. Creating /alt_inst/tmp file system. Creating /alt_inst/usr file system. Creating /alt_inst/var file system.

Creating /alt_inst/var/adm/ras/platform file system. Generating a list of files

for backup and restore into the alternate file system... Backing-up the rootvg files and restoring them to the alternate file system...

Modifying ODM on cloned disk.

Building boot image on cloned disk. Resetting all device attributes.

NOTE: The first boot from altinst_rootvg will prompt to define the new system console. forced unmount of /alt_inst/var/adm/ras/platform forced unmount of /alt_inst/var forced unmount of /alt_inst/usr forced unmount of /alt_inst/tmp forced unmount of /alt_inst/opt forced unmount of /alt_inst/home forced unmount of /alt_inst forced unmount of /alt_inst

Changing logical volume names in volume group descriptor area. Fixing LV control blocks...

Fixing file system superblocks...

Bootlist is set to the boot disk: hdisk11

此时如果再查看一下pv的信息,可以看到系统已经认出hdisk11是一个altinst_rootvg了。 # lspv

hdisk0 005d25cf9d6b63a8 rootvg active hdisk11 005d25cf9d57fae8 altinst_rootvg hdisk12 005d25cf76b5e519 None

由于我们最终需要的是要将hdisk11盘作为其他机器的rootVG来引导系统,所以需要将这个

从系统中剔除。需要用到下面的命令:

# alt_disk_install –X

Bootlist is set to the boot disk: hdisk0

-X的参数:从 ODM 数据库中除去 altinst_rootvg 卷组定义。这将返回卷的lspv列表的值“None”。

在执行完上面的命令后,再查看pv的状态可以看到,系统的ODM库中已经没有hdisk11是altinst_rootvg 记录了…

# lspv

hdisk0 005d25cf9d6b63a8 rootvg active hdisk11 005d25cf9d57fae8 None hdisk12 005d25cf76b5e519 None

然后可以删除掉hdisk11在系统中的定义:

# rmdev -dl hdisk11 hdisk11 deleted

之后可以在diag菜单里完成hdisk的断电工作之后,可以把物理硬盘hdisk11拔下来,放到新的机器/分区中来引导系统,并重复上述操作… 注:最好在做alt_disk_install之前能做好版本升级、补丁安装以及必要的应用程序安装的工作,这样在克隆之后也可以避免一个一个地安装升级。

1.35 35 如何更改HACMP环境里网卡的IP地址 内容提要: 环境:

AIX 5L

HACMP 5.2/5.3/5.4 步骤:

1.获取当前HACMP环境里配置的IP地址

#/usr/sbin/cluster/utilities/cllsif > /tmp/cllsif.orig

/tmp/cllsif.orig文件里就会包含HACMP网卡当前的IP地址 2.停止所有节点的HACMP服务

#smit clstop --> 选择HA的两个节点 --> 回车

3.在两个节点上分别编辑/etc/hosts,将boot, standby, service更改成要求的IP地址 4.在两个节点上分别用”smit chinet”更改boot和standby网卡的IP为要求的IP,需要和/etc/hosts中的IP对应一致

5.在两个节点上互相ping对方的boot和standby的IP,确保能ping通

6.在HACMP配置里更改IP 6.1.更改Service IP

第一步:删除原来的service IP label

# smit hacmp --> Extended Configuration --> Extended Resource Configuration --> HACMP Extended Resources Configuration --> Configure HACMP Service IP Labels/Addresses --> Remove Service IP Label(s)/Address(es) --> 选择IP标签 --> 回车 第二步:添加新的Service IP Label

# smit hacmp --> Extended Configuration --> Extended Resource Configuration --> HACMP Extended Resources Configuration --> Configure HACMP Service IP Labels/Addresses --> Add a Service IP Label/Address --> Configurable on Multiple Nodes --> 选择网络(比如net_ether_01) --> 在IP Label/Address处选择新的Server IP标签(列表中应该能看到更改后的server IP) --> 回车 6.2.更改boot IP

# smit hacmp --> Extended Configuration --> Extended Topology Configuration --> Configure HACMP Nodes --> Change/Show a Node in the HACMP Cluster --> 选择一个节点 --> 在Communication Path to Node处重新选择新的boot IP --> 回车执行 用同样的方法为另一个节点选择新的boot IP 6.3.更改standby IP

第一步:删除原来的standby interface

# smit hacmp --> Extended Configuration --> Extended Topology Configuration --> Configure HACMP Communication Interfaces/Devices --> Remove Communication Interfaces/Devices --> 选择一个节点的standby接口 --> 回车执行 第二步:添加新的standby interface到网络(比如net_ether_01)中

# smit hacmp --> Extended Configuration --> Extended Topology Configuration --> Configure HACMP Communication Interfaces/Devices --> Add Communication Interfaces/Devices --> Add Pre-defined Communication Interfaces and Devices --> Communication Interfaces --> 选择网络(比如net_ether_01) --> 在IP Label/Address处选择更改后的standby IP,在Node Name处选择standby IP对应的节点名,在Network Interface处输入standby IP对应的网络接口 --> 回车执行 用上述方法更改另一个节点的standby IP。 7.同步HACMP

#smit hacmp --> Extended Configuration --> Extended Verification and Synchronization --> 在Verify, Synchronize or Both处选择Both --> 回车执行 8.检查更改是否生效

1) #cd /var/hacmp/odmcache

2) 进入另一个节点名为名字的文件夹

3) #cd _etc_objrepos 4) #export ODMDIR=./

5) #odmget CuAt | grep –p enX //enX为boot后者standby的接口名

6) 察看上述命令输出的IP地址是否已经是更改后的,然后用同样的方法察看本节点的IP地址是否已经被改变。

7) #export ODMDIR=/etc/objrepos //将ODM的路径改回原来的路径 如果条件允许,也请在另一个节点上察看ODM的IP记录是否变更正确。

9.启动HACMP服务

# smit clstart --> 选择两个节点启动

#/usr/sbin/cluster/utilities/cllsif > /tmp/cllsif.new //查看HA启动后的IP设置,比较/tmp/cllsif.new文件和先前的/tmp/cllsif.orig文件,所有ip地址的改变都将反映出来。 10. 进行必要的HACMP资源接管测试。

1.36 36 系统启动hang,LED显示25B0的处理方法

环境:(产品,平台,机型,软件版本,等) AIX 5L 问题描述: 系统启动hang,LED显示25B0 解答:

当系统引导时hang在LED 25B0,通常有两种可能性:

1.如果这是在LPAR安装的过程中,hang在LED 25B0,那么这是firmware中一个已知的问题,当分配给LPAR的内存为256M或更少时则会遇到。

解决方法:增加LPAR的内存为512M或1G,然后重新尝试安装过程。

2.如果这是在普通系统引导的过程中遇到,则25B0表示正在配置iscsi设备。

解决方法:引导至维护模式,删除iscsi0协议设备,并卸载文件集devices.iscsi_sw.rte,然后重新尝试引导。

1.37 37 关于chfs报错“0509-036 cannot load program allocp”的原因及解决方法 环境:(产品,平台,机型,软件版本,等) 产品: AIX 5L

平台: p5,pSeries, RS/6000 问题描述:

当使用smit chfs 扩充文件系统时报错“0509-036 cannot load program allocp”。 exec(): 0509-036 Cannot load program allocp because of the following errors: 0509-130 Symbol resolution failed for allocp because:

0509-136 Symbol qremotes (number 39) is not exported from dependent module /unix. 0509-192 Examine .loader section symbols with the 'dump -Tv' command。 解答:

1> 检查 /usr/sbin/allocp 文件的权限正常。

#ls -l /usr/sbin/allocp

-r-sr-x--- 1 root system 62664 Jun 22 05:51 /usr/sbin/allocp 2> 检查文件集的历史安装信息。

#lslpp -h bos.mp64

Fileset Level Action Status Date Time

---------------------------------------------------------------------------- Path: /usr/lib/objrepos bos.mp64

5.3.0.30 COMMIT COMPLETE 06/22/08 05:51:52 5.3.0.60 COMMIT COMPLETE 07/20/08 17:52:21 #uptime

02:32PM up 113 days, 23:13, 18 users, load average: 0.00, 0.01, 0.01 #date

Mon Oct 12 08:53:58 BEIST 2008

从上面的lslpp -h bos.mp64输出结果可以发现问题原因为系统于2008-06-22初始安装, 在2008-07-20安装过补丁但是没有重启系统导致,shutdown -Fr重新启动系统问题解决。

1.38 38 root用户设置密码策略无效-IY76662

环境:(产品,平台,机型,软件版本,等) 产品:AIX 5.3 问题描述:

在5.3.0.4以下的系统里,对root用户设置的密码策略不生效 解答:

http://www-01.ibm.com/support/docview.wss?uid=isg1IY76662

IY76662: PASSWORD RESTRICTIONS NOT ENFORCED ON ROOT USER. A fix is available

Obtain fix for this APAR APAR status

Closed as program error. Error description

Customer will not be able to set any password restrictions for the root user. Local fix

Problem summary

Customer will not be able to set any password restrictions for the root user. Problem conclusion

Remove test excluding root user from password restriction checks.

Temporary fix Comments

APAR information

APAR number IY76662

Reported component name AIX 5.3 Reported component ID 5765G0300 Reported release 530 Status CLOSED PER PE NoPE

HIPER NoHIPER

Submitted date 2005-09-17 Closed date 2005-09-17

Last modified date 2006-01-24

APAR is sysrouted FROM one or more of the following: APAR is sysrouted TO one or more of the following: Publications Referenced Fix information

Fixed component name AIX 5.3 Fixed component ID 5765G0300 Applicable component levels

R530 PSY U806753 UP06/01/24 I 1000 PTF to Fileset Mapping

U800613 bos.rte.security 5.3.0.40 U804032 bos.adt.prof 5.3.0.40

1.39 39 RSCT文件损坏导致HACMP在其中的一个节点无法启动

环境:AIX5.3, HACMP5.4 问题描述:

Hacmp在最初搭建好后,资源可以在两个节点之间正常切换。但是某天经过多次IP的切换演练,和应用程序的修改之后,其中一个节点上运行clstart无法启动HA。

无法进行资源组在两个节点之间的相互切换。删掉HACMP fileset并重新安装,问题依旧。 在启动clstart时,在hacmp.out中有如下输出:

clexit.rc : Normal termination of clstrmgrES after force down.

0513-059 The clstrmgrES Subsystem has been started. Subsystem PID is XXXXX

通过检查lssrc -a 发现:运行clstart之后grpsvcs/topsvcs 是inoperative状态。 解答:

在进行网络试验之后,确认IP network /non-IP network 是工作正常的,因此怀疑在启动RSCT服务方面出了问题。

通过检查grpsvcs.default,发现有个语法错误:

$ more grpsvcs.default Subtype=HAES

/usr/sbin/rsct/bin/hags[169]: 0403-057 Syntax error at line 1 : `(' is not expected.

/usr/sbin/rsct/bin/hags[169]: ,line 169 point to file /usr/sbin/rsct/bin/fcinit.sh has sytax error. 通过lppchk -c 察看,发现有个校验错误:

lppchk: 0504-208 Size of /usr/sbin/rsct/bin/fcinit.sh is 705, expected value was 3615.

从grpsvcs.default 和 lppchk -c 反映的信息来看,都指明/usr/sbin/rsct/bin/fcinit.sh这个文件出了问题。

从另外一个节点拷贝相同的文件后,问题解决。

1.40 40 如何查看上次密码修改时间

环境:(产品,平台,机型,软件版本,等) AIX 5L

问题描述: 从系统维护的角度,有时候我们需要查看用户上次修改密码的时间。下面,我们就简单介绍查看的方法。 解答:

在系统文件/etc/security/passwd中记录有每个用户登陆密码的加密形式,以及上次修改密码的时间,我们以root为例:

root:

password = hVvR/QGnSNKlE flags =

lastupdate = 1200982154

此处,lastupdate为上次密码修改时间,以epoch time表示。Epoch time是从Epoch(新纪元时间,传说中的标志Unix时代开端的那个拂晓)开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。我们可以通过下面的命令来转换epoch time:

#perl -le 'print scalar localtime 1200982154' Tue Jan 22 06:09:14 2008

所以,root用户上次修改密码是在2008年1月22日上午06:09:14。

1.41 41 如何删除重复的默认路由

问题描述:

客户经常碰到产生两条默认路由,并且两条路由的IP地址完全一样只有最后的接口不一样。下文将介绍如何删除多余的默认路由。

netstat –rn Routing tables

Destination Gateway Flags Refs Use If PMTU Exp Groups Route Tree for Protocol Family 2 (Internet): default 172.16.18.1 UGc 0 0 en2 - - - => default 172.16.18.1 UGc 0 0 en1 - - - 9/8 172.16.18.1 UGc 0 0 en2 - - -

9.181.49.76 172.16.18.1 UGHW 1 772 en2 1500 - - 9.181.49.136 172.16.18.1 UGHW 1 272 en2 1500 - - 9.181.49.146 172.16.18.1 UGHW 1 49 en2 1500 - - 9.181.50.88 172.16.18.1 UGHW 2 489 en2 1500 - - 9.181.50.89 172.16.18.1 UGHW 3 59144 en2 1500 - - 9.181.50.92 172.16.18.1 UGHW 1 234 en2 1500 - - .......

HA_node2:/etc>lsattr -El inet0

authm 65536 Authentication Methods True

bootup_option no Use BSD-style Network Configuration True gateway Gateway True

hostname HA_node2 Host Name True rout6 IPv6 Route True

route net,-hopcount,0,,-if,en1,,0,172.16.18.1 Route True route net,-hopcount,0,,-if,en2,,0,172.16.18.1 Route True 上面重复的两条默认路由除了可以通过Flush Route Table 的方法删除之外,还可以用如下方法删除。

1. 通过route delete 删除kernel 中的route 信息: HA_node2:/>route delete -if en1 default 172.16.18.1 172.16.18.1 net default: gateway 172.16.18.1

HA_node2:/>netstat -rn Routing tables

Destination Gateway Flags Refs Use If PMTU Exp Groups Route Tree for Protocol Family 2 (Internet): default 172.16.18.1 UGc 0 0 en2 - - - 9/8 172.16.18.1 UGc 0 0 en2 - - -

9.181.49.76 172.16.18.1 UGHW 1 772 en2 1500 - - 9.181.49.136 172.16.18.1 UGHW 1 272 en2 1500 - - 9.181.49.146 172.16.18.1 UGHW 1 49 en2 1500 - - 9.181.50.88 172.16.18.1 UGHW 2 489 en2 1500 - - 9.181.50.89 172.16.18.1 UGHW 3 59144 en2 1500 - - 9.181.50.92 172.16.18.1 UGHW 1 234 en2 1500 - - ……

从上的结果可以看出,kernel中的重复default route 已经被删除。 但是从下面的结果可以看到,odm中的default route 仍然存在。 HA_node2:/etc>lsattr -El inet0

authm 65536 Authentication Methods True

bootup_option no Use BSD-style Network Configuration True gateway Gateway True

hostname HA_node2 Host Name True rout6 IPv6 Route True

route net,-hopcount,0,,-if,en1,,0,172.16.18.1 Route True route net,-hopcount,0,,-if,en2,,0,172.16.18.1 Route True 2.通过chdev 删除odm中的route 信息:

HA_node2:/>chdev -l inet0 -a delroute=net,-hopcount,0,,-if,en1,,0,172.16.18.1 inet0 changed

HA_node2:/etc>lsattr -El inet0

authm 65536 Authentication Methods True

bootup_option no Use BSD-style Network Configuration True gateway Gateway True

hostname HA_node2 Host Name True rout6 IPv6 Route True

route net,-hopcount,0,,-if,en2,,0,172.16.18.1 Route True HA_node2:/>netstat –rn Routing tables

Destination Gateway Flags Refs Use If PMTU Exp Groups Route Tree for Protocol Family 2 (Internet): default 172.16.18.1 UGc 0 0 en2 - - - 9/8 172.16.18.1 UGc 0 0 en2 - - -

9.181.49.76 172.16.18.1 UGHW 1 772 en2 1500 - - 9.181.49.136 172.16.18.1 UGHW 1 272 en2 1500 - - 9.181.49.146 172.16.18.1 UGHW 1 49 en2 1500 - - 9.181.50.88 172.16.18.1 UGHW 2 489 en2 1500 - - 9.181.50.89 172.16.18.1 UGHW 3 59144 en2 1500 - -

9.181.50.92 172.16.18.1 UGHW 1 234 en2 1500 - - ......

执行chdev 删除默认路由之后,odm库和kernel中的多余默认路由都被删除。

1.42 42 限制用户使用su root 环境:(产品,平台,机型,软件版本,等)

aix

问题描述:

允许指定组中的用户使用su root命令, 其他的组则限制使用su root命令. 解答:

建立一个组,加入用户,并使这些用户具有su root的功能,方法如下:

# mkgroup -'A' users='user1,user2.....' adms='root' GroupName # chuser sugroups=GroupName root.

这样,包含在'GroupName'组内的用户,就可以su root, 不在'GroupName'组内的用户就不能su root

1.43 43 在AIX系统上运行 vmo 命令报 “vmo:1485-125 Tunables data inaccessible” 错误的原因及解决方法

环境:(产品,平台,机型,软件版本,等) 产品: AIX

平台: p5,pSeries, RS/6000 问题描述:

在AIX系统上运行 vmo 命令报 “vmo:1485-125 Tunables data inaccessible” 错误。 解答:

#vmo -a

vmo: 1485-125 Tunables data inaccessible.

Cannot access tunable parameters because/unix does not match the running kernel. 1> 检查/unix文件与当前内核正常。

#ls -l /unix

lrwxrwxrwx 1 root system 21 Jun 25 15:56 /unix -> /usr/lib/boot/unix_64 #ls -l /usr/lib/boot/unix_64

-r-xr-xr-x 1 root system 10780554 Jun 14 2006 /usr/lib/boot/unix_64 #bootinfo -K 64

2> 检查unix64文件与/unix链接文件的checksum值正常。 #sum /usr/lib/boot/unix_64

14331 10528 /usr/lib/boot/unix_64 #sum /unix

14331 10528 /unix 3>

#ls -l /etc/bosboot.sum

-r-------- 1 root system 18 Jun 20 2007 15:31 /etc/bosboot.sum

#uptime

02:32PM up 358 days, 23:13, 18 users, load average: 0.00, 0.01, 0.01 #date

Thu Jul 10 14:32:58 BEIST 2008

--> 上次系统启动时间大约是在2007/07/17左右

#lslpp -h bos.mp64

Fileset Level Action Status Date Time

---------------------------------------------------------------------------- Path: /usr/lib/objrepos bos.mp64

5.2.0.50 COMMIT COMPLETE 06/22/07 05:51:52 5.2.0.54 COMMIT COMPLETE 07/20/07 17:52:21 Path: /etc/objrepos bos.mp64

5.2.0.10 COMMIT COMPLETE 03/29/07 05:51:54

从上面的lslpp -h bos.mp64输出结果可以发现问题原因为系统于2007-06-22初始安装, 在2007-07-20安装过补丁但是没有重启系统导致,重新启动系统问题解决。

1.44 44 在hacmp 环境移动persistent ip报错:1800-106 An error occurred cllssvcs: No communication interfaces found 环境:

pSeries AIX 5300-04csp HACMP 5.3 sp4 问题描述:

客户在一个alias网络的没有service Ip 的节点上,想通过手动方式将persistent IP从一个网卡移到另外一个网卡,可以通过下面的smit菜单实现: System Management (C-SPOC)

-> HACMP Communication Interface Management

--> Swap IP Addresses Between Communication Interfaces 在aix 5300下执行,可能会报下面的错误,并执行失败: 1800-106 An error occurred:

cllssvcs: No communication interfaces found 解答:

该问题需要通过安装补丁IY84234解决。

1.45 45 镜像VG后,如何使QUORUM真正生效

内容提要:

在两个盘阵之间做LVM mirror后,如果没有做varyoffvg/varyonvg, 当一块盘坏掉后,整VG将varyoffvg,应用会异常退出.

测试1:做LVM mirror后,没有做varyoffvg/varyonvg,当一块盘坏掉后,

可以从错误日志中看到QUORUM丢失, VOLUME GROUP CLOSING的错误信息: --------------------------------- LABEL: LVM_SA_QUORCLOSE

IDENTIFIER: CAD234BE .

Description

QUORUM LOST, VOLUME GROUP CLOSING Probable Causes

PHYSICAL VOLUME UNAVAILABLE .

---------------------------------

用lsvg命令检测,QUORUM的值显示正常.是DISABLE的状态. QUORUM: 1

测试2:做LVM mirror后,重新varyoffvg/varyonvg, 当一块盘坏掉后,VG是状态正常.

说明DISABLE QUORUM后,varyoffvg/varyonvg 后才会生效

1.46 46 系统启动后IP地址与初始设置不同 环境:(产品,平台,机型,软件版本,等)

AIX

问题描述:

用户不能使用初始设定的a段地址登陆系统,经检查有如下情况.

1.通过ifconfig -a 检查出en0,en1在使用c段地址:en0:192.168.0.167 ,en1:192.168.0.168,并使用default 192.168.0.1 的路由.

2.但通过smitty tcpip ,又检查出en0和en1分别属于a段地址: en0: 10.1.1.1,en1: 10.1.1.2.这些地址是用户初始设定的正确地址.

3.使用rmdev -dl en0 ,rmdev -dl en1, 然后使用 smitty inet 为 en0,en1 重新创建a段地址.系统重起后,现象1,2依然存在. 解答:

这是因为动态主机配置协议(DHCP)客户端程序dhcpcd被启用,这个程序允许AIX系统从网络上的DHCP服务器自动获取动态的IP地址和TCP/IP配置信息。

1.运行 ps -ef | grep dhcpcd 命令.

2.运行netstat -rn 检查路由表的情况。

如果检查出dhcpcd deamon被打开,使用如下方法关闭DHCP :

方法1:

编辑 /etc/rc.net ,查找是否存在变量 USE_DHCP,如果存在,设置为USE_DHCP=\ 编辑 /etc/rc.tcpip ,注释掉启动/usr/sbin/dhcpcd的那一行

运行 ps -ef | grep dhcpcd ,获得 dhcpcd的pid,运行 kill -9 使用smit tcpip,重新配置en0,en1,和hostname

方法2:

运行smit dhcpcd ,选择Stop Using the dhcpcd Subsystem,选择BOTH 使用smit tcpip,重新配置en0,en1和hostname

1.47 47 在AIX下如何查看光纤卡的型号及类型? 我们来以 6239 FC Adapter 举例说明:

#lsdev -Cc adapter

fcs0 Available 2V-08 FC Adapter #lscfg -vpl fcs0

DEVICE LOCATION DESCRIPTION fcs0 2V-08 FC Adapter

Part Number.................00P4295 EC Level....................A

Serial Number...............1D3290C344 Manufacturer................001D FRU Number..................00P4297 Device Specific.(ZM)........3

Network Address.............10000000C9358BC4 ROS Level and ID............02E01035 Device Specific.(Z0)........2003806D Device Specific.(Z1)........00000000 Device Specific.(Z2)........00000000 Device Specific.(Z3)........03000909 Device Specific.(Z4)........FF601032 Device Specific.(Z5)........02E01035 Device Specific.(Z6)........06631035 Device Specific.(Z7)........07631035

Device Specific.(Z8)........20000000C9358BC4 Device Specific.(Z9)........HS1.00X5 Device Specific.(ZA)........H1D1.00X5 Device Specific.(ZB)........H2D1.00X5 Device Specific.(YL)........U1.9-P1-I1/Q1 PLATFORM SPECIFIC Name: fibre-channel Model: LP9802

Node: fibre-channel@1 Device Type: fcp

Physical Location: U1.9-P1-I1/Q1

我们可以通过在下面的总结分类表中查询#lscfg -vpl fcs0输出中的Part Number号码来进行定位。

Part Number.................00P4295

查询结果00P4295对应的是6239 2 Gigabit 光纤通道 PCI-X 适配器。

================================================================================================== 光纤卡总结分类表:

FC 6227 adapter: FC-6227 1 Gigabit 光纤通道 PCI-X 适配器。 PN:

03n4167

24l0023 09p4038 09p1162 .

FC 6228 adapter: FC-6228 1 Gigabit 光纤通道 PCI-X 适配器。 PN:

03n2452 09p5079 00p2995 00p4494 80p3388 80p4383 .

FC 6239 adapter: FC-6239 2 Gigabit 光纤通道 PCI-X 适配器。 PN:

00p4295 80P4381 80P6415 .

FC 5716 adapter: FC-5716 2 Gigabit 光纤通道 PCI-X 适配器。 PN:

80p4543 03N6441 03N7069 .

FC 1977: FC-1977 2 Gigabit 光纤通道 PCI-X 适配器。 PN:

80P6101 80P6455 03N6439 03N7067 .

FC 1957: FC-1957 2 Gigabit 光纤通道 PCI-X 适配器。

PN/FRU: 03N4698 03N6440 03N7068 .

FC 5758 adapter: FC-5758 4 Gigabit 单口光纤通道 PCI-X 2.0 适配器。 PN: 03n5014 46K6838 .

FC 1905: FC-1905 4 Gigabit 单口光纤通道 PCI-X 2.0 适配器。

PN:

03N5014 03N5005 .

FC 5759 adapter: FC-5759 4 Gigabit 双口光纤通道 PCI-X 2.0 适配器。 PN:

10N8620 03N5029 .

FC 1910: FC-1910 4 Gigabit 双口光纤通道 PCI-X 2.0 适配器。 PN:

10N8620 03N5029 03N5020

1.48 48 报错GS_MESSAGE_ST解决办法

环境:(产品,平台,机型,软件版本,等)报错GS_MESSAGE_ST解决办法 问题描述:errpt 报错GS_MESSAGE_ST如下 LABEL: GS_MESSAGE_ST IDENTIFIER: A96B4002

Date/Time: Fri Jun 13 17:04:35 BEIST 2008 Sequence Number: 42337 Machine Id: 00C5502E4C00 Node Id: alsfrta Class: O Type: INFO

Resource Name: grpsvcs Description

Group Services informational message Probable Causes

Informational message Failure Causes

Informational message Recommended Actions NONE

Detail Data

DETECTING MODULE

RSCT,TraceStream.C,1.87,761 ERROR ID

60.oOd0XUXI6/5x30IAk.1.................... REFERENCE CODE

DIAGNOSTIC EXPLANATION

ERROR writing to log file /var/ha/log/grpsvcs_1_120.pdvclust1(rdstate=4 errno=9[A file descriptor does not 解答:

1.hacmp在线解决办法:

mv /var/ha/log/grpsvcs_1_120.pdvclust1 /var/ha/log/grpsvcs_1_120.pdvclust1.ORIG .

touch /var/ha/log/grpsvcs_1_120.pdvclust1 2.-停止hacmp服务

-删除所有的文件/var/ha/log/grpsvc* -启动hacmp服务

3.-忽略GS_MESSAGE_ST报错 -增加aix错误日志缓存

-监控rsct服务日志相关文件系统,例如hd3(/tmp),hd9var(/var),防止J2_FS_FULL错误导致rsct服务日志出错

1.49 49 如何将syslog信息重定向到远程服务器

内容提要:

将log信息(priority level=notice)从SERVER_A发送到SERVER_B上, 在 SERVER_A上:

- 在/etc/syslog.conf文件中添加以下命令行,这会将SERVER_A的log信息传送到SERVER_B上,

*.notice @SERVER_B - 重启syslogd服务

#stopsrc -s syslogd #startsrc -s syslogd 在 SERVER_B上:

- 在/etc/syslog.conf文件中添加以下命令行,这会将SERVER_A的log信息记录到SERVER_B 的/tmp/test.log, *.notice /tmp/test.log - 重启syslogd服务 #stopsrc -s syslogd #startsrc -s syslogd 测试:

在SERVER_A上, 执行: #logger IBM test 在SERVER_B上, cat /tmp/test.log. 会看到以下信息:

Apr 23 00:23:10 SERVER_A Message forwarded from SERVER_A: root: IBM test

1.50 50 var使用率100%处理一例 内容提要:

df -k 检查/var目录使用率100%:

Filesystem 1024-blocks Used Free %Used Iused Ifree %Iused Mounted on /dev/hd9var 851968 850696 1272 100% 538 212454 1% /var 用du命令检查,/var使用率很小: du -sk /var 27893 /var 用fuser检查:

fuser -dV /var /var:

inode=2052 size=1361738 fd=0 6794 inode=4158 size=812348956 fd=0 8256 进程ID8256打开的文件大小接近/var的大小 用ps命令找到相应的进程并做相应处理:

ps -ef

root 8256 6196 0 Sep 08 - 0:01 /usr/sbin/snmpd stopsrc -s snmpd startsrc -s snmpd

用du命令检查,/var使用率显示正常: df -k /var %Used 7%

1.51 51 镜像VG后,如何使QUORUM真正生效

内容提要:

在两个盘阵之间做LVM mirror后,如果没有做varyoffvg/varyonvg, 当一块盘坏掉后,整VG将varyoffvg,应用会异常退出.

测试1:做LVM mirror后,没有做varyoffvg/varyonvg,当一块盘坏掉后,

可以从错误日志中看到QUORUM丢失, VOLUME GROUP CLOSING的错误信息: --------------------------------- LABEL: LVM_SA_QUORCLOSE IDENTIFIER: CAD234BE .

Description

QUORUM LOST, VOLUME GROUP CLOSING Probable Causes

PHYSICAL VOLUME UNAVAILABLE .

---------------------------------

用lsvg命令检测,QUORUM的值显示正常.是DISABLE的状态. QUORUM: 1

测试2:做LVM mirror后,重新varyoffvg/varyonvg, 当一块盘坏掉后,VG是状态正常.

说明DISABLE QUORUM后,varyoffvg/varyonvg 后才会生效

1.52 52 把mksysb文件制作成引导恢复光盘

内容提要:把mksysb文件制作成引导恢复光盘

说明:普通的mksysb时只能直接备份到光盘上,而如果选择备份成一个文件的话,需要用NIM的方式才能用它来恢复系统。那么客户在做没有DVD刻录光驱和磁带机的系统备份就受到了很大的限制。下面的步骤可以把某一个mksysb的映像文件制作成可由其他操作系统刻录的光盘映像文件来实现系统备份。下文中10.1.19.110是没有连接外网的一台AIX业务主机,而10.1.11.53则是连接到外网(Windows终端)的非业务AIX机器。当然,下面的3,5,6三步也可以被单独执行于不需要涉及nfs操作的环境中。

在10.1.19.110上做mksysb,然后用10.1.11.53来做cdimage,然后刻录成引导光盘 1、首先在10.1.11.53上建一个目录/test和/test/temp和/test/finalDVD,并用smit nfs把/test设置为网络输出目录。

2、在10.1.19.110上mount 10.1.11.53:/test /mnt 3、在10.1.19.110上mksysb -iX /mnt/image.19.110 4、在10.1.19.110上umount /mnt

5、在10.1.11.53上,mkcd -m /test/image.19.110 -C /test/temp -I /test/finalDVD -S -L 6、通过ftp把10.1.11.53上的DVD光盘映像下载到笔记本电脑,并刻录成DVD恢复光盘 其中5里比较关键的是-I和-S的两个参数: -I cd_image_dir:Specifies the directory or file system where the final CD images are stored before writing to the CD-R, DVD-R or DVD-RAM device. -S :Stops mkcd before writing to the CD-R, DVD-R or DVD-RAM without removing the final CD images. The -S flag allows multiple CD sets to be created, or for CDs to be created on another system.

在定义了-S之后,mkcd命令并不执行刻盘操作,而在finalDVD内保存了即将刻录到光盘中的CD映像文件。客户可以用windows客户端下载下来这个映像文件刻录成光盘作为系统备份。

1.53 53 如何将文件系统从一个vg移动至另一个vg 解答:

1. 我们先在rootvg中创建一个文件系统,例如/sunsmall #lsvg -l rootvg rootvg:

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT fslv04 jfs2 2 2 1 open/syncd /sunsmall #more /etc/filesystems /sunsmall:

dev = /dev/fslv04 vfs = jfs2

log = /dev/hd8 mount = false options = rw account = false 2. 卸载该文件系统

#umount /sunsmall #lsvg -l rootvg

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT fslv04 jfs2 2 2 1 closed/syncd /sunsmall

3. 使用cplv命令将该lv移动至另一个vg,例如datavg中

#cplv -v datavg fslv04

cplv: Logical volume fslv04 successfully copied to fslv00 #lsvg -l datavg

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT loglv00 jfs2log 1 1 1 open/syncd N/A

dumplv jfs2 4864 4864 7 open/syncd /dump fslv00 jfs2 4 4 1 closed/syncd N/A

我们可以看到datavg中产生了一个新的lv。 4. 修改/etc/filesystems,使得文件系统/sunsmall对应于datavg中的新的lv和datavg中的log设备(如果该log设备不是现存的,则需要单独创建)。 #more /etc/filesystems /sunsmall:

dev = /dev/fslv00 vfs = jfs2

log = /dev/loglv00 mount = false options = rw account = false

5. 重新加载文件系统/sunsmall

#mount /sunsmall #lsvg -l datavg

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT loglv00 jfs2log 1 1 1 open/syncd N/A

dumplv jfs2 4864 4864 7 open/syncd /dump fslv00 jfs2 4 4 1 open/syncd /sunsmall

可以看到这个文件系统已经移动到了datavg中。 6. 删除旧的lv设备fslv04

#rmlv fslv04

Warning, all data contained on logical volume fslv04 will be destroyed. rmlv: Do you wish to continue? y(es) n(o)? y rmlv: Logical volume fslv04 is removed.

1.54 54 root密码未过期却提示过期 环境

平台: AIX 5L 问题

用root用户登陆系统提示密码过期,但expires, maxage以及maxexpired的设置都无异常 解答

下面是几种参数导致过期的报错信息:

1. 如果在smit chuser里的expires那一项指定了日期,过期了的话报3004-302:your account has expired can't login as root;

2. 如果是指定maxage,则在过了maxage之后报3004-610 You are required to change your password. Please choose a new one;

3. 时间太长过了maxexpires的话报3004-327 Your password has been expired for too long.3004-321 Please see the system administrator to change your password. 在/etc/security/user里面,如果两个用户的属性之间没有空行的话,最后一个用户的属性会被应用到之前用户里面,除非之前用户的部分内已经指定了同属性的具体情况。 更改之前:

root:

admin = true

SYSTEM = \registry = files loginretries = 0

account_locked = false rlogin = false maxexpired = -1 daemon: admin = true

expires = 0101000070

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

这样一来,root用户就应用了daemon用户的expires = 0101000070属性,从而导致了密码过期。

================================================== 更改之后:

root:

admin = true

SYSTEM = \registry = files loginretries = 0

account_locked = false rlogin = false expires = 0

maxexpired = -1 daemon: admin = true

expires = 0101000070

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

在进行了更改之后,root用户可以正常登录系统。可以建议客户用smit 菜单来进行用户属性的编辑工作,至少可以保证格式不会有错误