ASM 2——raw设备绑定

简介: Redhat 5 中裸设备(raw) 的配置  http://blog.csdn.net/tianlesoftware/article/details/5796962在Redhat 5 之前的版本中,系统通过/etc/sysconfig/rawdevices配置raw的控制文件,通过/etc/init.d/rawdevices来管理raw设备的启动和关闭。

Redhat 5 中裸设备(raw) 的配置  http://blog.csdn.net/tianlesoftware/article/details/5796962

在Redhat 5 之前的版本中,系统通过/etc/sysconfig/rawdevices配置raw的控制文件,通过/etc/init.d/rawdevices来管理raw设备的启动和关闭。而在Redhat 5之后,原来的raw设备接口已经取消了,redhat 5中通过udev规则进行配置。 要配置,需要编辑/etc/udev/rules.d/60-raw.rules 这个文件。

现在RHEL4、5、6上的配置都是不同的,我们分别介绍之:


1、linux redhat as 4  raw设备绑定:


使用raw命令绑定的裸设备在重启后会失效
raw /dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
所以需要修改/etc/sysconfig/rawdevices配置文件,在文件中加入如下内容(每个裸设备一行):

我做了测试:

如果是用raw命令去绑定裸设备,比如执行:raw /dev/raw/raw1 /dev/sdb1

执行完之后,用[root@rac2 ~]# raw -qa  是可以查出来的;再用[root@rac2 ~]#ls -lrt /dev/raw里面也有数据。说明绑定成功了。

然后重启该服务器,再次执行这俩命令:

[root@rac2 ~]# raw -qa             ——没有数据返回
[root@rac2 ~]# ls -lrt /dev/raw               
ls: /dev/raw: No such file or directory          ——此目录消失。


我在开始用raw命令的时候,发现即使我重启了服务器,执行如下命令时还是有数据,还是现实绑定的:

[root@rac2 ~]# raw -qa          
[root@rac2 ~]# ls -lrt /dev/raw            

自己回忆了一下,原来我在/etc/sysconfig/rawdevices文件里,加了绑定配置项:

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdb2

/dev/raw/raw3 /dev/sdb3

/dev/raw/raw4 /dev/sdb5

/dev/raw/raw5 /dev/sdb6

/dev/raw/raw6 /dev/sdb7

我随即删除了这些数据,再次检验,还有处于绑定状态。。意料之中。。。然后我决定重启下试试,果然,重启后再次验证,绑定消失。。。


所以,为了达到重启系统后,裸设备仍然可用这一要求,

我们通过修改/etc/sysconfig/rawdevices配置文件来实现裸设备的永久配置:

第一步:Edit the /etc/sysconfig/rawdevices file, adding the following lines. (增加裸设备映射)

/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1


第二步:改变裸设备拥有者和组

chown Oracle:oinstall /dev/raw/raw1
chown oracle:oinstall /dev/raw/raw2


第三步:改变设备访问权限

chmod 600 /dev/raw/raw1
chmod 600 /dev/raw/raw2


第四步:修改/etc/udev/permissions.d/50-udev.permissions,         ——在redhat5中,是找不到这个目录和文件的。

[root@rac1 ~]# vi /etc/udev/permissions.d/50-udev.permissions
# raw devices
raw*:root:disk:0660
#raw/*:root:disk:0660
raw/*:oracle:dba:0660     机器启动时能自动加载给oracle用户使用。


第五步:确认裸设备服务自动启动:

[root@rac2 ~]# chkconfig --list rawdevices
rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off


第六步:启动rawdevices服务:

[root@rac1 ~]# service rawdevices restart
Assigning devices: 
           /dev/raw/raw1  -->   /dev/sdb1

done

第七步:验证:

[root@rac1 ~]#  ls -lrt /dev/raw   
total 0
crw------- 1 root root 162, 1 Sep  5 15:11 raw1          ——其实这里的验证时用的别的机器,你看裸设备的拥有者和拥有组都还没

[root@rac1 ~]# raw -qa                                                ——改。因为我没有rhel4的环境,所以没法模拟,只能是这样写步骤,其实   
/dev/raw/raw1:  bound to major 8, minor 17             ——在第四步已经改了拥有者,组。

说明绑定成功。


补充:

今天遇到了个问题,就是做ASM实例的时候用的一个硬盘,分成2个分区安装ASM的时候,ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m" 这里面的ENV{MINOR}=="1" 设置不对的情况下启动不了裸设备,如何正确设置呢?


突然想起来,裸设备支持到255个,每个硬盘16个分区,那么我挂载的是一个硬盘,在这个硬盘上分了3个分区,那么从设备号就是17,18,19。

如何看从设备分区号呢,也可以通过这样查看,进到DEV查看:ll /dev/* 看到你的分区的属性里有 8 17,8 18的字样即是了,想想大多数文档里做RAC的时候,都是采用3个虚拟机硬盘实现的,再设置的时候都是以 17,33,49 这样的从设备号进行配置的和挂载硬盘的,更加确认了我的思路。




2、linux redhat as 5  raw设备绑定:

使用raw命令绑定的裸设备在重启后会失效
raw /dev/raw/raw1 /dev/mapper/vg_db-lv_2g_001
参考文档:Configuring raw devices (singlepath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5/OEL5 (Doc ID 465001.1)

因为rh5中取消了rawdevices服务,要使用裸设备的话,需要做以下配置。


第一步: [root@raw1 ~]#vi /etc/udev/rules.d/60-raw.rules

添加以下部分的内容                            ——如果不明白,看下面的那个实验
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"

关于major和minor的解释,参考如下博客:   http://blog.csdn.net/cymm_liu/article/details/11479537

第二步:然后运行启动设备命令

[root@raw1 ~]# start_udev
starting udev: [  OK  ]

这样就结束了。。


补充:

今天遇到了个问题,就是做ASM实例的时候用的一个硬盘,分成2个分区安装ASM的时候,ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m" 这里面的ENV{MINOR}=="1" 设置不对的情况下启动不了裸设备,如何正确设置呢?


突然想起来,裸设备支持到255个,每个硬盘16个分区,那么我挂载的是一个硬盘,在这个硬盘上分了3个分区,那么从设备号就是17,18,19。

如何看从设备分区号呢,也可以通过这样查看,进到DEV查看:ll /dev/* 看到你的分区的属性里有 8 17,8 18的字样即是了,想想大多数文档里做RAC的时候,都是采用3个虚拟机硬盘实现的,再设置的时候都是以 17,33,49 这样的从设备号进行配置的和挂载硬盘的,更加确认了我的思路。



3、实验:


下面给出一个添加raw设备的测试过程。

1.现在虚拟机上添加一个硬盘。 我们仅做测试,所以分10M

 

2. 启动我们的虚拟机,连上后查看磁盘情况

[root@centos ~]# fdisk -l

Disk /dev/sda: 16.1 GB, 16106127360 bytes

255 heads, 63 sectors/track, 1958 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *         201        1958    14121135   83  Linux

/dev/sda2               1         200     1606468+  82  Linux swap / Solaris

Partition table entries are not in disk order

 

Disk /dev/sdb: 10 MB, 10485760 bytes

64 heads, 32 sectors/track, 10 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdb doesn't contain a valid partition table

 

这里的/dev/sdb 因为是刚加上来的硬盘,还没有格式化。

 

3. 格式化/dev/sdb

[root@centos ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-10, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-10, default 10):

Using default value 10

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

 

查看格式化之后的硬盘情况:

[root@centos ~]# fdisk -l

 

Disk /dev/sda: 16.1 GB, 16106127360 bytes

255 heads, 63 sectors/track, 1958 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *         201        1958    14121135   83  Linux

/dev/sda2               1         200     1606468+  82  Linux swap / Solaris

 

Partition table entries are not in disk order

Disk /dev/sdb: 10 MB, 10485760 bytes

64 heads, 32 sectors/track, 10 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1          10       10224   83  Linux

[root@centos ~]#

 

4. 修改/etc/udev/rules.d/60-raw.rules文件

[root@centos ~]# more /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="<device name>", RUN+="/bin/raw /dev/raw/rawX %N"
主/次号码:
ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="/bin/raw /dev/raw/rawX %M %m"

用你需要绑定的设备名称替换 <device name>(如:/dev/sda1)。"A" 和 "B" 是设备的主/次号码,X 是系统使用的 raw 设备号码。在设置的时候,主次号码是可选的。 如果不指定,默认从1,1开始,

如:/dev/raw/raw1:  bound to major 1, minor 1

 

 

现在我们/dev/sdb1 知道到raw1上,就可以在/etc/udev/rules.d/60-raw.rules文件里添加如下内容:

ACTION=="add", KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"

 


5. 重启服务:
[root@centos ~]# start_udev

Starting udev:             [  OK  ]

 


6. 查看raw设备:
[root@centos ~]# ls -lrt /dev/raw

 

total 0

crw------- 1 root root 162, 1 Aug  8 06:56 raw1

[root@centos ~]# raw -aq

/dev/raw/raw1:  bound to major 1, minor 1

 

如果我们添加了下面的语句:

ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="1",RUN+="/bin/raw /dev/raw/raw1 %M %m"

那么就会显示我们指定的Major和minor。

[root@centos ~]# ls -lrt /dev/raw

total 0

crw-rw---- 1 dave tianlesoftware 162, 1 Aug  8 08:06 raw1

[root@centos ~]# raw -aq

/dev/raw/raw1:  bound to major 8, minor 1

 

 

 

7. 设置raw设备的用户和权限信息

 

/etc/udev/rules.d/60-raw.rules文件里添加如下信息:

ACTION=="add", KERNEL=="raw1", OWNER="dave", GROUP="tianlesoftware", MODE="660"

如果有多个raw设备,可以写成:

ACTION=="add", KERNEL=="raw[1-4]", OWNER="dave", GROUP="tianlesoftware", MODE="660"

 

Oracle 中使用raw设备时,如果裸设备对应的属组不是oracle,裸设备将无法供oracle使用

 

 

查看结果:

[root@centos ~]# start_udev

Starting udev:                                  [  OK  ]

[root@centos ~]# ls -lrt /dev/raw

total 0

crw-rw---- 1 dave tianlesoftware 162, 1 Aug  8 06:59 raw1

[root@centos ~]# raw -aq

/dev/raw/raw1:  bound to major 1, minor 1

 

8. 取消raw 映射

把major and minor设成0,就可以取消裸设备的绑定。

[root@rac1 mapper]# raw /dev/raw/raw9 0 0 


1楼 Dream198810032011-10-17 08:25发表[回复][引用][举报] 你好,我在redhat5.3中配置raw时,将一下内容添加到/etc/udev/rules.d/60-raw.rules 中后启动raw,然后查看raw时查看不到raw的内容,还请指点一二。
ACTION="add",KERNEL="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION="add",KERNEL="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION="add",KERNEL="sdb3",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION="add",KERNEL="sdb4",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION="add",KERNEL="raw[1-4]",OWNER="oracle",GROUP="oinstall",MODE="660"
Re: Dave2011-10-17 08:35发表[回复][引用][举报]
回复Dream19881003: Redhat 下的这种配置有时是有问题的,可是直接使用命令进行映射。
将raw 的配置信息, 直接写入: /etc/rc.d/rc.local。 这样启动自动加载。


参考下面blog的1.10 小节:
http://blog.csdn.net/tianlesoftware/article/details/6048792


相关文章
|
11月前
|
Oracle 关系型数据库 测试技术
GoldenGate 对asm磁盘的访问的两种方式:asm实例连接和API(dblogreader)两种方式的对比
GoldenGate在抽取数据的时候要读取online redo里的数据,online redo很多时候是储存在asm磁盘里,对asm磁盘的访问有两种方式
102 0
|
存储 Java API
ASM 关键接口 MethodVisitor
ASM 关键接口 MethodVisitor
328 0
ASM 关键接口 MethodVisitor
|
SQL 关系型数据库 数据建模
asm 对磁盘名称的要求是否必须一致?
oracle asm 对磁盘名称并不要求一致。
1353 0
|
Oracle 关系型数据库 网络架构
asm 状态INTERMEDIATE
asm INTERMEDIATE,asm 磁盘中状态显示INTERMEDIATE。
3126 0
|
Oracle 关系型数据库 数据库管理
|
Oracle 关系型数据库 数据库
|
SQL 测试技术 数据库