应用维护是一项细致的工作,在工作中除了要求技术人员工作严谨、认真负责外,还要求技术人员必须具备在各种突发事件中较高的处理能力和工作经验。随着工商银行两大数据中心的建立,工行核心业务数据集中到数据中心,各一级分行的工作重点转移到柜面业务系统、综合前置系统和历史数据查询系统等外围系统的维护工作方面,其中AIX操作系统在工行的使用比较广泛。在应用维护方面,工行使用AIX操作系统的应用主要有:综合前置系统、跨行支付系统、客户对账系统、历史数据查询系统、国际业务结算系统5个应用系统。通过几年来的工作实践,我们积累了一些AIX操作系统环境下应用系统的维护及性能优化的经验,归纳为5个方面,供同行借鉴。
  
  一、AIX系统数据安全措施
   在IBM小型机硬件配置期间,就应该考虑数据的安全性,系统资源的配置要满足容错处理的要求。主要应考虑以下几点:
  ①生产主机发生硬件故障后,备机可以马上自动接管应用系统;
  ②提高操作系统的硬件冗余,尽量减少单点故障对系统的影响;
  ③加强系统备份,减少系统版本升级造成的影响。
   针对以上要求,可以采取一些安全措施,主要是硬件资源的冗余备份、系统软件和应用软件的合理分布以及高可靠性集群软件的使用。我们的经验是:把AIX操作系统和HACMP(High Availability Cluster Multi-Processing)软件安装在rootvg上,因为rootvg损坏,系统将无法运行,即使通过备份磁带恢复,也会造成系统停机。因此在磁盘空间充裕的情况下,可考虑对rootvg作镜像。具体做法是将主机的两块内置硬盘做rootvg镜像,这样可提高系统的安全性,防止单块硬盘损坏对系统的影响,即使内置硬盘坏了一块,系统仍可正常运行。在建立rootvg镜像时,应尽量使用连接在不同SCSI上的硬盘,以做到负载均衡。另外,为提高系统的容错能力,可对磁盘阵列上的硬盘进行镜像配置(RAID0)或RAID5冗余配置,配置为datavg,在上面安装数据库和应用程序。为提高节点可靠性,可搭建HACMP集群环境,做到双机热备,即在2台互为备份的主机上配置HACMP参数,满足系统热备要求。在日常操作方面,要做好系统备份工作,定期对生产机做两个或两个以上的介质备份。
   
  1.rootvg的配置
   将hdisk0和hdisk1做成mirror,配置为rootvg。
  ①把hdisk0、hdisk1加到rootvg:smitty extentvg hdisk1、hdisk0 →rootvg。
  ②做mirror:mirrorvg -c 2 rootvg。
  ③在hdisk0、hdisk1上创建boot IMAGE:bosboot -ad hdisk0,bosboot -ad hdisk1。
  ④改变启动设备的顺序:bootlist -m normal hdisk0,hdisk1 cd0
   
  2.HACMP工作原理
   HACMP主要是对群集(cluster)资源的管理,根据应用复杂程度和配置的不同,其群集资源的接管时间在30秒到300秒不等,完全不需要人工干预。一个群集中的资源通常包括:应用程序、硬盘、卷组(VG)、文件系统、NFS文件系统、IP地址等。资源分属三类资源组(Resource Group):层递式(Cascading)、替换式(Rotating)、同时存取式(Concurrent)。不同类型的资源组对应不同的接管方式。一个群集中可以有几个资源组,它们可以分别是不同类型,因此,资源接管的方式可以多种多样,配置十分灵活。
   我们一般采用的是层递式方式,即热备份工作方式,其工作原理是:NodeA和NodeB都是资源组a的成员,该资源组a被设置成层递式方式,NodeA对其拥有最高优先级。因此NodeA在群集中处于active状态时,它会控制资源组a中的所有资源,此时NodeB处于闲置(idle)状态,仅当NodeA down掉时,NodeB才会接管资源组a,一旦NodeA重新加入群集,NodeB将释放资源组a?NodeA重新取得控制权。NodeB发生任何故障,不会造成任何影响。
  
  二、AIX系统维护经验
   
  1.故障信息的收集 
   收集故障信息对于判断、诊断故障原因,修复系统非常重要。我们通过检查系统错误报告?errorlog?、发给root用户的错误报告?mail?和检查hacmp.out?smit.log?boot.log等内容来判断系统是否发生故障,根据故障信息进行相应的处理。 
   (1)系统故障记录
   errdemon 进程在系统启动时自动运行,记录包括硬件、软件及其他操作信息,故障记录文件为/var/adm/ras/errlog,可备份下来或拷贝到别的机器上分析,使用errpt 命令(普通用户权限也可使用)。
   #errpt |more 列出简短出错信息
    #errpt -d H 列出所有硬件出错信息
   #errpt -d S 列出所有软件出错信息
   #errpt -aj ERROR_ID 列出详细出错信息
   (2)控制面板上的LED 代码 
   (3)SMS(System Management Service)故障记录
   当主控台出现键盘图标后(LED显示“E1F1时”)按1键。选择“Utilities”,选择“Error Log”,抄下8位故障代码。
   (4) Mail检查
   系统出现故障后会向root用户发mail,报告出错信息。通常系统出现故障后没有进行检查修复,系统还会定时以mail方式提醒root用户。 
   (5)运行故障诊断程序
   对系统硬件进行检查和诊断,当发现有硬件故障时应立即使用diag。
   #diag 
   > 选高级诊断(Advanced Diagnostic) 
   > 选问题诊断(Problem Determination)或选系统检查(System Verification) 
   diag运行后会给出SRN代码、故障设备名称及百分比数、地址代码等。 
   (6)其他用于收集系统信息的命令
   lsdev -C 系统设备信息
   lspv 查看物理卷信息
   lsvg 查看卷组信息
   lslpp 查看文件组信息
   lsattr 查看设备参数设置
   lscfg 查看VPD(Virtual Product Data)信息
   
  2.系统硬件故障定位
      IBM 小型机硬件故障定位方法包括小型机机柜上的显示面板上的Checkpoints信息,Error Code和SRNs。Checkpoints检查点是系统加电CMOS初始化程序   (IPL,Initial Program Load)运行后显示在机柜的显示面板上一系列信息。 
      IPL流程如下:当系统加电后,自动进入IPL流程,IPL流程包括4个步骤,
  ①Service Processor的初始化,始于系统加电,直到OK显示在机柜上的显示面板上为止。这个步骤会显示8xxx或9xxx checkpoints代码。
  ②由Service Processor引导的硬件初始化,始于按下机柜上的白色电源开关。这个步骤会显示9xxx checkpoints。“91FF”是最后的代码,标志着第3步的开始。
  ③系统固件的初始化,一个系统处理器接管控制并继续初始化系统资源,这个步骤会显示Exxx。“E105”是最后的代码,标志着第4步骤AIX启动的开始。在这个过程中还会显示各种位置码(位置码代表着系统的每一个部分)。
  ④AIX启动,当AIX开始启动时,显示面板上的代码为0xxx,同时位置码会出现在第二行。当AIX的登录窗口出现在控制台上时,第4步骤结束,同时显示面板上再无任何信息显示。 
      当系统运行发现错误时,SRNs码(Service request numbers,服务请求码)会以xxx-xxx的形式显示在显示面板上,同时在AIX的errorlog中也会进行登记;当SSA磁盘柜出现故障时,在磁盘柜前面板的液晶显示屏上会显示相应的SRNs,同时×××的显示灯会闪动,在AIX的errorlog中会登记相应错误信息,在出现问题后记录下代码,并告之IBM公司解决。 
   
  3.软件问题处理
   软件故障情况错综复杂,下面列举几个常见的故障处理方法。 
   (1)文件系统空间不够
   查看有没有“满”的文件系统。特别是/、/var、/tmp,不要超过90%。文件系统满可导致系统不能正常工作,尤其是AIX的基本文件系统。如/ ?根文件系统?满则会导致用户不能登录。用df-k查看。 
   # df -k 查看AIX的基本文件系统
   除/usr文件系统,其他文件系统都不应太满,一般不超过80%。 
   处理方法1:删除垃圾文件 
   # du -sk ? |sort -rn |head 
   查找出当前目录下占空间最大的子目录,逐层往下直到找出占空间最大的文件(要区分哪些目录是文件系统的 mount point,哪些是文件系统的子目录)。删除文件,释放空间。有时删除文件后空间并不马上释放,这是由于删除的文件正被某个程序打开。只有当这个程序停止后,空间才释放,有时甚至需要重启系统。 
   处理方法2:增加文件系统大小 
   # smitty chjfs 
   只要卷组?VG?中有剩余空间,文件系统可以在任何时候加大。 
   (2)检查文件系统的完整性
   # umount filesystem_name 
   # fsck -y filesystem_name 
   注意:文件系统必须先umount,再做检查和修复,否则将导致未知的后果。 
   (3)查看卷组信息
   查看是否有“stale”状态的逻辑卷。若有,用syncvg命令修复。 
   (4)检查内存交换区使用率
   检查使用率是否超过70%,若超过则用chps-sX pgname增加X个PP或用 mkps -a -n -sX myvg在myvg上增加一个PP数为X的内存交换区。 
   (5)小型机内存泄漏问题
   小型机出现内存泄漏,即系统或应用进程无法将使用过的内存释放,使可用内存的容量逐渐减少。如果可用内存降到某最小值将造成系统或应用程序无法FORK子进程,就会造成系统瘫痪。通常我们可以用ps和sar命令来查看小型机内存和CPU占用率的大概情况以及各进程的内存和CPU占用率的发展趋势。使用ps命令,可查看内存和CPU占用率的基本情况。找出其中占用内存数不断变大的进程,这个进程可能就已经发生了内存泄漏。 
   
  4.IBM HACMP 双机热备系统的管理和维护 
   (1)HACMP 双机系统的启动 
   以root用户身份分别进入系统各节点,执行# smit clstart命令。
   (2)HACMP 双机系统的关闭 
   以root用户身份分别进入系统各节点,执行# smit clstop命令。
   (3)查询HACMP 双机系统的状态 
   在双机系统的运行中,操作员只有知道双机系统的当前状态,才有可能对双机系统出现的异常情况进行恢复处理,保证双机系统的高可用性和高容错性。查询HACMP双机系统的状态,以root用户身份进入需要查询的节点,用# lssrc -g cluster命令检查HACMP双机软件在该节点是否已启动,系统显示3个active的信息,则说明HACMP 双机软件已正常启动。
   在确认双机软件HACMP 正常启动的情况下,在命令行执行# /usr/sbin/cluster/clstat -a命令查看双机系统的当前状态。
   
  5.网络故障处理 
   (1)网络不通的诊断过程
   ifconfig 查看网卡是否启动(up);netstat-i查看网卡状态;Ierrs/Ipkts和Oerrs/Opkts是否>1%;ping本机网卡地址;ping其他机器地址,如不通,在其机器上用diag检测网卡是否有问题。 
   在同一网中,子网掩码应一致。 
   (2)网络配置的基本方法 
   ①如需修改网络地址、主机名等,一定要用chdev 命令。
   # chdev -l inet0 -a hostname=myhost 
   # chdev -l en0 -a netaddr='112.0.15.1' -a netmask=255.255.255.0' 
   ②查看网卡状态:# lsdev -Cc-if
   ③确认网络地址:# ifconfig en0 
   ④启动网卡:# ifconfig en0 up 
   ⑤配置路由,有两种方式加入路由: 
   a.永久路由 
   # chdev -l inet0 -a route='112.1.15.2','112.0.15.254' 
   b.临时路由 
   # route add 112.1.15.2 112.0.15.254 
   用命令 netstat -rn 查看路由表 
   
  6.IBM公司的巡检流程
    IBM公司的巡检流程,对我们日常维护应重点关注的事项有所帮助,大家可以借鉴一下。
   (1)检查系统硬件情况:设备故障灯是否亮。
   (2)系统错误报告。
   (3)检查是否有发给root用户的错误报告。
   (4)检查hacmp.out,smit.log,boot.log。
   (5)关键系统的文件使用率不大于80%。
   (6)逻辑卷有否stale。
   (7)内存交换区使用率是否超过70%。
   (8)内存交换区的大小是否为物理内存的1.5倍。
   (9)检查备份情况(是否有系统备份、用户数据备份,磁带机是否需要清洗)。
   (10)检查通信设置(网卡、IP、路由表、ping、/etc/hosts、DNS设置等)。
   (11)是否有数据保护方式如RAID10/RAID5?是否有Hot Spare。
   (12)系统DUMP设置是否正确。
   (13)检查系统参数是否正确。
   (14)检查rootvg是否镜像。
   (15)检查errdemon?srcmstr是否正常运行。
   (16)检查机房环境(电压、湿度)。
   (17)检查系统性能:是否存在性能瓶颈?topas?vmstat?。
   (18)检查补丁程序(PTF)、微码(是否需要升级)。
   (19)进行HACMP测试:Cluster Verification。
   (20)进行系统硬件诊断:运行故障诊断程序(Diagnostic)。
   三、AIX系统参数优化
   AIX内核属于动态内核,核心参数基本上可以自动调整,因此当系统安装完毕后?应考虑修改的参数一般包括以下内容。
   
  1.系统用户的最大登录数maxlogin 
   maxlogin的具体大小可根据用户数设定,可以通过smitty chlicense命令修改,该参数记录在/etc/security/login.cfg文件中,修改在系统重新启动后生效。
   
  2.系统用户的limits参数 
   这些参数位于/etc/security/limits文件中,可以把这些参数设为-1?即无限制,可以用vi修改/etc/security/limits文件,所有修改在用户重新登录后生效。 
   
  3.Paging Space 
   检查Paging Space的大小,在物理内存<2G时,应至少设定为物理内存的1.5倍,若物理内存>2G,可作适当调整。同时在创建Paging Space时? 应尽量分配在不同的硬盘上,提高其性能。利用smitty chps修改原有Paging Space的大小或利用smitty mkps增加一块Paging Space。
   
  4.系统核心参数配置 
   利用lsattr -Elsys0检查maxuproc,minpout,maxpout等参数的大小。maxuproc为每个用户的最大进程数?通常如果系统运行Oracle?应调整maxuproc,将Default:128调整到500,maxuproc增加可以马上生效。当应用涉及大量的顺序读写而影响前台程序响应时间时,可考虑将maxpout设为33?minpout设为16,用smitty chgsys命令设置。
   
  5.文件系统空间的设定 
   一般来说,文件系统/、/usr、/var、/tmp的使用率不应超过80%,/tmp建议至少为300M,文件系统满将导致系统不能正常工作,尤其是AIX的基本文件系统,如/?根文件系统?满则会导致用户不能登录。用df 查看:#df-k(查看AIX的基本文件系统),利用smitty chfs扩展文件系统的空间。 
   
  6.激活SSA Fast-Write Cache 
   利用smitty ssafastw激活每一个逻辑盘hdiskn的Fast-Write Cache:选择硬盘后,把Enable Fast-Write改为Yes后,回车即可。 
   
  7.High water mark for pending write I/Os per file?maxpout?和Low water mark for pending write I/Os per file配置
   其缺省值为0,在双机环境中一般应将High water mark设为33?Low water mark设为24,这两个参数可用smitty chgsys来设置。 
   
  8.syncd daemon的数据刷新频率 
   该值表示刷新内存数据到硬盘的频率,缺省值为60,一般可改为20,也可根据实际情况更改。该参数通过/sbin/rc.boot配置,将nohup/usr/sbin/syncd 60>/dev/null 2>&1&参数中的60改为20即可。
  
  四、AIX系统备份和恢复
   备份和恢复是系统管理员经常要做的事情,主要包括rootvg备份和用户数据备份。
   
  1.操作系统和系统程序的备份
   #tctl -f /dev/rmt0 rewind 
   #smit mksysb 
   在“备份设备或文件”中添入“/dev/rmt0”后回车,系统会运行很长时间,等到屏幕显示OK后拿出磁带。这时候,系统备份完成。mksysb仅备份rootvg中已安装的文件系统。
   
  2.用户数据备份
   (1)常用磁带机选项 
   /dev/rmt0? 若选择/dev/rmt0,在插入磁带和写完一次磁带时,磁带机都将磁带反绕到头。因此?下一次备份文件将覆盖本次备份。
   /dev/rmt0.1?若选择/dev/rmt0.1?则插入磁带和写完一次磁带时,磁带机均不反绕磁带。因此,一盘磁带可以连续备份几个文件或文件系统。
   (2)#smit fs 
     选择“备份文件系统”,输入要备份的“文件系统名称”,输入“/dev/rmt0.1”,重复上述操作即可在同一盘磁带上备份多个文件系统。
   
  3.rootvg的恢复
   启动机器进入维护模式,当出现“Welcome to Base Operating System Installation and Maintanence”时,选3 “Start Maintenance Mode for System Recovery”,要恢复系统,继续选4“Install from a System Backup”,出现“Choose mksysb Device”画面,选“/dev/rmt0”并插入磁带后回车,系统自动恢复操作系统。
   
  4.用户数据恢复
     #tctl -f /dev/rmt0 rewind 
     #smit fs 
     选择“恢复文件系统”,添入“设备名称”和“目标目录”,系统会自动恢复相应目录。
  
  五、AIX系统日常检查
   AIX系统日常检查工作是应用维护非常重要的部分,可以把系统故障排除在萌芽阶段,以下日常检查很有参考价值。
   (1)硬件检查
   检查各指示灯状态和各物理设备的可用情况。
   (2)进程检查
   检查是否有死进程,使用ps -ef命令列出正在运行的所有进程的各种信息。
   (3)文件系统是否满
   适用df-k 命令可以以k为单位检查文件系统的使用率。
   (4)检查系统出错日志
   使用errpt |more命令检查,清除现有的log?Errclear 0。
   (5)检查系统合法/非法登录情况
   使用Last命令检查登录地点。
   (6)检查系统是否有巨大的Core文件生成
   使用find / -name core-print命令检查。对Core文件,一般直接删除即可。
   (7)系统性能检查
   ①CPU性能:使用Vmstat? topas命令检查。
   ②内存使用情况:使用topas,vmstat命令检查。
   ③检查IO平衡使用情况:使用iostat命令检查。
   ④交换空间使用情况:使用lsps -a命令检查。
   (8)Mail检查