原创,转载请注明出处。
我的OS是RHEL6.2,
需要对99块逻辑卷进行raw设备映射,使用udev来对raw进行管理
修改/etc/udev/rules.d/60-raw.rules:
ACTION=="add", KERNEL=="/dev/mapper/oracle_vg01-rlvoracle01", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="7", RUN+="/bin/raw /dev/raw/raw1 %M %m" //这两行是必须的。
......
ACTION=="add", KERNEL=="/dev/mapper/oracle_vg01-rlvoracle98", RUN+="/bin/raw /dev/raw/raw98 %N"
ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="104", RUN+="/bin/raw /dev/raw/raw98 %M %m"
ACTION=="add", KERNEL=="/dev/mapper/oracle_vg01-rlvoracle99", RUN+="/bin/raw /dev/raw/raw99 %N"
ACTION=="add", ENV{MAJOR}=="253",ENV{MINOR}=="105", RUN+="/bin/raw /dev/raw/raw99 %M %m"
配置完了之后start_udev重启udev。
发现实际只映射成功了94块逻辑卷:
[root@localhost ~]# raw -qa
/dev/raw/raw1: bound to major 253, minor 7
/dev/raw/raw2: bound to major 253, minor 8
/dev/raw/raw3: bound to major 253, minor 9
/dev/raw/raw4: bound to major 253, minor 10
....
/dev/raw/raw90: bound to major 253, minor 96
/dev/raw/raw91: bound to major 253, minor 97
/dev/raw/raw92: bound to major 253, minor 98
/dev/raw/raw93: bound to major 253, minor 99
/dev/raw/raw94: bound to major 253, minor 100
剩余的几块逻辑卷(95,96,97,98,99)却没有映射工程。
手动进行映射:
[root@localhost ~]# raw /dev/raw/raw95 /dev/mapper/oracle_vg01-rlvoracle95
/dev/raw/raw95: bound to major 253, minor 96
[root@localhost ~]# raw /dev/raw/raw96 /dev/mapper/oracle_vg01-rlvoracle96
/dev/raw/raw96: bound to major 253, minor 97
[root@localhost ~]# raw /dev/raw/raw97 /dev/mapper/oracle_vg01-rlvoracle97
/dev/raw/raw97: bound to major 253, minor 98
[root@localhost ~]# raw /dev/raw/raw98 /dev/mapper/oracle_vg01-rlvoracle98
/dev/raw/raw98: bound to major 253, minor 99
发现新的设备的minor号与配置文件中的设备minor居然相同,显然这个是异常的。
那么问题出现在什么地方呢,首先的问题是手动映射的minor号是怎么的分配出来的呢?
我找了调查了2天,偶然发现设备的Block device与raw设备映射的信息一致
[root@localhost ~]# lvdisplay /dev/mapper/oracle_vg01-rlvoracle98
--- Logical volume ---
LV Name /dev/oracle_vg01/rlvoracle98
VG Name oracle_vg01
LV UUID FH4b9q-jccY-6I74-G9CT-apYr-XSU7-RcIqaH
LV Write Access read/write
LV Status available
# open 0
LV Size 12.00 MiB
Current LE 3
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:99
多做了几次比对,得出的结论是:
手动映射的major与minor号就是根据这里的Block device生成的。
而我之前/etc/udev/rules.d/60-raw.rules中人为的指定的minor号与设备自身的Block device不一致,这就导致了udev在管理raw设备的时候出现了问题。
那么此类问题的解决方法:
1./etc/udev/rules.d/60-raw.rules中的要根据设备的Block device(lvdisplay /dev/mapper/oracle_vg01-rlvoracle98)来设置设备的major与minor号。
2.不用udev来管理raw,修改rc.local文件.
参考http://space.itpub.net/?uid-231499-action-viewspace-itemid-63884
需要说明的是,rc.local文件实际上就是raw /dev/raw/rawN /dev/mapper/oracle_vg01-rlvoracleN。
另外一点需要重点说明,
1.major与minor的这种异常,在建立基于raw设备的oracle数据库的表空间的时候,会导致莫名其妙的device busy错误,而这种device busy,即使你使用fuser 或者lsof也查看不到设备的使用者,google上根本就查不到,我也是偶然件发现这个异常以及原因。
SQL> alter tablespace test add datafile '/dev/raw/raw4' size 4090m;
alter tablespace test add datafile '/dev/raw/raw4' size 4090m
*
ERROR at line 1:
ORA-01119: error in creating database file '/dev/raw/raw4'
ORA-27041: unable to open file
Linux-x86_64 Error: 16: Device or resource busy
Additional information: 1
2.使用dd if=/dev/raw/rawN of=/dev/raw/rawM也会出现莫名奇妙的device busy
我把这点宝贵的经验写出来,给自己提个醒,也给大家做个参考。
分享到:
相关推荐
关于C盘文件格式变为RAW解决方法。。。。
raw数据详细解析,并且含有raw数据的查看方法,可以工具查看raw数据的图片,查看是否正确?是否有问题?
一般来说,移动硬盘的格式应该是FAT或者FAT32的,但如果硬盘损坏或者中毒,其格式会变成RAW的。本人结合自己的实践经验,总结出一套解决移动硬盘变成RAW而打不开的方法,以供参考。
实现rgb图像到raw格式的image的转化。
读取raw文件,并对每一帧进行均值处理 对相邻帧进行差分 matalab实现
读取rawData图像,其中实现了raw data图像转BMP图像。主要使用的opencv库
labview中usb raw设备的读取和写入程序
我的相机是70d,之前安装Photoshop6后也打不开RAW格式的照片,然后网上查了一下是RAW插件没有更新,RAW插件是8.0的插件,是最新插件支持很多新的机型直出的RAW格式照片,同伴们如果遇到相应的问题可以试试。...
ITween不能修改Image和RawImage的问题这里解决了,还有好多的使用范例。
ImageJ 查看RAW图像工具,ImageJ 查看RAW图像工具,ImageJ 查看RAW图像工具
标准无头raw转通用dcm工具,需要源码或者原理(少量费用)的私信我
索尼微单RAW格式导入电脑看图必备插件 SONY数码相机RAW解码驱动安装包(索尼RAW驱动.exe)安装后可以让索尼的RAW格式文件在 (WIN7-10) 下预览,实现了对SONY拍摄的RAW格式数据的支持。
针对图像处理中常用的RAW文件格式,用MATLAB读取这类文件
最原始的bayer raw图片,CinemaDNG是无压缩的RAW,未经过任何处理的Sensor输出的数据,电影数字负片仿若胶片,为后期提供理论上最大的调整空间。
C#raw Socket编程C#raw Socket编程 实现raw Socket编程
Bmp2raw is a tool to convert 24bit BMP file to raw data. It may be useful before generating C arrays for showing a picture in a embeded system. The color order in the output file is (B,G,R),(B,G,R),...
虚拟打印机开发时可以在端口截获raw文件; 然后可以将raw文件打印至其他打印机。 SDK函数的调用序列为: OpenPrinter-->StartDocPrinter-->StartPagePrinter-->WritePrinter-->EndPagePrinter-->...
利用matlab进行编译,显示raw格式的裸数据
raw10原始图像,拜尔模式rggb
该程序实现打开工业相机采集的12位raw格式的图像,基于opencv编写的,注意配置opencv设置,在release文件夹里放了所需的opencv数据库!