在OracleRAC中,通常需要用裸设备来存放共享文件,如:OCR,VOTING DISK等。因为使用裸设备避免了经过Unix操作系统这一层,数据直接从Disk到Oracle进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。当然,这是以磁盘的 I/O 非常大,磁盘I/O已经称为系统瓶颈的情况下才成立。如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。
而且,由于使用的是原始分区,没有采用文件系统的管理方式,对于Unix维护文件系统的开销也都没有了,比如不用再维护I-node,空闲块等,这也能够导致性能的提高。
二 共享磁盘导出,导入
共享磁盘导出,导入具体见blog,
http://blog.sina.com.cn/s/blog_972d99960101muu0.html
三 裸设备配置
假设在第二步已经创建了若干块磁盘,并且已经成功导入,创建了持久化设备名。创建持久化设备名见blog,http://blog.sina.com.cn/s/blog_972d99960101mv57.html,ll
/etc/iscsi/可以看出导入的设备。
[root@rac1 ~]# ll /dev/iscsi/
total 0
lrwxrwxrwx 1 root root 7 Nov 1 10:13 data ->
../sdg1
lrwxrwxrwx 1 root root 7 Nov 1 10:13 fra ->
../sdf1
lrwxrwxrwx 1 root root 7 Nov 1 10:13 ocr ->
../sdc1
lrwxrwxrwx 1 root root 7 Nov 1 10:13 ocr1 ->
../sda1
lrwxrwxrwx 1 root root 7 Nov 1 10:13 votedisk
-> ../sdb1
lrwxrwxrwx 1 root root 7 Nov 1 10:13 votedisk1
-> ../sde1
lrwxrwxrwx 1 root root 7 Nov 1 10:13 votedisk2
-> ../sdd1
显示结果可以看出,成功导入7个设备,并且每个设备都创建了一个持久化的设备名。这就保证了重启机器后设备名和设备之间永远都保持着一种对应关系,而不至
于错乱。现在配置裸设备,只对ocr,ocr1,votedisk,votedisk1,votedisk2配置裸设备名
在redhat 4中裸设备服务的配置文件为/etc/sysconfig/rawdevices,编辑这个文件
添加如下行,格式为:裸设备名 快设备名
/dev/raw/raw1 /dev/iscsi/ocr
/dev/raw/raw2 /dev/iscsi/votedisk
要设置oracle用户对裸设备的权限,需要编辑udev的权限配置文件
/etc/udev/permissions.d/50-udev.permissions
找到raw devices部分,修改:
raw*:oracle:dba:0660
raw/*:oracle:dba:0660
Redhat 5之后,原来的raw设备接口已经取消了,redhat
5中通过udev规则进行配置。需要编辑/etc/udev/rules.d/60-raw.rules 这个文件。
cat /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="", RUN+="/bin/raw /dev/raw/rawX %N"
主/次号码:
ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="/bin/raw
/dev/raw/rawX %M %m"
用你需要绑定的设备名称替换 (如:/dev/sda1)。"A" 和 "B" 是设备的主/次号码,X 是系统使用的 raw
设备号码。在设置的时候,主次号码是可选的。 如果不指定,默认从1,1开始
ACTION=="add",KERNEL="/dev/iscsi/ocr",RUN+="/bin/raw /dev/raw/raw1
%N"
设置raw设备的用户和权限信息
在/etc/udev/rules.d/60-raw.rules文件里添加如下信息:
ACTION=="add", KERNEL=="raw1", OWNER="oracle", GROUP="dba",
MODE="660"
如果有多个raw设备,可以写成:
ACTION=="add", KERNEL=="raw[1-4]", OWNER="oracle", GROUP="dba",
MODE="660"
有时在/etc/udev/rules.d/60-raw.rules中配置会不生效,所以文中是写在/etc/rc.local中
vim /etc/rc.local
/bin/raw /dev/raw/raw1 /dev/iscsi/ocr
/bin/raw /dev/raw/raw3 /dev/iscsi/ocr1
/bin/raw /dev/raw/raw2 /dev/iscsi/votedisk
/bin/raw /dev/raw/raw4 /dev/iscsi/votedisk1
/bin/raw /dev/raw/raw6 /dev/iscsi/votedisk2
chown oracle:dba /dev/raw/*
chmod 0660 -R /dev/raw/*
这样每次重启后都会在/etc/raw/下生成裸设备名
[root@rac1 ~]# ll /dev/raw
total 0
crw-rw---- 1 oracle dba 162, 1 Nov 1 12:07
raw1
crw-rw---- 1 oracle dba 162, 2 Nov 1 12:07
raw2
crw-rw---- 1 oracle dba 162, 3 Nov 1 12:07
raw3
crw-rw---- 1 oracle dba 162, 4 Nov 1 12:07
raw4
crw-rw---- 1 oracle dba 162, 6 Nov 1 12:07
raw6