Gih's Blog

只言片语
Posts tagged as aix

AIX中重命名设备

2011-07-18 by gihnius, tagged as aix

从AIX 6.1 TL6开始, 系统提供了一个简单的重命名设备的命令rendev.

例如:

 # rendev -l hdisk1 -n hdisk2 
而此前版本可要花一翻周折:
 # odmget -q"name=hdisk1" CuDv
CuDv:
name = "hdisk1"
status = 1
chgstatus = 0
ddins = "scdisk"
location = "10-60-00-5,0"
parent = "scsi0"
connwhere = "5,0"
PdDvLn = "disk/scsi/scsd"

 # rmdev -l hdisk1 -d
hdisk1 deleted

 # mkdev -l hdisk2 -c disk -s scsi -t scsd -p scsi0 -w 5,0
hdisk2 Available 
...

bootlist: Multiple boot logical volumes found

2011-07-01 by gihnius, tagged as aix

运行bootlist出现下面报错:

 # bootlist -m normal hdisk1 hdisk2
0514-229 bootlist: Multiple boot logical volumes found on 'hdisk1'.
Use the 'blv' attribute to specify the one from which to boot. 
这是由于 hdisk1 上存在多个 boot logical volumes (BLV). 要避免这个错误, 需要清除磁盘的 BLV 的引导记录 再重新建立:
 # chpv -c hdisk1
# chpv -c hdisk2 
确认这两个盘都不能再用于启动:
 # ipl_varyon -i 
然后重新建立 Boot image 并写入 boot recorder:
# bosboot -ad /dev/hdisk1
bosboot: Boot image is 38224 512 byte blocks.
# bosboot -ad /dev/hdisk2
bosboot: Boot image is 38224 512 byte blocks 
再重新添加 bootlist:
 # bootlist -m normal hdisk1 hdisk2 
也可以采用临时方法避免这个报错, 就是指定boot lv:
 # bootlist -m normal hdisk1 blv=hd5 hdisk2 blv=hd5 
但以后运行还是会报.

AIX中如何查看设备有哪些属性是可以更改的

2011-06-28 by gihnius, tagged as aix

lsattr可以查看一个设备的属性, 其输出中的最后一栏总是 True 或者 False, True代表那个属性允许修改, False表示那个属性是 Read Only 的.

-$ lsattr -El hdisk0
PCM             PCM/friend/scsiscsd                         Path Control Module           False
algorithm       fail_over                                   Algorithm                     True
dist_err_pcnt   0                                           Distributed Error Percentage  True
dist_tw_width   50                                          Distributed Error Sample Time True
hcheck_interval 0                                           Health Check Interval         True
hcheck_mode     nonactive                                   Health Check Mode             True
max_transfer    0x40000                                     Maximum TRANSFER Size         True
pvid            000b45c0688a5c5d0000000000000000            Physical volume identifier    False
queue_depth     3                                           Queue DEPTH                   False
reserve_policy  single_path                                 Reserve Policy                True
size_in_mb      73400                                       Size in Megabytes             False
unique_id       2B08004F478B0FHUS153073VL380008IBM   H0scsi Unique device identifier      False
对于可修改的属性,一般都具有一个取值范围:
-$ lsattr -Rl hdisk0 -a dist_tw_width
10...1000 (+1) 
知道设备有哪些可更改属性后就可以使用 chdev 根据需求来修改相应的属性的值.

利用AIX工具排除网络故障

2011-06-27 by gihnius, tagged as aix

网络问题,包括网络连接和网络性能两大方面,各自又包括配置错误或物理故障等原因. 系统管理员可以利用AIX系统自带的工具,对网络的连接及网络性能问题进行检测和排除. 这些工具包括: ping, netstat, tcpdump, iptrace...

我们知道网络通信是由一种网络通信模型: OSI(开放系统互连)来指导的. OSI 把网络从逻辑上分为了7层。每一层都有相关,相对应的物理设备,比如路由器,交换机. OSI 七层模型是一种框架性的设计方法, 建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题, 其最主要的功能使就是帮助不同类型的主机实现数据传输. 

OSI七层模型与那些命令的关联:

Read more »

常用的smit快捷路径及查找方法

2011-06-19 by gihnius, tagged as aix

最常用的无非是下面几个:

  • dev 设备管理
  • diag 诊断
  • jfs 定期档案管理系统
  • lvm 逻辑卷册系统管理员管理
  • nfs NFS管理
  • sinstallp 软件安装及维护
  • spooler 列印队列管理
  • system 系统管理
  • tcpip TCP/IP管理
  • mktipip 配置主机名和IP
  • user 使用者管理
  • mkps 建立交换区空间信息
  • chtz 修改系统时区
  • date 修改系统时间
  • chgaio 修改异步IO
  • chgsys 更改最大进程数
  • chlicense 更改系统用户数
  • 我还用emacs的org-mode整理了一份比较完整的SMIT快捷路径, 该文件是直接把org-mode转换为网页的.还可以即时搜索系统提供的smit fast path. 这些信息一般存放在

    /usr/lib/objrepos
    目录下的ODM数据库里. 可以通过
    odmget sm_menu_opt
    查看. 通过以下脚本可以查找任意一个 fast path:
    ODMDIR=/usr/lib/objrepos odmget sm_menu_opt | perl -e 'while(<>) {print "$2\n" if /(next_id|\bid\b)\s=\s\"(.*)\"/}' | grep -i 'search' 
    用上面的 'search' 替换你要查找的.

    获取 FC HBA 卡的 WWN

    2011-06-18 by gihnius, tagged as aix

    FC HBA卡就是主机跟FC(存储网络)连接时使用的一种接口卡,类似连接以太网的网卡,而WWN(World Wide Name)就是类似于以太网网卡的MAC地址.

    可以使用以下命令查看系统的 WWN:

    for i in $(lsdev -C|awk '/^fcs/ {print $1}');do echo "$i\t$(lscfg -vl $i|awk -F. '/Network Address/ {print $NF}')" ;done 
    
    fcs0      10000000C969963E
    fcs1      10000000C9696EA9 

    扩大AIX的(errpt)error log空间

    2011-06-17 by gihnius, tagged as aix

    默认的AIX error log空间比较小,如果报错很多,早前的就会被覆盖.

    列出当前的error log属性:

    #/usr/lib/errdemon -l
    Error Log Attributes
    --------------------------------------------
    Log File                /var/adm/ras/errlog
    Log Size                491520 bytes
    Memory Buffer Size      32768 bytes
    Duplicate Removal       true
    Duplicate Interval      10000 milliseconds
    Duplicate Error Maximum 1000 
    当前值太小了,480KB,远远不够. 我要把它扩大为 48MB.
    #/usr/lib/errdemon -s 50331648 
    再确认:
    #/usr/lib/errdemon -l
    Error Log Attributes
    --------------------------------------------
    Log File                /var/adm/ras/errlog
    Log Size                50331648 bytes
    Memory Buffer Size      32768 bytes
    Duplicate Removal       true
    Duplicate Interval      10000 milliseconds
    Duplicate Error Maximum 1000 
    Memory Buffer Size通常都够用, 但不排除有些报错日志包含很多信息(比如自动diag的信息),这时系统会报出类似以下的错误:
    syserrlg       ERROR LOGGING BUFFER OVERFLOW 
    可以通过
    #/usr/lib/errdemon -B BufferSize 
    来修改Memory Buffer Size的值. 注意的是,BufferSize 必须是存储页大小(4KB)的整数倍.

    删除AIX中的多重默认路由

    2011-06-15 by gihnius, tagged as aix

    很少人会在明知己有默认路由后还继续添加默认路由, 多重默认路由会造成系统来回轮询而影响性能. 这种情况多数是有一些脚本包含了添加默认路由的命令: route add 0 xxx.xxx.xxx.xxx. 所以平时执行脚本前要搞清楚脚本会产生哪些行为. 尽可能保证你 do 的还能够 undo !.

    多重路由可在 netstat -nr 里看到, 多个 default 的路由表. 也可以在 ODM里看:

    # odmget -q "attribute=route" CuAt
    
    CuAt:
            name = "inet0"
            attribute = "route"
            value = "net,-hopcount,0,,,,,,-static,0,172.11.2.1"
            type = "R"
            generic = "DU"
            rep = "s"
            nls_index = 0
    
    CuAt:
            name = "inet0"
            attribute = "route"
            value = "net,-hopcount,0,,,,,,-static,172.11.12.4,172.11.9.1"
            type = "R"
            generic = "DU"
            rep = "s"
            nls_index = 0
    
    CuAt:
            name = "inet0"
            attribute = "route"
            value = "net,-hopcount,0,,0,172.11.2.1"
            type = "R"
            generic = "DU"
            rep = "s"
            nls_index = 0
    
    CuAt:
            name = "inet0"
            attribute = "route"
            value = "net,-hopcount,0,,0,172.11.2.1"
            type = "R"
            generic = "DU"
            rep = "s"
            nls_index = 0 
    
    类似这样的
    "net,-hopcount,0,,0,172.11.2.1"
    才是默认路由, 这和 lsattr -El inet0 看到的应该是一样的. 上面最后两个就是重复了的默认路由.删除多余的路由表:
    chdev -l inet0 -a delroute="net,-hopcount,0,,0,172.11.2.1"
    可以用
    odmget -q "attribute=route" CuAt
    再次确认.

    AIX中删除网卡的地址

    2011-06-15 by gihnius, tagged as aix

    很多人删除ip地址都是用 ifconfig + rmdev. 不过我觉得 rmdev 就太折腾了.

    可以使用chdev更改网卡接口的属性. ip地址,网络掩码,网卡状态等都是属性:

    # chdev -l en0 -a state=down
    en0 changed
    # chdev -l en0 -a netaddr=''
    en0 changed
    # chdev -l en0 -a netmask=''
    en0 changed
    # 
    # lsattr -El en0
    alias4                      IPv4 Alias including Subnet Mask           True
    alias6                      IPv6 Alias including Prefix Length         True
    arp           on            Address Resolution Protocol (ARP)          True
    authority                   Authorized Users                           True
    broadcast                   Broadcast Address                          True
    mtu           1500          Maximum IP Packet Size for This Device     True
    netaddr                     Internet Address                           True
    netaddr6                    IPv6 Internet Address                      True
    netmask                     Subnet Mask                                True
    prefixlen                   Prefix Length for IPv6 Internet Address    True
    remmtu        576           Maximum IP Packet Size for REMOTE Networks True
    rfc1323                     Enable/Disable TCP RFC 1323 Window Scaling True
    security      none          Security Level                             True
    state         down          Current Interface Status                   True
    tcp_mssdflt                 Set TCP Maximum Segment Size               True
    tcp_nodelay                 Enable/Disable TCP_NODELAY Option          True
    tcp_recvspace               Set Socket Buffer Space for Receiving      True
    tcp_sendspace               Set Socket Buffer Space for Sending        True
    # 

    重新设置AIX用户密码的"最后更新"时间,避免过期

    2011-06-14 by gihnius, tagged as aix

    因为有一大批机器使用脚本自动登录主机执行命令,而每台主机都设置了密码过期的属性.懒得改密码,干脆直接更新密码的 lastupdate 属性.

    该属性登记在/etc/security/passwd里:

    adm:
        password = *
    
    informix:
        password = CLqVIRDs0/klU
        lastupdate = 1288948843
        flags =
    
    sms:
        password = bvpeLs2b3QfZQ
        lastupdate = 1071988131
        flags =
    
    tellin:
        password = D7xh0wTaRiTzw
        lastupdate = 1295440751
        flags = 
    lastupdate的值是一个用秒表示的时间. 可以用以下命令修改:
    chsec -f /etc/security/passwd -s username -a lastupdate=`perl -e 'print time'` 
    当然,这样 maxage就形同虚设了,即等于
    chuser maxage=0 username
    如果你的帐号比较重要,权限较大,建议还是老老实实修改密码吧!