这篇文章讨论的是在Linux平台通过udev的方式将块设备转换为字符设备,并固定设备的权限和所有者,这种需求只在安装11gR1之前的RAC数据库的时候需要这样做,安装11gR2的RAC Database,ASM可以直接使用块设备。
udev除了用于将块设备转换为字符设备外,还可用于固定设备文件名称。
Oracle 10g RAC事例
vi /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
ACTION=="add", KERNEL=="sddlmaa1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sddlmab1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sddlmac1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sddlmad1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sddlmae1", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sddlmaf1", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sddlmag1", RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add", KERNEL=="sddlmah1", RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add", KERNEL=="sddlmai1", RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add", KERNEL=="sddlmaj1", RUN+="/bin/raw /dev/raw/raw10 %N"
ACTION=="add", KERNEL=="sddlmak1", RUN+="/bin/raw /dev/raw/raw11 %N"
ACTION=="add", KERNEL=="sddlmal1", RUN+="/bin/raw /dev/raw/raw12 %N"
ACTION=="add", KERNEL=="sddlmam1", RUN+="/bin/raw /dev/raw/raw13 %N"
ACTION=="add", KERNEL=="sddlman1", RUN+="/bin/raw /dev/raw/raw14 %N"
ACTION=="add", KERNEL=="sddlmao1", RUN+="/bin/raw /dev/raw/raw15 %N"
ACTION=="add", KERNEL=="sddlmap1", RUN+="/bin/raw /dev/raw/raw16 %N"
KERNEL=="raw1", OWNER="root", GROUP="dba", MODE="660"
KERNEL=="raw2", OWNER="root", GROUP="dba", MODE="660"
KERNEL=="raw3", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw4", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw5", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw6", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw7", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw8", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw9", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw10", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw11", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw12", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw13", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw14", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw15", OWNER="oracle", GROUP="dba", MODE="640"
KERNEL=="raw16", OWNER="oracle", GROUP="dba", MODE="640"
-------------------------------------------------------------------------------------------------
Oracle 11g RAC事例
vi /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
ACTION=="add", KERNEL=="sddlmad1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sddlmae1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sddlmaf1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sddlmag1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sddlmah1", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sddlmab1", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="sddlmac1", RUN+="/bin/raw /dev/raw/raw7 %N"
KERNEL=="raw1", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw2", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw3", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw4", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw5", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw6", OWNER="grid", GROUP="asmadmin", MODE="660"
KERNEL=="raw7", OWNER="grid", GROUP="asmadmin", MODE="660"
然后执行如下命令:
(1) partprobe
(2) start_udev
最后,确认:
ll /dev/raw
total 0
crw-rw---- 1 root dba 162, 1 Nov 29 18:37 raw1
crw-r----- 1 oracle dba 162, 10 Nov 29 18:19 raw10
crw-r----- 1 oracle dba 162, 11 Nov 29 18:19 raw11
crw-r----- 1 oracle dba 162, 12 Nov 29 18:19 raw12
crw-r----- 1 oracle dba 162, 13 Nov 29 18:02 raw13
crw-r----- 1 oracle dba 162, 14 Nov 29 18:19 raw14
crw-r----- 1 oracle dba 162, 15 Nov 29 18:32 raw15
crw-r----- 1 oracle dba 162, 16 Nov 29 18:31 raw16
crw-rw---- 1 root dba 162, 2 Nov 29 18:37 raw2
crw-r----- 1 oracle dba 162, 3 Nov 29 18:38 raw3
crw-r----- 1 oracle dba 162, 4 Nov 29 18:38 raw4
crw-r----- 1 oracle dba 162, 5 Nov 29 18:38 raw5
crw-r----- 1 oracle dba 162, 6 Nov 29 18:38 raw6
crw-r----- 1 oracle dba 162, 7 Nov 29 18:38 raw7
crw-r----- 1 oracle dba 162, 8 Nov 29 18:03 raw8
crw-r----- 1 oracle dba 162, 9 Nov 29 18:38 raw9