☰
P740小机AIX 6.1安装与HACMP双机配置实战指南
2026/10/17 19:02:31 网站建设 项目流程

简介:IBM P740小机安装配置手册是一份基于真实项目实施经验整理的技术文档,面向AIX系统管理员、数据库运维与小型机实施工程师,覆盖从AIX操作系统安装、系统参数调优到HACMP高可用集群部署的完整流程。文档为doc格式,共1个文件,压缩包大小4.5MB,目录按实施顺序分段,便于直接查阅与打印。内容遵循现场实施顺序编写,包含limit参数设置、IOCP开启、fullcore、maxpout与minpout调整、maxuproc配置等内核优化要点,也涉及HBA卡参数、语言包与补丁安装、Oracle文件系统创建、SWAP与dump设置、操作系统镜像和文件系统大小调整等基础配置。其中HACMP部分详细记录了软件安装、补丁升级、网络参数配置、基于IP及串口心跳的集群通信、资源组创建、SVC IP及应用脚本添加等关键步骤,步骤间衔接清晰,可直接对照操作。已有1258人次学习下载,尤其适合正在实施IBM小型机项目或准备AIX/HACMP环境搭建的工程师作为步骤参考与排错依据。

1. 这份P740小机安装配置手册,到底能帮你少踩多少坑

几年前我接手某省操作风险管理系统项目时,手里就一份P740小机安装配置手册,从AIX 6.1裸机装系统、bundle补丁、内核参数,一路做到HACMP双机切换和EMC多路径,四十多个步骤几乎是逐条敲过来的。那会儿AIX资料不像现在这么好找,尤其HACMP串口心跳、资源组切换这些,网上说法五花八门,照着做翻车是常事。这份手册最值钱的地方在于它是实战产物,不是厂商文档的搬运,每一步都对应真实环境里的操作记录。适合刚接手AIX小机维护的系统工程师,也适合要给Oracle数据库做双机方案的DBA——你能从中看到一套完整的、可复现的交付流程,而不是零散的命令片段。

2. AIX 6.1系统安装与初始化:从开机按键到bundle补丁

2.1 安装前的硬件准备与启动顺序调整

P740前面板有个小液晶屏,装系统前要先弄清楚它的显示状态。正常待机时液晶屏显示的是当前主机名或默认的日期信息,当系统检测硬件时会出现01 N V=F字样,这个状态很关键——意味着机器已经完成自检,准备进入固件菜单。此时按一下白色按钮,同时把AIX 6.1安装盘第一张放进光驱,接下来会听到滴声,屏幕变白,这时再按2键进入管理菜单,输入默认管理密码admin,就能进SMS菜单调整启动顺序了。

我一般会先把启动顺序改成光盘优先,避免重复启动时又直接进了系统。具体操作是在SMS菜单里选择Multi-Boot或Start Options,把CD-ROM排到第一位,保存退出后重启,机器就会自动从光盘引导。这里有个细节容易被忽略:如果服务器是接串口终端操作的,看到的界面是纯文本菜单;如果是接了显示器和键盘,则可以看到图形化的SMS界面。两种方式操作逻辑一致,但文本菜单下更容易误选,每次选择前先看清编号再回车。

2.2 全新覆盖安装的菜单选择逻辑

从光驱启动后,第一屏会提示选择console主控台,按提示选中当前连接的终端或显示器即可。接下来选择安装语言,手册里明确要求选English,不建议选中文——中文字体在后续字符界面里容易乱码,排查问题时不方便。然后进入安装方式选择界面,这里有三个选项:Start Installation Now with Default Settings、Change/Show Installation Settings and Install、Start Maintenance Mode for System Recovery。

关键选择在第2项,进去之后要改动两处地方。第一处是安装方法,选New and Complete Overwrite,这个选项会完全覆盖目标磁盘上的所有数据;第二处是安装目标盘,选hdisk0。我见过有人图省事直接用默认设置安装,结果系统装到了hdisk1上,后面做镜像时盘符规划全乱套了。磁盘选择界面会列出所有磁盘的location code和容量,确认hdisk0对应的是板载盘位,再继续。

安装过程中系统会自动重启,重启后进入Configuration Assistant配置向导,这里主要做两件事:设置root密码(手册示例设为123456,实际生产建议用更复杂的密码)和关闭向导自启动。注意最后一步一定要选Exit the Configuration Assistant并确认不再启动,否则每次重启都会弹向导,很烦人。等看到Welcome to AIX 6.1的登录界面,操作系统的基本安装就完成了。

2.3 bundle安装与补丁包选择

系统装完别急着配参数,先把bundle装好。AIX安装光盘里带着几组bundle包,本手册要求必须装server和app-dev这两个,其中server对应基础服务组件,app-dev包含编译器和开发库——后面装Oracle时如果缺了app-dev里的包,会报一堆莫名其妙的依赖错误。如果安装时用的是串口终端而不是显示器,还要额外装cde的bundle,否则图形界面相关组件缺失,部分安装程序跑不起来。

安装bundle用# smitty installp进入安装菜单,选择Install Software from all Available Software,然后用F4键从软件列表里勾选。选包时有个技巧,先按/搜索bundle关键字,把server和app-dev整组选中,再搜索cde决定要不要装。安装完成后还需要单独补几个包:

# 安装基础文件系统相关包 smitty installp # 在软件列表中选择 bos.cifs_fs 和 bos.data # 安装所有 openssl、openssh 开头的包,用于启用SSH远程管理

这里说明一下:AIX默认只启用了telnet服务,生产环境直接用telnet管理不太安全,所以手册强调要装openssh。选包时可以用F4进入多选模式,输入openssl和openssh过滤,把匹配到的包全部勾上。装完这些,后续Oracle和HACMP依赖的基础环境就齐了大半。检查bundle是否装全,可以用lslpp -l | grep bos.查看关键文件集的状态,凡是显示COMMITTED的都算正常。

2.4 limit、IOCP与fullcore参数设置

基础软件装完后,开始动系统参数。第一个是limit限制,AIX里/etc/security/limits文件控制每个用户的资源上限,Oracle运行时对进程数和文件句柄的要求很高,默认值根本不够用。手册要求把核心参数全部改为-1,也就是unlimited:

cp /etc/security/limits /etc/security/limits.bak vi /etc/security/limits

修改后的关键内容如下:

core = -1 rss = -1 fsize = -1 data = -1 stack = -1 stack_hard = -1 cpu = -1 nofiles = -1

动limits之前先备份是个好习惯,改错了还能快速还原。core表示core文件大小,设为-1后进程崩溃会生成完整的core dump,方便后续排查;nofiles是单个进程能打开的文件描述符上限,Oracle的sga和pga分配以及监听进程都会受它影响,如果不放开,数据库跑一段时间就会出现“too many open files”之类的报错。改完这个文件不需要重启,重新登录用户即生效,但如果Oracle进程已经启动,需要重启实例才能读到新值。

接下来是IOCP,全称I/O Completion Port,相当于AIX的异步I/O完成端口。Oracle在AIX上强烈依赖异步I/O,所以必须确认iocp设备状态为Available:

lsdev -Cc iocp

如果输出显示iocp0 Defined,说明设备存在但没有启用,需要执行:

chdev -l iocp0 -a autoconfig=available cfgmgr -l iocp0

chdev修改设备配置,-a autoconfig=available让设备在系统重启后也保持可用状态;cfgmgr是重新扫描设备配置,让改动立即生效。另外还要检查fullcore开关,它决定系统崩溃时是否生成完整的内存转储:

lsattr -El sys0 | grep fullcore chdev -l sys0 -a fullcore=true

fullcore这个参数很多人会漏掉,默认是false,意味着crash dump只记录部分内存信息,遇到疑难内核问题根本没法分析。生产环境建议直接打开,磁盘空间不缺这一点。

3. 内核参数与文件系统改造:让P740适合承载Oracle

3.1 网络参数no命令全量拆解

AIX的网络参数调优不像Linux那样写在/etc/sysctl.conf里,而是用no命令动态调整。这份手册给了一整组针对Oracle数据库场景的推荐值,我拆开讲几个容易踩坑的:

no -p -o tcp_keepidle="1800" no -p -o tcp_finwait2="300" no -p -o tcp_sendspace="262144" no -p -o tcp_recvspace="262144" no -p -o tcp_nodelayack="1" no -p -o sb_max="2097152" no -p -o rfc1323="1" no -p -o tcp_ephemeral_low=9000 no -p -o tcp_ephemeral_high=65500

tcp_keepidle表示TCP连接空闲多少秒后开始发送探测包,设1800秒能减少无意义的保活包占用带宽;tcp_finwait2关系到连接关闭时的TIME_WAIT回收速度,设300秒避免大量短连接堆积;tcp_sendspace和tcp_recvspace是收发缓冲区大小,Oracle的SQL*Net传输大结果集时,缓冲区太小会成为瓶颈。sb_max是socket缓冲区的上限,sendspace和recvspace都不能超过它,所以这三个参数必须一起调。最后四个ephemeral参数划定了临时端口范围,数据库连接多的时候默认范围不够用,会报“cannot assign requested address”,我见过不下三次这类问题。

执行-p选项表示永久生效,-r表示仅对当前运行生效,重启后失效。这里no -r -o ipqmaxlen="512"用的就是-r,它调整的是IP队列长度,属于拥塞控制参数,重启后恢复默认也没关系,但如果系统正在承受突发流量,临时调大能缓解丢包。全部执行完后可以用no -a检查当前生效值。

3.2 AIO与VM参数:Oracle I/O路径上的两个关键开关

AIO(异步I/O)参数直接影响Oracle的数据文件读写效率。手册里的命令是:

ioo -p -o aio_maxservers=80

aio_maxservers表示系统最多允许的异步I/O服务进程数。这个值不是越大越好,一般按并行磁盘数的10倍估算,但上限不要超过80。太小的话数据库遇到大量并行I/O时会等待AIO服务器空闲,表现为I/O等待飙升,但CPU却很闲。-p让设置永久生效,改完不用重启。检查当前值用ioo -a | grep aio。

VM参数这块,Oracle在AIX上最容易出现的问题是文件系统缓存占用过多内存,导致数据库SGA被挤压缩。手册给出的这组命令是经典组合:

vmo -p -o numperm_global="0" vmo -p -o maxperm%=90 vmo -p -o minperm%=3 vmo -p -o maxclient%=90 vmo -p -o strict_maxperm=0 vmo -p -o strict_maxclient=1 vmo -p -o lru_file_repage=0 vmo -r -o page_steal_method=1

maxperm%控制文件缓存最多占用物理内存的百分比,设90%看起来很高,但配合lru_file_repage=0,内存回收时优先回收文件缓存页,不会去抢计算内存;strict_maxperm=0是关键中的关键——如果设成1,文件缓存一旦超过阈值会强制回收,造成严重的I/O抖动,Oracle性能会直线下降。minperm%设3%保证文件缓存不会被完全清空。page_steal_method=1是告诉虚拟内存管理模块使用更积极的内存回收算法,对数据库这类大内存应用更友好。这套参数从AIX 5.3到6.1都适用,但改完最好观察一段时间,用vmstat 1看内存页扫描情况再决定是否微调。

3.3 HBA卡参数:存储链路故障时能不能快速恢复

HBA卡参数调整的优先级不算高,但真遇到存储链路抖动时,有没有调过差别巨大。手册里的命令是这样一组:

chdev -l fscsi0 -a dyntrk=yes -a fc_err_recov=fast_fail -P chdev -l fcs0 -a num_cmd_elems=500 -P

dyntrk=yes开启动态跟踪,光纤通道链路异常时,HBA驱动会持续监测并尝试恢复;fc_err_recov=fast_fail最关键,它决定了链路故障后的报错策略——fast_fail模式下驱动器会立即返回错误给上层应用,Oracle就能快速切换到底层多路径的另一个路径,而不是卡在那里等待超时。如果设成delay或slow_fail,一次存储故障能让数据库挂起好几分钟。num_cmd_elems是HBA卡上命令控制块的数量,默认值偏小,高并发I/O时会导致命令队列满,表现为存储响应慢但存储本身没压力。

注意这组命令的-P选项只写入设备配置数据库,当前运行值不会变,必须重启系统才生效。所以我一般把HBA参数和后面要做的镜像、swap调整放一起,最后统一重启一次。改完可以用lsattr -El fscsi0确认参数是否写入成功。

3.4 文件系统、SWAP、dump与rootvg镜像

文件系统大小直接决定Oracle安装和运行时会不会爆盘。手册给了一张分配表,我按实际需求整理如下:

文件系统挂载点建议大小
root/6GB
/tmp/tmp10GB
/usr/usr10GB
/var/var90GB
/home/home10GB
/opt/opt10GB
/softcd/softcd10GB
/oracle/oracle50GB

这里/var给到90GB不是拍脑袋,AIX的系统日志和err demon日志容易膨胀,加上HACMP的集群日志也写在/var/hacmp下,给小了后面清理日志的频率会很高。/oracle放数据库软件和部分数据文件,50GB是最低配,如果后续要装更多组件,建议再扩到100GB。扩容用smitty chfs或chfs -a size=+10G /oracle,AIX的文件系统支持在线扩容,不需要停机。

SWAP大小手册要求与物理内存按1:1配,比如机器有16GB内存就配16GB swap。用smitty lvm进入页面空间管理,增加逻辑卷时,PP(物理分区)大小默认512MB,增加31个PP就是16GB。注意增加后要用lsps -a确认新空间激活状态,有时候添加后还需要再执行一次激活操作。dum设置方面,执行chdev -l sys0 -a autorestart=true确保系统在crash后自动重启,同时用smitty sysdumpdev把dump设备指向一个有足够空间的逻辑卷——默认dump位置往往不够,系统紧急转储时直接失败。

rootvg镜像这套操作是最后一步,必须在所有文件系统调整完再执行:

extendvg rootvg hdisk1 mirrorvg rootvg bosboot -ad hdisk1 bootlist -m normal cd0 hdisk0 hdisk1 shutdown -Fr

extendvg把hdisk1加入rootvg,mirrorvg开始镜像并同步数据,同步过程中用lsvg rootvg | grep STALE查看是否还有stale分区,等输出为空说明镜像完成。bosboot -ad hdisk1在hdisk1上重建引导映像,这一步漏掉的后果是:镜像做完了,但系统从hdisk1起不来。bootlist更新启动顺序,把两块盘都加进去,其中一块坏了系统会自动降级到另一块。最后一行的shutdown -Fr是强制重启,让镜像关系和HBA参数、内核参数全部生效。

4. HACMP双机配置:从软件安装到资源组切换测试

4.1 安装前的软件准备

HACMP(High Availability Cluster Multi-Processing)是AIX原生的双机热备软件,这套环境里用来跑Oracle数据库的自动故障切换。安装之前先确认操作系统补丁已经按手册要求打到6100-07-SP06,补丁没到位直接装HACMP,后面配置时容易遇到莫名其妙的报错。安装HACMP时有个原则:除了cluster.hativoli这个文件集不装,其他全部安装。

# 创建cdrom挂载点 smitty cdrfs # Device name: cd0 # Mount point: /cdrom # Mount AUTOMATICALLY: yes # 安装HACMP软件 smitty installp # 选择 Install and Update from ALL Available Software # 用F4勾选所有cluster包(排除cluster.hativoli)

这里说明一下:cluster.hativoli是HACMP对卷组管理需要的一个附加组件,但这个环境用的是EMC PowerPath多路径管理,底层卷管理走的是EMC的路径策略,不是AIX原生的并发卷组,装了反而可能干扰。安装完成后用lslpp -l | grep cluster检查关键文件集版本,确保两台机器的HACMP版本完全一致——版本不一致时同步配置会报错。

4.2 集群网络与串口心跳规划

HACMP的集群通信有两个层面:IP网络用于业务流量和集群消息,非IP网络用串口做心跳检测,避免IP网络故障时集群误判节点宕机。我在配置前先把IP规划写在表格里,两台机器逐项核对,这一步省得配置时手忙脚乱:

用途节点1节点2说明
boot IP192.168.1.11192.168.1.12私有网络,承载集群消息
service IP192.168.1.10192.168.1.10对外提供数据库服务的浮动IP
串口心跳tty0tty0双机直连串口线

boot IP必须走独立的物理网卡,不要和业务IP混在同一块网卡上,否则网卡故障时集群通信和业务同时中断,HACMP会误判并做脑裂处理。service IP是资源组的一部分,平时在哪台机器上就由哪台机器持有,故障切换时会自动漂移到另一台。配置IP用smitty mktcpip,给每块网卡配好IP后,用lsdev -Cc adapter确认网卡状态为Available。

串口心跳是这套双机方案最容易被忽略的部分。P740自带COM口,但有些机器默认只启用了tty0,串口心跳线接好后还要在系统里把串口设备打开。配置前用lsdev -Cc tty确认设备状态,如果是Defined,需要用smitty tty把它改为Available。串口参数建议统一设成9600波特率、8位数据位、1位停止位、无校验——两台机器的串口参数不一致时,HACMP同步会提示通讯失败,但排查起来非常隐蔽。

4.3 资源组、应用脚本与卷组的完整配置过程

集群的基本元素配置完,接下来是核心部分——资源组。资源组是HACMP管理的逻辑单元,里面包含service IP、逻辑卷组和应用脚本。我一般按这个顺序配置:

# 添加cluster名字 smitty hacmp # 选择 Cluster Nodes -> Add Cluster Names # Cluster Name: ops_risk_cluster # 添加集群节点 # Cluster Nodes -> Add Cluster Nodes # 分别添加node1和node2 # 添加基于IP的网络 # Cluster Networks -> Add IP Network # Network Name: net_boot # Boot IP地址段: 192.168.1.0 # 添加基于非IP的网络 # Cluster Networks -> Add Non-IP Network # Network Name: net_tty # 选择串口设备tty0

配置网络的顺序有讲究:先加IP网络再加非IP网络,加完基于IP的网络后,HACMP会自动扫描网卡并列出检测到的IP地址,这时要逐一核对哪些是boot IP、哪些是service IP——如果IP地址归属填错,资源组启动时会提示IP地址已经被占用。添加串口设备时,HACMP会要求确认串口连接的节点对,一般选tty0并且两节点互连即可。

资源组配置这里,手册里的做法是:

# 添加资源组 # Resource Groups -> Add Resource Group # Resource Group Name: ops_rs # 选择参与节点: node1, node2 # 启动策略: Cascading(级联) # 故障回切策略: Fallover(故障切换不回切) # 添加SVC IP到资源组 # Resource Groups -> Change Resource Group -> Add Service IP # Service IP: 192.168.1.10 # 添加应用脚本 # Resource Groups -> Change Resource Group -> Add Application Servers # 启动脚本: /home/oracle/start_db.sh # 停止脚本: /home/oracle/stop_db.sh

配置资源组时的启动策略我建议选Cascading加上Fallover:平时服务在node1运行,node1故障时切到node2,node1修复后并不自动切回,而是等运维人员手动把服务切回来——自动回切在生产环境是个隐患,数据库实例起来后如果node1自动夺回资源组,中途可能造成数据短暂不可用。应用脚本是HACMP对外提供服务的核心,脚本必须能在没有终端的环境下独立运行,里面用到的所有路径都写成绝对路径,脚本末尾必须返回0表示成功,否则HACMP认为启动失败会反复重启脚本。

# /home/oracle/start_db.sh #!/bin/bash export ORACLE_HOME=/oracle/product/11.2.0/db_1 export ORACLE_SID=orcl su - oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba << EOF startup exit; EOF" exit 0 # /home/oracle/stop_db.sh #!/bin/bash export ORACLE_HOME=/oracle/product/11.2.0/db_1 export ORACLE_SID=orcl su - oracle -c "$ORACLE_HOME/bin/sqlplus / as sysdba << EOF shutdown immediate exit; EOF" exit 0

脚本的逻辑说明:启动脚本用startup命令拉起Oracle实例,并把执行结果通过exit 0返回给HACMP——只有脚本返回0,HACMP才认为应用启动成功;停止脚本用shutdown immediate关闭数据库,保证数据文件的一致性。注意脚本中的Oracle路径要和你实际安装位置完全一致,这个脚本是在Oracle软件安装完成后才能创建,创建后记得chmod 755给执行权限,并先用root手动跑一遍验证。

卷组加入资源组这步,对应手册后面创建VG的部分。EMC PowerPath装好后,存储盘会映射为hdiskpower开头的设备,用lsdev -Cc disk确认PowerPath设备状态,然后:

# 创建卷组并加入资源组 smitty hacmp # Resource Groups -> Change Resource Group -> Add Volume Groups # 选择卷组: sqdbvg, hddbvg

卷组的创建需要和HACMP配置联动:先在单机上创建卷组并用varyonvg激活,确认数据文件能正常读写后,再把卷组加入HACMP资源组。HACMP接管卷组时会自动处理varyonvg和varyoffvg的调度,不需要在应用脚本里写。另外要注意:加入资源组的卷组在HACMP启动后会被集群管理,平时两台机器不能手动varyon同一个卷组,否则会造成数据损坏。

4.4 同步配置、启动集群与切换测试

配置完成后,最容易被忽略但最重要的操作是同步配置。HACMP的配置信息存在每台机器的ODM库里,必须手动同步才能保证两边一致:

# 在node1上同步配置 smitty hacmp # Cluster Configuration -> Cluster Nodes -> Synchronize Cluster Configuration # 选择所有节点,确认同步 # 同步串口通讯 # Cluster Configuration -> Cluster Nodes -> Synchronize Serial Communication # 启动集群(node1主节点) smitty hacmp # Cluster Management -> Start Cluster Services # 选择执行方式: 启动当前节点并加入集群 # node2上同样操作

同步配置这步经常有人跳过或选错节点,导致两边HACMP配置不一致,启动后集群状态显示down或者资源组无法接管。同步完用cltopinfo查看集群拓扑,确认两个节点、IP网络和串口网络都正确显示;用clshowsrv查看服务状态。启动集群时先启动主节点,等集群状态变为稳定后,再启动备节点——两边同时启动有时会因为抢占资源组而报IP冲突。

启动完成后,查看运行状态:

# 查看HACMP运行状态 clshowres -r cltopinfo # 资源组当前所在节点 cldare -r | grep ops_rs

切换测试是验证配置正确性的唯一手段。我的测试流程是:先看资源组当前在node1上运行,手动执行clrsh node2 /usr/cluster/bin/cl_node_move -i或者从smitty菜单选择移动资源组到node2,然后观察Oracle是否会平滑下线再上线。测试要点有三个:一是应用脚本返回状态是否正常;二是service IP能否在node2上成功绑卡;三是数据库能否被干净地关掉再启动——只要有一步不干净,说明脚本或资源组配置有问题。

PowerPath多路径软件安装放在HACMP配置之后,是因为多路径配置会影响磁盘设备名和数据路径。安装命令:

# 安装PowerPath rpm -ivh EMCpower.LINUX-5.x.rpm # 注册和配置 powermt config powermt load # 查看多路径状态 powermt display dev=all

存储映射出来的盘经过PowerPath统一管理后,设备名从hdisk变为hdiskpower,路径状态显示alive说明冗余链路正常,dead则说明某个存储端口链路有问题。多路径装完后才能创建控制文件和数据文件所在的VG,顺序反了的话,HACMP配置里指向的卷组名会对不上。

5. 避坑与排查:这套环境里最容易翻车的几个位置

5.1 现象:bundle安装不完整,Oracle安装时报依赖缺失

第一次装这套环境时,我图省事只选了server这个bundle,没选app-dev,结果装Oracle时make命令直接报找不到/usr/vac/bin/xlc。原因很简单:app-dev里包含了C编译器和数据库安装所需的系统头文件,Oracle的runInstaller在链接阶段必须要用到。解决方法是把AIX安装盘放回去,执行smitty installp,在软件列表里勾选app-dev整组bundle,补装后再重新跑Oracle安装程序——这次就顺畅通过了。从那以后我养成了安装后立即用lslpp -l检查bundle文件集列表的习惯,不再靠记忆判断装没装全。

5.2 现象:网络参数改完不生效,数据库连接数一多就报端口耗尽

HACMP配置完成后,Oracle跑了一周,业务方突然报数据库连不上,连接日志里全是ORA-12516 TNS:listener could not find available handler。检查监听进程占用正常,但netstat -an | grep 1521 | grep TIME_WAIT的个数超过一万。原因就是当时临时用no -r修改的tcp_ephemeral_low和tcp_ephemeral_high没加-p,重启后端口范围恢复默认,短连接一多端口全占光了。解决方法是把第3章那组网络参数重新用-p选项执行一遍,再用no -a | grep ephemeral确认端口范围是9000-65500,数据库连接数重新恢复正常。这个坑的教训是:-r只能临时救火,生产环境必须用-p持久化。

5.3 现象:HACMP资源组切换后,应用脚本报“数据库已经在运行”

一次演练切换时,node1宕机模拟开始,资源组成功切到node2,但Oracle实例一直起不来。查看/var/hacmp/hacmp.out日志,发现启动脚本执行到startup时报ORA-01102: cannot mount database in EXCLUSIVE mode。原因是node2上有个残留的Oracle进程没有完全退出——node1直接宕机时,Oracle锁文件没有清理干净,而数据库进程还持有着旧的锁。解决方法是在启动脚本里加上一段兜底逻辑:先检查ps -ef | grep pmon,如果有残留进程就执行shutdown abort清理再启动;同时把Oracle的$ORACLE_HOME/dbs目录下lk开头的锁文件删除。从那以后我写启动脚本都会把“先清理残留进程再启动”这段逻辑加上,切换测试也不再翻车。

5.4 现象:rootvg镜像完成后重启,系统卡在引导界面无法进入

做镜像时我执行完mirrorvg rootvg就直接重启了,结果系统停在Starting Software界面不动。原因是跳过了bosboot -ad hdisk1这一步——镜像同步虽然完成,但hdisk1上没有引导映像,系统从hdisk0起不来的时候无法降级到hdisk1。解决方法是进入维护模式,用AIX安装盘引导,执行bosboot -ad hdisk1重建引导块,再执行bootlist -m normal hdisk0 hdisk1更新启动顺序,恢复正常引导。这个坑我后来在手册里做了重点标注:mirrorvg后必须重建boot image,没有例外。

5.5 现象:HBA卡参数重启后丢失,存储链路故障恢复要等十分钟

有段时间存储切换演练,发现光纤链路恢复后数据库要等很久才恢复I/O,检查lsattr -El fscsi0发现fc_err_recov的值不是fast_fail。原因是当初执行HBA参数命令时忘了加-P选项,改动只在当前运行态生效,重启后回退默认值。解决方法是重新执行带-P的chdev命令,并确认所有HBA卡的fscsi和fcs设备都修改到位。HBA卡参数这类改动本来就要求重启生效,如果忘了加-P等于白改,检查的时候要对比lsattr -El输出和手头的配置清单逐项核对。

6. 拿到手册后先做这三步验证,再决定要不要照单全收

新环境里拿到这份手册,我不会急着按步骤执行,而是先花半天时间做三件事。第一步是确认系统基线:登录每一台机器执行oslevel -s,看输出的补丁版本是不是6100-07-06-1241——手册里的所有参数和HACMP行为验证都基于这个TL7 SP06基线,版本差太远的话HACMP的配置菜单选项可能不一样,参数命名也可能有出入。第二步是核对硬件差异:用prtconf看内存大小,用lsdev -Cc adapter看网卡和HBA卡数量,如果机器是八核以上或网卡数超过手册示例,maxuproc和num_cmd_elems这些值就需要按比例放大。第三步是在虚拟机或测试小机上完整走一遍HACMP切换测试,重点验证应用脚本的启停逻辑,而不是直接在生产环境上演练。

验证完这三项,我会把手册里通用的参数按当前环境微调一遍,比如/var文件系统大小根据日志增长速率调整,aio_maxservers按实际并发连接数伸缩。这套流程跑通后,我每次接手新的AIX双机环境都是按这个顺序:先做基线核对,再做参数适应性调整,最后在测试环境完整演练,全部通过才上生产。这已经成了我的固定动作,也大大减少了在交付现场翻车的次数。这份手册的价值不在于它每条命令都能原样照抄,而在于它把从裸机到双机可用的完整路径走了一遍,踩过的坑和参数背后的理由都写清楚了,你拿到的是一份有据可查的落地经验,而不是零散的命令清单。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询