HBA卡无法真正在线更换,所谓“在线”实为最小停机窗口下的可控切换;必须先停CRS再执行powermt renamepseudo,否则触发ORA错误、设备忙或ASM挂载失败;需通过Logical device ID而非伪设备名或sdX序号确认LUN逻辑一致性;asm_diskstring须精确配置,扫描后需手动rescan并验证磁盘状态;OCR与Voting Disk迁移是强制前置动作,不可跳过。
不能直接在线更换 hba 卡——哪怕用了 powerpath 或 multipath,hba 物理层断连必然导致路径瞬时丢失,asm 会触发 disk heartbeat timeout,进而引发 voting disk 不可用、cssd 挂起、crs-0184 报错。所谓“在线”,实际是「最小停机窗口下的可控切换」,核心靠多路径重映射 + asm disk string 稳定性保障。
为什么 powermt renamepseudo 必须在 CRS 停止后执行
PowerPath 的伪设备名(如 emcpowerx)被 ASM 的 asm_diskstring 直接引用。CRS 运行时,ohasd 和 cssd 会持续监控底层设备状态;若此时用 emcpadm renamepseudo 强制修改正在被 ASM 使用的设备别名,会出现:
-
ORA-15032: not all alterations performed或ORA-15027: active use of diskgroup precludes relocation or drop - PowerPath 内部设备锁未释放,
powermt save失败并报device is busy - 即使重命名成功,ASM 实例重启后仍可能因 disk discovery 顺序变化而挂载失败
必须先 crsctl stop crs -f(两节点依次执行),再操作重命名,否则所有后续步骤都不可靠。
如何确认新 HBA 扫描出的 LUN 与原设备逻辑一致
仅靠 powermt display dev=all 看 Pseudo name 不够,EMC 存储的 Logical device ID 才是唯一标识。操作前必须比对两节点:
- 旧卡识别出的
data_center_16对应 ID:60060160F7303500ACF6E88706A1E811 - 新卡扫描后,查
powermt display dev=all | grep -A5 'data_center_16',确认其Logical device ID完全一致 - 不一致说明 LUN 映射错位或存储端 zone 配置异常,此时绝不能继续 —— 否则 OCR/Voting Disk 可能写入错误设备
注意:fdisk -l 输出的 /dev/sdX 序号毫无意义,PowerPath 层已屏蔽底层 SCSI 路径变化。
ASM diskstring 配置与 scan 操作的关键细节
Oracle 12c RAC 中,asm_diskstring 必须显式指向 PowerPath 设备,且不能含通配符风险:
- ✅ 正确:
asm_diskstring = '/dev/emcpower[a-z]'(限定字符范围,避免匹配到emcpowera1这类分区设备) - ❌ 危险:
asm_diskstring = '/dev/emcpower*'(可能意外包含快照、临时分区,导致 ASM 启动失败) - 扫描新设备后,必须在两节点分别执行:
sqlplus / as sysasm→ALTER SYSTEM RESCAN DISKS;,而非依赖自动 discovery - 执行
SELECT path, header_status FROM v$asm_disk;验证所有盘显示MEMBER且无PROVISIONED状态残留
Rescan 不等于重发现:它只刷新已有 diskstring 范围内的设备状态,不会改变 ASM 磁盘组成员关系。
OCR 和 Voting Disk 迁移不是可选项,而是强制前置动作
即使你只想换 HBA 卡,只要设备名(emcpowerx)发生变更,就必须检查 OCR 和 Voting Disk 所在磁盘组是否仍可访问。常见疏漏点:
- OCR 位置可通过
ocrcheck -config查看,但 Voting Disk 位置需运行crsctl query css votedisk - 若它们位于外部冗余磁盘组(
EXTERNAL REDUNDANCY),且该磁盘组仅由一个emcpower设备组成,则设备名变更后 CSSD 将无法读取 voting disk,直接 hang 住 - 稳妥做法:提前将 OCR/Voting Disk 迁移至多盘组成的 normal/redundant 磁盘组,命令为
ocrconfig -add +DG_NAME和crsctl replace votedisk +DG_NAME
这一步常被跳过,直到重启 CRS 时卡在 Waiting for CSS daemon to start 才意识到问题,但那时已无法回退。











