Voting Disk坏道无法修复只能替换,因其是ASM磁盘组中的裸设备元数据区域,fsck/dd无效且危险;须用asmca/asmcmd替换磁盘并确保冗余,OCR与Voting共存时需先迁移Voting Disk。

Voting Disk 坏道无法“修复”,只能替换——它不是普通文件系统,而是ASM磁盘组里的裸设备元数据区域,坏道意味着物理介质不可靠,必须下线并更换底层磁盘。
为什么 fsck 或 dd 命令对 Voting Disk 完全无效
Voting Disk 存放在 ASM 磁盘组(通常是 +OCRVD 或 +VOTE)中,由 ASM 直接管理裸盘;它不经过操作系统文件系统层,fsck 根本看不到它,dd if=/dev/zero 写坏道位置反而会破坏 ASM 的 AU(Allocation Unit)头,导致整个磁盘组无法 mount。Oracle 官方文档明确禁止对 Voting Disk 所在磁盘执行任何操作系统级磁盘工具操作。
- 常见错误现象:
crsctl check css报CRS-4639: Could not contact Oracle High Availability Services,ocrcheck -local显示PROT-602: Failed to retrieve data from the cluster registry - 真实原因:Voting Disk 所在的 ASM 磁盘(如
/dev/oracleasm/disks/VOTE1)底层出现坏道,ASM 读 AU 失败,CSSD 进程反复重试后挂起 - 验证方式:用
smartctl -a /dev/sdX查看磁盘 SMART 信息,重点关注Reallocated_Sector_Ct、Current_Pending_Sector是否非零;再用dd if=/dev/sdX of=/dev/null bs=4096 count=1000000测试读取是否卡住或报 I/O error
必须用 asmca 或 asmcmd 替换 Voting Disk 所在磁盘组
不能只换一块物理盘就完事——Voting Disk 必须始终位于正常冗余的 ASM 磁盘组中。若原组是 NORMAL 冗余且含 3 块盘,其中 1 块已出现坏道,则需先添加新盘、再手动 drop 故障盘,让 ASM 自动完成镜像同步。
- 操作前提:
crsctl stop crs -f在所有节点停止集群(注意:不是crsctl stop cluster),确保无活动实例和 ASM 实例依赖该磁盘组 - 添加新盘:
asmca图形界面或命令行sqlplus / as sysasm中执行ALTER DISKGROUP VOTE ADD DISK '/dev/oracleasm/disks/VOTE_NEW' REBALANCE POWER 11; - 确认 rebalance 完成:
SELECT STATE, POWER, ACTUAL, SOFAR, EST_WORK FROM V$ASM_OPERATION;等EST_WORK = 0 - 剔除故障盘:
ALTER DISKGROUP VOTE DROP DISK 'VOTE1';(盘名查v$asm_disk,状态为OFFLINE或FAILED)
OCR 和 Voting Disk 共存磁盘组时的特殊处理
很多 19c RAC 部署将 OCR 和 Voting Disk 放在同一磁盘组(如 +OCRVD),此时不能直接 drop 磁盘——OCR 数据也依赖该组。必须先迁移 Voting Disk 到独立磁盘组,再处理故障盘。
- 创建新 Voting Disk 组:
asmca新建一个专用磁盘组(如+VOTE_NEW),NORMAL 冗余,至少 2 块盘 - 迁移 Voting Disk:
crsctl replace votedisk +VOTE_NEW(此命令会自动更新 OCR 中的 Voting Disk 记录) - 验证:
crsctl query css votedisk输出应显示新路径,且状态为online - 之后才能对原
+OCRVD组执行磁盘替换操作,无需担心 Voting Disk 影响
真正麻烦的从来不是命令输错,而是误判“坏道可修复”——Voting Disk 所在磁盘一旦 SMART 报警,就必须当作不可信介质对待。哪怕它还能 mount、还能读出部分 OCR,只要 CSSD 日志里反复出现 IO error on voting file,就该立刻下线,别赌它还能撑几天。


















