简介:《IBM P740小机安装配置手册》面向需要部署IBM Power 740小型机的系统管理员与运维工程师,聚焦AIX操作系统安装及HACMP高可用集群落地,适合具备Unix基础、正在实施Oracle等核心业务系统的技术人员参考。压缩包内为1个doc文档,大小约4.5MB,内容按章节组织,便于现场对照操作。目录从AIX系统安装、bundle与limit参数调整讲起,覆盖IOCP开启、fullcore与maxpout/minpout/maxuproc/syncd设置、时区及error log调整,再延伸到网络、AIO、VM、HBA卡参数配置和语言包、补丁包安装。后半部分围绕Oracle文件系统创建、操作系统镜像、SWAP与文件系统扩容、dump设置展开,并记录HACMP软件及补丁安装、网络配置、cluster与资源组、SVC IP、应用脚本、卷组和串口心跳等环节。已有1264人学习,可作为项目现场安装配置与排错思路的检查清单。
1. 一台 P740 从开箱到双机接管:这份 42 步手册到底解决什么问题
机柜里风扇一转,P740 前面板液晶屏跳出01 N V=F,接下来就是几个小时不能出错的操作。这份 IBM P740 小机安装配置手册把上架到双机接管的 42 个步骤按执行顺序排开:AIX 6100-07 光盘安装、bundle 补齐、limit/IOCP/fullcore、no 与 vmo 参数、HBA 卡、rootvg 镜像、SWAP 与 dump、HACMP 集群与资源组、PowerPath 多路径、四个业务 VG。它面向第一次独立做小机上架的工程师,也适合手上只有零散命令、没串成完整流程的运维。我按它在某风险管理类业务系统项目里走过一遍,整体可复现,但有五六处照着抄会翻车,下面逐段拆开讲。
2. AIX 6100-07 落地安装:从 SMS 启动到 ifix 补齐的四个节点
小型机的安装和 x86 装系统最大的差别在“看不见”:没有显示器时全靠串口和液晶屏判断状态,装完还得补一堆 bundle 才能让 Oracle 和 HACMP 跑起来。这一章按时间顺序走,从通电自检到oslevel -s输出补丁级别,每一步都给判断依据。
2.1 自检、SMS 菜单与 console 选择
插上电源后前面板会跑硬件自检,看到01 N V=F字样时按一下白色按钮,同时把 AIX 安装第一张盘塞进光驱。屏幕变白并听到滴声后按2进管理菜单(SMS),密码按手册是admin,进去先把启动顺序改成光驱优先。这一步的坑不在操作,而在“时机”——01 N V=F只停留几秒,错过就得重启再来一遍。
从光驱引导后第一屏是选择主控台,跟着提示选 console 就行。安装语言选 English,不要在这里选中文,否则后续 smitty 菜单里的字段名和手册对不上,排错时反而慢。
Type the number of your choice and press Enter. 1. Start Installation Now with Default Settings >>> 2. Change/Show Installation Settings and Install 3. Start Maintenance Mode for System Recovery Choice: [2]选 2 是进自定义安装设置,不是直接开装。这一步的意义在于:默认设置会按它自己识别到的磁盘和语言环境走,而现场要求是“全新完全覆盖 + 指定 hdisk0”,必须先改。
2.2 安装方式与磁盘:为什么只能选 New and Complete Overwrite
进入设置界面后先改安装方法,选1 New and Complete Overwrite,再改目标磁盘为 hdisk0,最后回到主界面输入0开始安装。
1. System Settings Method of Installation ----- New and Complete Overwrite Disk Where You Want to Install ------ hdisk0 2. Primary Language Environment Settings (AFTER Install): Cultural Convention ---------- English (United States) Language --------------------- English (United States) 3. Install Trusted Computing Base ---------------- no 0 Install AIX with the current settings listed above.三个选项的技术含义要分清:
New and Complete Overwrite:清空整块盘,包括分区表和已有 VG 信息。全新上架机器只能选这个;如果盘上有残留的 rootvg,选保留安装会留下旧的 ODM 记录,后面extendvg会报盘已被占用。Preservation Install:保留用户数据但覆盖/usr、/var、/tmp、/,业务盘上有数据时绝对不能用。Migration Install:只做版本升级,保留已装应用,本次场景用不上。
Trusted Computing Base 选no,开了 TCBC 后每次改系统文件都要重新算校验,HACMP 装补丁时会频繁报完整性告警,现场基本都关掉。
安装跑完会自动重启进 Configuration Assistant。这里有个必须做的动作:设置 root 口令后,直接选Exit the Configuration Assistant,再选Finish now, and do not start Configuration Assistant when restarting the operating system.。如果只是退出没关掉向导开关,下次重启还会进这个界面,无人值守重启时会卡在那儿等输入。手册里 root 口令写的是弱口令,实际交付一定要改,这条后面避坑章还会提。
2.3 装完先补 bundle:server、app-dev 与 openssh 链路
AIX 基础安装只带最小集合,Oracle 和 HACMP 要的东西得手工补。手册要求装两个必装 bundle:server和app-dev。串口方式安装时没有图形界面,还得额外补 cde 的 bundle;用显示器装的可以跳过。
# 交互式安装入口,选 Install and Update from ALL Available Software smitty installp # 命令行方式核对已装 bundle( bos.server / bos.adt 系列 ) lslpp -l | grep -E "bos.server|bos.adt" # 补 cifs 与 data 包、以及 openssl/openssh 全套 # 在 smitty installp 的 SOFTWARE to install 里输入: # bos.cifs_fs bos.data # openssl* openssh*bos.cifs_fs是挂载外部 CIFS 共享用的文件系统驱动,备份落盘或介质交换会用到;bos.data提供一批基础数据文件,缺了某些安装脚本会报找不到模板。openssl/openssh 是替代 telnet 的远程管理链路,AIX 默认只起 telnet,明文传输在实际交付里过不了安全检查,所以这两个包必须补,安装源就在 AIX 6 安装光盘里。
装完lslpp -l openssh.base.server能看到状态为 COMMITTED 才算落地,只看 smitty 的回显不够,smitty 有时会把“已存在更高版本”当成功返回。
2.4 语言包、TL/SP 补丁与 ifix 的验收
中文语言包按需装,路径是smitty→ System Environments → Manage Language Environment → Add Additional Language。Cultural Convention 和 Language Translation 两类都要选Zh-CN UTF-8,只装一类会出现日期格式是中文、但报错信息仍是英文的半吊子状态。
系统补丁按手册目标是 AIX 6.1 TL7 SP6,落地后版本号应为6100-07-06-1241。
# 装完介质先看基线 oslevel -s # 期望 6100-07-04(SP4 介质) # 打完 TL/SP 后再看 oslevel -s # 期望 6100-07-06-1241 # ifix 用 emgr 装,注意文件名大小写和 .epkg.Z 后缀 ls # IV30896m6a.130214.epkg.Z IV32377s6a.130129.epkg.Z emgr -e IV30896m6a.130214.epkg.Z emgr -e IV32377s6a.130129.epkg.Z # 查已装 ifix 清单,确认状态是 INSTALLED emgr -lemgr -e的返回最后一行手册印的是SECUSS,那是拼写错误,真实输出是Return Status: SUCCESS。验收别只看这一行,用emgr -l列出清单,确认两个 ifix 都在、状态为 INSTALLED,再用oslevel -s复核 TL 级别没被 ifix 回退。这一步做完,操作系统层才算干净,后面调参数才有意义。
3. 系统参数一次调到位:limit、IOCP 与 no/vmo/ioo 三组持久化写法
参数调整是最容易“当时生效、重启失效”的环节。AIX 里同一个参数常有三种改法:smitty改 ODM、chdev直接改设备属性、ioo/vmo/no改内核可调参数,各自生效时机不同。这一章按“用户级 → 设备级 → 内核级”的顺序推。
3.1 limits 全量放开:先备份再改
Oracle 和 HACMP 都要求用户资源限制足够大,手册的做法是把/etc/security/limits里关键项全部改成-1(unlimited)。
# 改之前必须备份,这是唯一后悔药 cp /etc/security/limits /etc/security/limits.bak vi /etc/security/limits # 需要改的项(default 和 oracle 用户段落都要改) # core = -1 # rss = -1 # fsize = -1 # data = -1 # stack = -1 # stack_hard = -1 # cpu = -1 # nofiles = -1逐项说明作用:core = -1允许进程崩溃时写完整 core,配合后面的 fullcore 才能拿到完整内存镜像;data和stack放开是给 Oracle SGA 和 PGA 留空间;nofiles = -1是文件句柄上限,HACMP 和数据库并发连接多时这一项不够会直接报Too many open files;fsize = -1允许写超大文件,做 dump 和镜像时必要。
注意stack_hard要一起改,只改 soft 上限时 hard 仍是旧值,用户重新登录后会被打回原形。改完用ulimit -a在目标用户下验证,别在 root 下看完就算完。
3.2 IOCP 从 Defined 到 Available
IOCP 是 I/O 完成端口,异步 I/O 的事件通知走这个通道,Oracle 的异步 IO 依赖它。AIX 6.1 默认已装bos.iocp.rte,但端口状态不一定是 Available。
# 查 IOCP 端口状态 lsdev -Cc iocp # 正常输出:iocp0 Available I/O Completion Ports # 如果是 Defined,两种方式拉到 Available smitty iocp # Change/Show Characteristics of I/O Completion Ports → available # 或命令行 chdev -l iocp0 -a autoconfig=available cfgmgr -l iocp0chdev只改 ODM 属性,cfgmgr -l iocp0才是让设备配置真正生效的动作,两条要连着敲。只做第一条,lsdev里仍然显示 Defined,很容易误判成命令没生效。
3.3 sys0 上的四个开关:fullcore、maxpout/minpout、maxuproc
sys0是系统级伪设备,一批关键开关挂在它下面。改之前统一用lsattr -El sys0看现状,改完再核对一遍。
# 查看系统级属性现状 lsattr -El sys0 # 打开 fullcore,崩溃时写完整内存转储 chdev -l sys0 -a fullcore=true # 调整 pout 阈值 chdev -l sys0 -a maxpout=8192 -a minpout=4096 # 提高单用户最大进程数 chdev -l sys0 -a maxuproc=16384 # 崩溃后自动重启 chdev -l sys0 -a autorestart=truemaxpout/minpout控制的是文件系统页输出(paging out)的阻塞阈值:待写页数超过 maxpout 时进程进入睡眠,降到 minpout 以下才唤醒。默认值偏小,大内存机器上会出现进程频繁睡醒导致的性能抖动,8192/4096 是配合 16GB 内存的经验值。maxuproc默认 128,双机跑数据库加集群进程根本不够,16384 是手册给的上限值。
fullcore=true和前面 limits 里的core = -1是配套的:前者决定系统崩溃时是否完整转储,后者决定进程级 core 文件大小。两个都开,dump 才有分析价值。
3.4 syncd、时区与 error log
syncd是内存脏页回刷频率,默认 60 秒。手册改成 10,代价是 I/O 更频繁,收益是宕机时丢的数据更少,数据库场景通常接受。
# syncd 频率写在启动脚本里,直接编辑 vi /sbin/rc.boot # 找到这一行,把 60 改成 10 # nohup /usr/sbin/syncd 10 > /dev/null 2>&1 & # 时区使用 POSIX 格式,东八区 chtz BEIST-8 # 扩大 error log 到 10MB /usr/lib/errdemon -s 10485760 # 验证 /usr/lib/errdemon -l ps -ef | grep errdemonBEIST-8是 POSIX 时区串,-8表示东八区偏移。用smitty chtz里的城市列表选出来的是另一套格式(比如CST6CDT),和手册要求不一致,跨时区调度时容易算错,建议直接用 POSIX 串。
error log 默认只有 1MB,双机切换测试期间几条硬件告警就能把它写满,写满后新日志会被丢弃,等于排错时没了黑匣子。errdemon -s改的是运行时上限,如果ps里看不到 errdemon 进程,先/usr/lib/errdemon手动拉起再改。
3.5 no / ioo / vmo 三组参数怎么持久化
这三组是内核可调参数,持久化标志必须带对:-p永久生效(写 ODM,下次启动生效),-r立即生效且重启后保留,-T只本次生效。手册里网络和 AIO 用-p,VM 的page_steal_method用-r,这个差别是有意的。
# 网络参数:一次性刷一批,-p 永久 no -p -o tcp_keepidle="1800" no -p -o tcp_finwait2="300" no -p -o udp_sendspace="65536" no -p -o udp_recvspace="655360" no -p -o tcp_sendspace="262144" no -p -o tcp_recvspace="262144" no -p -o tcp_nodelayack="1" no -p -o tcp_pmtu_discover="0" no -p -o tcp_nagle_limit="1" no -p -o sb_max="2097152" no -p -o rfc1323="1" no -p -o ipsendredirects="0" no -p -o ipignoreredirects="1" no -p -o ip6srcrouteforward="0" no -p -o clean_partial_conns="1" no -p -o tcp_ephemeral_low=9000 no -p -o tcp_ephemeral_high=65500 no -p -o udp_ephemeral_low=9000 no -p -o udp_ephemeral_high=65500 no -r -o ipqmaxlen="512" # 这一项必须立即生效 # AIO 服务端数量 ioo -p -o aio_maxservers=80 # VM 参数 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 # 立即生效,重启保留关键参数的含义:
sb_max=2097152是 socket 缓冲区上限,配合 256KB 的 tcp_sendspace/recvspace 才不会被截断。只改缓冲区不改 sb_max,实际还是按旧上限走。rfc1323=1打开窗口缩放和时间戳,长肥管道(跨机房链路)吞吐提升明显,本地短连接影响不大。tcp_nodelayack=1让小包立即 ACK,降低数据库短事务延迟;tcp_nagle_limit=1是关掉 Nagle 合并,两者一起用才有效果。ipqmaxlen=512是接收队列长度,属于-r立即生效项,说明书写-p的话高负载下会丢包。aio_maxservers=80的经验公式是并行磁盘数的 10 倍、上限 80,最小值取一半。ioo -p修改后重启生效,别指望当场看到变化。numperm_global=0加maxperm%=90是让文件系统缓存优先,lru_file_repage=0禁止重新分页,避免内存压力下把文件缓存反复换出。page_steal_method=1切到基于列表的页窃取算法,必须-r立即生效,-p在部分 TL 上不认这个参数。
3.6 HBA:dyntrk 与 num_cmd_elems 的先后顺序
光纤卡参数分两层:fscsi*是协议层,fcs*是适配器层。手册给的是四个 fscsi 开动态跟踪和快速故障恢复,四个 fcs 提队列深度。
# 协议层:动态跟踪 + 快速失败 chdev -l fscsi0 -a dyntrk=yes -a fc_err_recov=fast_fail -P chdev -l fscsi1 -a dyntrk=yes -a fc_err_recov=fast_fail -P chdev -l fscsi2 -a dyntrk=yes -a fc_err_recov=fast_fail -P chdev -l fscsi3 -a dyntrk=yes -a fc_err_recov=fast_fail -P # 适配器层:队列深度 chdev -l fcs0 -a num_cmd_elems=500 -P chdev -l fcs1 -a num_cmd_elems=500 -P chdev -l fcs2 -a num_cmd_elems=500 -P chdev -l fcs3 -a num_cmd_elems=500 -P # 核对,注意 -P 改完要到下次重启才在 lsattr 里体现 lsattr -El fscsi0 lsattr -El fcs0dyntrk=yes让存储侧端口换位置后不用重启就能重新识别,fc_err_recov=fast_fail是链路故障时快速失败而不是长时间重试,双机切换测试时这个参数直接决定切换耗时。num_cmd_elems=500提高单卡并行命令数,配 PowerPath 多路径时能压满带宽。
-P表示写入 ODM、下次启动生效,所以改完必须重启系统,否则lsattr看到的还是旧值,会误以为改失败了。手册原话是“建议将 HBA 卡参数修改后重启系统”,就是这个原因。
4. 存储、镜像与高可用骨架:文件系统表、SWAP、dump 和 HACMP 集群
操作系统和内核参数落定后,接下来是存储布局和高可用骨架。这一部分顺序性最强:文件系统建错可以删了重建,VG 加到资源组的顺序错了,HACMP 同步会一直报错。手册在这里给了文件系统表和四个业务 VG,但前后表述有矛盾,需要自己判断。
4.1 文件系统规划表与 /oracle、/softcd 两个 LV
手册前半段说“lvsoftcd 挂 /softcd 大小 1GB、lvoracle 挂 /oracle 大小 1GB”,后面的表格却写/softcd 10GB、/oracle 50GB。这两处冲突,实际交付按表格走,因为 1GB 放不下 Oracle 安装介质加补丁包。
| 文件系统 | 大小 | 用途 |
|---|---|---|
| / | 6GB | 根文件系统 |
| /tmp | 10GB | 临时文件,安装期会暴涨 |
| /usr | 10GB | 系统与应用可执行文件 |
| /var | 90GB | 日志、error log、HACMP 日志 |
| /home | 10GB | 用户主目录 |
| /opt | 10GB | 第三方软件默认路径 |
| /softcd | 10GB | Oracle 安装介质 |
| /oracle | 50GB | Oracle 程序目录 |
/var给到 90GB 是因为 HACMP 的clstrmgr日志、errdaemon 日志、Oracle 告警日志都落在这一层,日志写满根文件系统是双机最常见的“莫名宕机”。
# 用 smitty lv 建 LV,再用 smitty fs 建文件系统 smitty lv # Add a Logical Volume smitty fs # Add a Journaled File System # 命令行核对结果 lsvg -l rootvg df -gLV 名按手册约定是lvsoftcd和lvoracle,逻辑卷类型用jfs2,挂载点写绝对路径,创建时勾选“Mount AUTOMATICALLY at system restart”,不然后重启挂载点全空,数据库起不来。
4.2 SWAP 按 1:1 配到 16GB,PP 数量别算错
手册定的 swap 与内存比值 1:1,即 16GB。AIX 里 page space 以 PP 为单位,默认 1 个 PP 是 512MB。
# 用 smit lv 的 page space 菜单,或命令行查现状 lsps -a # 增加 31 个 PP(512MB × 32 = 16GB,原有 1 个 PP 时加 31) smitty chps # 选要扩的 paging space,Number of LOGICAL PARTITIONS 填 31 # 复核 lsps -s注意lsps -a显示的是 LP 数,lsps -s显示的是使用率。手册写“增加数值为 31”,前提是原来已有 1 个 PP,扩完总数 32。如果原 paging space 被删过、LP 数是 0,就得填 32。这个差值不核对,最后 swap 要么不够要么浪费 512MB。
4.3 dump 设备、autorestart 与 errdemon
dump 是系统崩溃瞬间把内存写进磁盘,双机环境里这是定位硬件和内核问题的唯一手段。
# 允许系统挂死时强制 dump smitty sysdumpdev # 把 "always allow dump" 设为 TRUE # 查看当前 dump 设备与大小 sysdumpdev -l # 估算需要的 dump 空间 sysdumpdev -e # 如果现有 dump LV 不够,用 smit lv 扩容 smit lvsysdumpdev -e的输出是估算值,实际 dump LV 要略大于这个数。dump 到内存的完整转储需要fullcore=true配合,前面 sys0 那一步没做的话,这里只能拿到部分镜像。
autorestart=true让系统崩溃后自动重启,双机场景必须开:主节点宕机后如果不自动回来,HACMP 虽然能把资源切到备节点,但主节点恢复得靠人工上电,切换窗口被拉长。
4.4 rootvg 镜像:mirrorvg 之后必须 bosboot
rootvg 做镜像是最容易被跳过的一步,因为装完系统一切正常,没人愿意再等一次镜像同步。但根盘单点故障在小机上并不罕见。
# 1. 加盘进 rootvg extendvg rootvg hdisk1 # 2. 镜像 mirrorvg rootvg # 3. 看同步进度,STALE 分区数降到 0 才算完 lsvg rootvg | grep STALE # 4. 关键一步:重写引导镜像,否则 hdisk1 不能独立引导 bosboot -ad hdisk1 # 5. 更新启动顺序,光驱在前、两块盘在后 bootlist -m normal cd0 hdisk0 hdisk1 # 6. 重启验证 shutdown -Frmirrorvg只做数据镜像,不做引导区。不执行bosboot -ad hdisk1,hdisk0 坏了切到 hdisk1 会停在0517之类的引导失败码上,这一步是血泪经验。重启后lsvg -p rootvg应该看到两块盘都是 active,bootlist -m normal -o的输出要和写入顺序一致。
4.5 HACMP 安装与 cluster 骨架搭建
HACMP 6.1 的安装包选择有个明确例外:除了cluster.hativoli,其余全装。hativoli 是图形化管理组件,装它会拖进一堆依赖,命令行运维用不上。
# 建光盘文件系统,避免每次手工 mount smitty cdrfs # DEVICE name: cd0 # MOUNT POINT: /cdrom # Mount AUTOMATICALLY at system restart: yes # 安装 HA 软件 smitty installp # 选 Install and Update from ALL Available Software # 软件列表里排除 cluster.hativoli,其余全选装完用lslpp -l | grep cluster核对,cluster.es.server、cluster.es.client、cluster.cspoc这些都要在。缺cluster.es.server的话后面smitty hacmp菜单根本进不去。
集群骨架的搭建顺序是固定的:先定义 cluster 名字,再加节点,再加网络,再加通信接口和设备。
smitty hacmp # Extended Configuration # Extended Topology Configuration # Add a Cluster Definition -> 集群名 # Add Cluster Nodes -> 两个节点主机名 # Add a Network -> 基于 IP 的网络(ether) # Add a Network -> 基于非 IP 的网络(串口) # Add Communication Interfaces -> en0 等 # Add Communication Devices -> tty0 等串口设备cluster 名字全网唯一,两台机器必须写同一个。节点名要和/etc/hosts里的解析一致,hostname输出和 hosts 记录对不上时,同步阶段会报节点不可达。
4.6 资源组、SVC IP、应用脚本与卷组挂接
拓扑建完切到资源侧,顺序是:资源组 → 服务 IP → 应用脚本 → 卷组。
# Extended Resource Configuration # Add a Resource Group -> 资源组名,启动策略选 Online On Home Node # Add a Service IP Label -> 对外业务地址 # Add an Application Server -> 启停脚本路径 # Add a Volume Group -> sqdbvg 等业务 VG服务 IP 必须和节点 IP 在同一网段,且不能是任何一台机器的物理地址。应用脚本要能接受start/stop两个参数,HACMP 调用时只传这两个,脚本里自己处理等待和超时,不要在脚本里再套一层smitty。
卷组加到资源组之前,必须先在两台机器上importvg并确认lsvg都能看到,且同一时刻只有一台机器varyonvg。两边同时 varyon 同一个 VG,同步时会报 VG 锁冲突。
4.7 PowerPath 与四个业务 VG 的创建顺序
多路径软件负责把同一块 LUN 的多条路径合成一个设备,装完才能建 VG。
# 装 PowerPath(光盘或安装包方式,按介质实际路径) # 安装后重启,让驱动接管 shutdown -Fr # 核对多路径设备 powermt display dev=all # 建四个业务 VG mkvg -y sqdbvg -s 128 hdiskpower0 mkvg -y hddbvg -s 128 hdiskpower1 mkvg -y rmansqvg -s 128 hdiskpower2 mkvg -y rmanhdvg -s 128 hdiskpower3 # 复核 lsvg -o lsvg -l sqdbvgpowermt display dev=all里每个 LUN 应该有多条 path,状态全是 alive 才算正常。有 dead path 时先查 HBA 到交换机的链路和 zone,别急着建 VG——路径不全时建出来的 VG 可能只落在一张卡上。
VG 的 PP size 用-s 128(128MB)是数据库场景的折中:太大浪费空间,太小 LV 数量上去后 ODM 膨胀。四个 VG 分别对应业务库、历史库、归档库和归档历史库,名字和用途一一对应,后面加资源组时不容易加错。
5. 五个现场翻车点:手册照抄会踩到的顺序、覆盖与状态问题
手册是流程记录,不是排错指南。下面这五条都是实际执行时真实碰到的,每一条都写清现象、原因和解决动作。
5.1 文件系统大小前后矛盾,按 1GB 建完 oracle 装不下
现象:按手册前半段把/oracle建成 1GB,Oracle 安装到 60% 报空间不足,回滚又留下一堆残留。
原因:手册第 17 节写“大小为 1GB”,第 20 节的文件系统表写 50GB,两处不是同一次修订留下的。1GB 是早期版本,后期介质变大后没同步改文字。
解决:以表格为准,/oracle50GB、/softcd10GB。已经建成 1GB 的,用chfs -a size=50G /oracle在线扩,别删了重建——删挂载点会连带删掉已装的部分程序。
5.2 mirrorvg 后没做 bosboot,备盘起不来
现象:rootvg 镜像完成,lsvg rootvg里两块盘都是 active,手动把启动盘改成 hdisk1 重启,卡在引导阶段不动。
原因:mirrorvg只同步数据 LV,引导镜像(BLV)还在 hdisk0 上。hdisk1 上没有可引导的 BLV,固件找不到引导记录。
解决:补bosboot -ad hdisk1,再bootlist -m normal cd0 hdisk0 hdisk1,重启验证。已经起不来的机器,从光驱或 hdisk0 引导进维护模式补做这一步。
5.3 先加资源组后加 VG,同步一直报配置不一致
现象:HACMP 同步阶段反复失败,日志里提示资源组引用的 VG 在节点上不存在或状态不一致。
原因:卷组还没在备节点importvg,或者两边 VG major number 不一致。资源组先引用了 VG,同步时校验通不过。
解决:先在两台机器上确认lsvg都能列出该 VG,major number 用lsvg -v核对一致(不一致用redefinevg修),再回到资源组里重新添加 VG 并同步。顺序永远是先存储后资源。
5.4 串口心跳参数不一致,非 IP 网络起不来
现象:IP 网络正常,非 IP 网络状态一直是 DOWN,clstat里两个节点互相看不见心跳。
原因:两端 tty 的波特率、流控、clocal 设置不一致。手册只写了“添加串口设备”,没写参数必须两边完全相同。
解决:两端统一用smitty tty设成 9600、8N1、无流控,stty -a < /dev/tty0逐项比对。改完cfgmgr重新识别,再同步集群配置。
5.5 syncd 改在 rc.boot 里,打 TL 补丁后被覆盖
现象:系统参数调整时把 syncd 从 60 改成 10,几个月后打完 TL 补丁,ps -ef | grep syncd又变回 60。
原因:/sbin/rc.boot属于系统文件,TL/SP 升级时会被新版本覆盖,手工改的内容不保留。
解决:每次打完补丁,把rc.boot里的 syncd 值、以及no/vmo/ioo的持久化配置全部复核一遍。习惯做法是打完补丁跑一次lsattr -El sys0、no -a、vmo -a,和基线表对比,不一致的重新刷。
6. 切换前那三十分钟:一套可复现的验收自检与切换动作
双机配完不等于能用。我的习惯是在正式切换测试前留三十分钟,按固定顺序跑一遍自检,把“配置看起来对”变成“状态确实对”。
先看集群层,两台机器都要执行:
# 集群服务状态,两个节点都应是 ACTIVE lssrc -g cluster # 集群拓扑与资源组状态 clstat -o /usr/es/sbin/cluster/utilities/clRGinfo # 网络接口与心跳 cllsifclstat的输出里每个资源组要能看到当前所在节点,服务 IP 状态是 UP。clRGinfo比clstat细,能看出资源组里每个资源的单独状态,SVC IP 和 VG 必须是绿色。
再看存储和多路径:
# 每条路径都应是 alive powermt display dev=all # 业务 VG 只在主节点 varyon lsvg -o # 文件系统挂载点齐全 df -g | grep -E "oracle|softcd|sqdb|hddb|rman"然后做一次受控切换,验证资源组真的能漂过去:
# 主节点上把资源组移到备节点 smitty clstop # 选 Move Resource Groups to Another Node # 备节点上确认接管 clstat -o lsvg -o df -g | grep oracle # 业务侧验证服务 IP 可达、应用进程已起 netstat -i | grep <svc_ip> ps -ef | grep -i oracle切换动作本身只要几秒到几十秒,真正耗时的是接管后的验证。我的验收标准是三条:服务 IP 在备节点上能 ping 通、业务 VG 已 varyon、应用脚本拉起的进程数和主节点切换前一致。三条全过才算切换成功,缺一条就回切,别在“半接管”状态下继续往下测。
回切同样走一遍smitty clstop,方向反过来。回切后要检查原来的主节点有没有残留的 VG 锁和进程,lsvg -o在两台机器上都执行一次对比,只有一台有输出才是对的。
这里有个我踩过的坑:切换测试做完没清理/tmp下的集群临时文件,第二天正式上线时clstrmgr启动报锁冲突。从那以后我每次切换测试完,都会额外清一遍/tmp里带cl前缀的残留文件,再重启一次集群服务确认能干净起来。这套自检流程现在是我的固定动作,多花三十分钟,能省掉上线当天的通宵。
手册里的 42 个步骤给的是“怎么装”,但真正决定这套双机稳不稳的,是装完之后有没有人按顺序逐项核对状态。希望帮到你。
本文还有配套的精品资源,点击获取