ASM磁盘掉线处理机制:从标记MISSING到触发重平衡 ASM磁盘掉线后,RAC节点是否自动踢出该磁盘? 答案是不会自动踢出。不过,系统会立刻将其标记为 missing 状态,并触发ASM的快速镜像同步机制——当然,这有个前提:磁盘组必须启用了这个特性,并且故障是临时性的,比如线缆松动或者HBA卡
答案是不会自动踢出。不过,系统会立刻将其标记为 missing 状态,并触发ASM的快速镜像同步机制——当然,这有个前提:磁盘组必须启用了这个特性,并且故障是临时性的,比如线缆松动或者HBA卡瞬间断开。如果磁盘长时间无法访问(默认是3.6秒无响应,这个时间由隐藏参数 _asm_disk_repair_time 控制),ASM就会将其从磁盘组中彻底删除,然后启动完全重平衡,从镜像副本读取数据并重建。
这里有个关键的判断点:通过查询 SELECT name, state, repair_timer FROM v$asm_disk WHERE group_number = X;,如果看到 repair_timer > 0,说明磁盘还在等待修复的窗口期内;如果这个值已经归零,并且状态显示为 OFFLINE 或 MISSING,那就意味着已经进入了数据重建的流程。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
答案是必须的。千万别想着直接拔掉旧盘、插上新盘就完事了。ASM本身并不感知底层物理设备的更换,所以必须显式地执行 ALTER DISKGROUP ... DROP DISK(或者使用 DROP DISK ... REBALANCE POWER n 的语法)来通知ASM:释放这块磁盘上的所有Extent,并启动数据重分布。否则,当你把新磁盘加进去时,ASM会认为这是“重复路径”,直接报错 ORA-15032: not all alterations performed 或 ORA-15075: disk is already a member of diskgroup。
实际操作中,有几个建议务必留意:
EXTERNAL 冗余(即无镜像),那么掉盘就等于数据丢失,必须先从备份恢复,再进行后续操作。SELECT * FROM v$asm_operation; 确保当前没有正在进行的rebalance任务,否则DROP操作会被阻塞。FORCE 选项要慎用:它仅在磁盘已物理消失且无法再变为ONLINE状态时使用,语法是:ALTER DISKGROUP dg1 DROP DISK 'ORCL:OLDISK' FORCE;。这个问题太常见了。根本原因往往是默认的 POWER 值设得太低(默认是1),尤其是在大容量磁盘组(比如超过10TB)上,重平衡可能耗时数小时,甚至导致I/O看起来像被“冻结”了。更危险的情况发生在RAC环境中:当一个节点发起rebalance时,其他节点的ASM实例也会同步参与。但如果某个节点心跳异常或者CSSD进程不稳定,就可能导致 v$asm_operation 视图一直显示状态为 EXECUTING,却看不到任何进度。
遇到这种情况,可以尝试以下几个应对措施:
POWER 值(范围是1到11):ALTER DISKGROUP dg1 REBALANCE POWER 5;。需要注意的是,POWER值越高,对I/O和CPU的开销就越大,所以尽量避开业务高峰期操作。v$asm_client 和 v$css_history 视图,确认所有RAC节点的ASM实例状态都正常,没有 INTERMEDIATE 或 FAILED 这类异常记录。千万别以为看到 v$asm_operation 显示完成、磁盘状态变成 ONLINE 就万事大吉了。ASM本身并不校验数据块的内容一致性,它只保证Extent分布的正确性。真正的风险在于:原磁盘故障时,可能已经发生了静默损坏,而它的镜像副本碰巧也坏了(虽然概率不高,但绝非零)。这种情况下,rebalance操作只不过是把损坏的数据原样复制到了新盘上。
所以,替换完成后,必须补做两件事:
ASMCMD md_backup 命令,备份当前磁盘组的元数据,方便后续进行比对。RMAN> VALIDATE DATABASE CHECK LOGICAL;(需要确保数据库参数 DB_BLOCK_CHECKING=TRUE 已开启)。或者,针对ASM文件,可以使用 amdu 工具抽样dump块头,比对checksum。v$asm_disk_iostat 视图中新磁盘的 read_errs 和 write_errs 是否归零。如果还有非零值,那说明底层存储可能仍然存在硬件问题。最后,也是最容易被忽略的一点:在RAC环境中,存放OCR/Voting Disk的磁盘组(通常是 +OCR)必须单独进行验证。这部分一旦损坏,整个集群都无法启动,而且不能用普通的RMAN命令来校验。正确的做法是依赖 ocrcheck -local 和 crsctl query css votedisk 这类集群专用命令来检查其健康状态。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述