在CentOS 7系统中,udev规则与ASM(Automatic Storage Management)的配置是Oracle RAC集群环境中的关键环节,udev规则确保存储设备的名称保持一致,而ASM则依赖这些稳定的设备标识来管理磁盘组,以下是详细的配置步骤和注意事项。

udev规则基础
udev是Linux设备管理器,负责根据设备属性动态创建设备文件,在ASM环境中,存储设备(如LUN)的路径可能会因系统重启或硬件变化而改变,导致ASM无法识别磁盘,通过udev规则,可以为特定设备分配持久化的名称,如/dev/asm-disk1,从而解决这一问题。
创建udev规则
通过ls -l /dev/sd*或ls -l /dev/disk/by-id/查看存储设备的唯一标识符,通常使用WWID(World Wide Identifier),这些标识符不会因设备路径变化而改变,在/etc/udev/rules.d/目录下创建规则文件,例如99-oracle-asm.rules,并添加如下内容:
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/usr/lib/udev/scsi_id -g -u -d /dev/%k", RESULT=="36000c29f0a4b6e9d0000010000000001", SYMLINK+="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
RESULT字段需替换为目标设备的WWID,SYMLINK定义持久化设备名,OWNER和GROUP设置ASM用户的权限。
应用udev规则
保存规则文件后,执行以下命令使规则立即生效:
udevadm control --reload-rules udevadm trigger
验证设备是否正确创建:

ls -l /dev/asm-disk1
确保输出显示正确的权限和所有者。
ASM磁盘组配置
在ASM实例中,使用asmcmd或SQL*Plus创建磁盘组。
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK '/dev/asm-disk1', '/dev/asm-disk2';
确保ASM用户(如oracle)对这些设备具有读写权限,且磁盘未被其他文件系统使用。
常见问题与解决
-
udev规则未生效
检查规则文件语法是否正确,使用udevadm test /dev/sdX调试,确认设备WWID是否匹配,且scsi_id工具已安装。 -
ASM无法识别磁盘
验证设备权限和所有者,检查ASM实例是否已启动,使用asmcmd lsdsk列出可用磁盘,确认磁盘状态为NORMAL或CANDIDATE。
相关问答FAQs
Q1: 如何确认存储设备的WWID?
A1: 使用scsi_id -g -u /dev/sdX命令获取设备的WWID。scsi_id -g -u /dev/sdb可能返回36000c29f0a4b6e9d0000010000000001,此值用于udev规则。
Q2: udev规则修改后需要重启系统吗?
A2: 不需要,执行udevadm control --reload-rules和udevadm trigger即可重新加载并触发规则,无需重启系统。