唯一可靠方式是执行crsctl query css votedisk,输出中“located on device”后为真实路径(ASM磁盘组或裸设备);备份须用dd bs=4096 conv=notrunc,noerror,sync并cmp验证前几MB。
怎么快速查出 Voting Disk 在哪
oracle rac 的 voting disk 位置不是写死的,得靠 crsctl 实时问集群,不能猜、不能翻旧文档。执行失败或输出为空,大概率是没用 root 权限,或者 gi 还没起来。
-
crsctl query css votedisk是唯一可靠方式;crsctl stat res -t或olsnodes都不返回这个信息 - 输出里带
located on device的那行才是真实路径,注意它可能是 ASM diskgroup(如+OCR_VOTE)或裸设备(如/dev/oracleasm/disks/VOTE1) - 如果看到
No voting files available,别急着 dd,先确认crsctl check crs是否全 OK,否则备份无意义
dd 备份 Voting Disk 的安全写法
直接 dd if=/dev/xxx of=/backup/vote.bak 很危险:块大小不对可能截断、没加 conv=notrunc 可能破坏源设备、没校验就当成功了。
- 必须指定
bs=4096(ASM 默认 AU 大小),避免读半块导致备份损坏;bs=1M在某些存储上会跳过元数据 - 加
conv=notrunc,noerror,sync:防止意外覆盖源设备,跳过读错误扇区,强制落盘 - 备份后立刻跑
cmp /dev/xxx /backup/vote.bak,只比前几 MB 就够(Voting Disk 前 2MB 含关键头信息)
ASM 磁盘组里的 Voting Disk 怎么备份
如果 crsctl query css votedisk 显示的是 +DG_NAME,说明它在 ASM 里,不能直接 dd 设备文件——你根本不知道它物理落在哪块盘上。
- 必须用
dd从 ASM 实例中导出:asmcmd cp +DG_NAME/VOTEFILE.255.12345 /backup/vote_asm.bak - 别信
asmcmd lsdg里显示的 “Total_MB” —— Voting Disk 文件很小(通常几 MB),但 ASM 元数据和镜像策略会让实际占用不可见 - 导出前确认 ASM 实例状态:
ps -ef | grep asm_pmon,挂载状态异常时asmcmd会静默失败
备份后验证是否真能用
备份文件存在 ≠ 能恢复。Voting Disk 损坏后集群无法启动,你只有一次恢复机会,验证必须模拟真实场景。
- 用
dd if=/backup/vote.bak of=/dev/xxx bs=4096 conv=notrunc写回(测试环境专用),再执行crsctl replace votedisk /dev/xxx看是否被接受 - 如果报
CRS-4605: Invalid voting file,大概率是 dd 时用了错的bs或备份被截断,重做并加count=限制(例如count=2048对应 8MB) - 生产环境绝不允许用
crsctl delete css votedisk测试恢复流程——这会导致集群立即驱逐节点
cmp 或误用 bs,备份文件看起来很大,其实第一块头就坏了。

















