在Redhat5之前的版本中,系统通过/etc/sysconfig/rawdevices配置raw的控制文件,通过/etc/init.d/rawdevices来管理raw设备的启动和关闭。而在Redhat5之后,原来的raw设备接口已经取消了,redhat5中通过udev规则进行配置。要配置,需要编辑/etc/udev/rules.d/60-raw.rules这个文件。
下面给出一个添加raw设备的测试过程。
1.现在虚拟机上添加一个硬盘。我们仅做测试,所以分10M。
2.启动我们的虚拟机,连上后查看磁盘情况
[root@centos~]#fdisk-l
Disk/dev/sda:16.1GB,16106127360bytes
255heads,63sectors/track,1958cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*20119581412113583Linux
/dev/sda212001606468+82Linuxswap/Solaris
Partitiontableentriesarenotindiskorder
Disk/dev/sdb:10MB,10485760bytes
64heads,32sectors/track,10cylinders
Units=cylindersof2048*512=1048576bytes
Disk/dev/sdbdoesn'tcontainavalidpartitiontable
这里的/dev/sdb因为是刚加上来的硬盘,还没有格式化。
3.格式化/dev/sdb
[root@centos~]#fdisk/dev/sdb
DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel
BuildinganewDOSdisklabel.Changeswillremaininmemoryonly,
untilyoudecidetowritethem.Afterthat,ofcourse,theprevious
contentwon'tberecoverable.
Warning:invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite)
Command(mforhelp):n
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):1
Firstcylinder(1-10,default1):
Usingdefaultvalue1
Lastcylinderor+sizeor+sizeMor+sizeK(1-10,default10):
Usingdefaultvalue10
Command(mforhelp):w
Thepartitiontablehasbeenaltered!
Callingioctl()tore-readpartitiontable.
Syncingdisks.
查看格式化之后的硬盘情况:
[root@centos~]#fdisk-l
Disk/dev/sda:16.1GB,16106127360bytes
255heads,63sectors/track,1958cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sda1*20119581412113583Linux
/dev/sda212001606468+82Linuxswap/Solaris
Partitiontableentriesarenotindiskorder
Disk/dev/sdb:10MB,10485760bytes
64heads,32sectors/track,10cylinders
Units=cylindersof2048*512=1048576bytes
DeviceBootStartEndBlocksIdSystem
/dev/sdb11101022483Linux
[root@centos~]#
4.修改/etc/udev/rules.d/60-raw.rules文件
[root@centos~]#more/etc/udev/rules.d/60-raw.rules
#Enterrawdevicebindingshere.
#
#Anexamplewouldbe:
#ACTION=="add",KERNEL=="sda",RUN+="/bin/raw/dev/raw/raw1%N"
#tobind/dev/raw/raw1to/dev/sda,or
#ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="1",RUN+="/bin/raw/dev/raw/raw2%M%m"
#tobind/dev/raw/raw2tothedevicewithmajor8,minor1.
设备名称:
ACTION=="add",KERNEL="<devicename>",RUN+="/bin/raw/dev/raw/rawX%N"
主/次号码:
ACTION=="add",ENV{MAJOR}="A",ENV{MINOR}="B",RUN+="/bin/raw/dev/raw/rawX%M%m"
用你需要绑定的设备名称替换<devicename>(如:/dev/sda1)。"A"和"B"是设备的主/次号码,X是系统使用的raw设备号码。在设置的时候,主次号码是可选的。如果不指定,默认从1,1开始,
如:/dev/raw/raw1:boundtomajor1,minor1
现在我们把/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
Startingudev:[OK]
6.查看raw设备:
[root@centos~]#ls-lrt/dev/raw
total0
crw-------1rootroot162,1Aug806:56raw1
[root@centos~]#raw-aq
/dev/raw/raw1:boundtomajor1,minor1
如果我们添加了下面的语句:
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="1",RUN+="/bin/raw/dev/raw/raw1%M%m"
那么就会显示我们指定的Major和minor。
[root@centos~]#ls-lrt/dev/raw
total0
crw-rw----1davetianlesoftware162,1Aug808:06raw1
[root@centos~]#raw-aq
/dev/raw/raw1:boundtomajor8,minor1
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
Startingudev:[OK]
[root@centos~]#ls-lrt/dev/raw
total0
crw-rw----1davetianlesoftware162,1Aug806:59raw1
[root@centos~]#raw-aq
/dev/raw/raw1:boundtomajor1,minor1
8. 取消raw 映射
把major and minor设成0,就可以取消裸设备的绑定。
[root@rac1 mapper]# raw /dev/raw/raw9 0 0
------------------------------------------------------------------------------
Blog:http://blog.youkuaiyun.com/tianlesoftware
网上资源:http://tianlesoftware.download.youkuaiyun.com
相关视频:http://blog.youkuaiyun.com/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1群:62697716(满);DBA2群:62697977(满)
DBA3群:63306533;聊天群:40132017
<!--EndFragment-->