问题背景:
双节点rac的asm,其中一个节点挂掉,DATA卷组丢失。另一个节点正常。
排查过程:
数据库实例起不来,报错diskgroup "DATA"不存在或没有挂载!
尝试手动挂载,同样失败:
通过asmcmd检查发现DATA确实不存在
检查asm文件发现,文件存在且权限正常,但是时间停留在故障时间点
查看对应磁盘信息,发现设备磁盘信息可以读取,但asm信息读取不到
到此基本可以确定,共享磁盘和挂载没有问题,udev绑定asm异常。
查看udev规则文件,也并无异常
尝试重新加载规则文件
udevadm control --reload-rules
/sbin/udevadm trigger --type=devices --action=change
这里我两个命令都尝试执行了,当时 ll /dev/asm* 的时候并没有任何变化,但是第二天莫名就好了,推测是这个文件导致。再次mount DATA,已经恢复。
可以看到dev下文件时间已有更新,更新时间大致为前一天我重新加载的时间
检查数据库状态已恢复
总结:
使用udev来创建自动的asm磁盘组是一种常见的方式。udev是用户空间的设备管理工具,可以根据系统中硬件的信息动态地创建和管理设备文件。asmcmd是Oracle ASM的命令行工具,用于管理Oracle自动存储管理。如果使用udev创建了asm磁盘组但asmcmd不显示磁盘组信息,可能是因为:
1、udev规则没有正确创建或没有被正确应用。
2、ASM实例没有正确启动或者配置不正确。
3、asmcmd没有正确连接到ASM实例。