技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> redhat el5如何映射裸设备到逻辑卷

redhat el5如何映射裸设备到逻辑卷

浏览:1574次  出处信息

之前的版本如何做,这里不做描述,自行google。

之前通常的方法,在该版本,KERNEL并不能直接获得设备名称或者主次设备号,我们需要通过dmsetup指令来间接获得。

一下操作的目录均在/etc/udev/rules.d/。

1)编辑90-dm.rules文件,注释掉下面则行

KERNEL==”dm-[0-9]*”, ACTION==”add”, OPTIONS+=”ignore_device”

2)编辑60-raw.rules文件,加入下面几行:

KERNEL!="dm-[0-9]*",GOTO="skip_dm"
PROGRAM!="/sbin/dmsetup  ls --exec /bin/basename -j %M -m %m", GOTO="skip_dm"
RESULT=="vg1-lv1", RUN+="/bin/sh -c '/bin/raw /dev/raw/raw1 $MAJOR $MINOR'"
LABEL=skip_dm
上面第一行代码表示如果不是dm设备,则直接跳到skip_dm处
第二行表示如果后面的指令返回为假(非0值),则跳到skip_dm处。
如果以上条件满足,则来到真正的裸设备映射指令。注意要注意的是RESULT给出的结果是/dev/mapper下的lv名称,而不是大家通过google查询到的一些资料所宣称的mpath1,当然,到底这里结果值是多少,我们下面会通过测试来获得。后面的RUN指令就比较浅白了,直接通过主次设备号来做绑定。
如果还有其他LVM设备需要绑定,依次添加类似行。
但是,但是,如果你有上百个LVM设备需要做裸设备映射呢?难道写上几百行。当然不需要这样,我们可以通过匹配方式来操作,就像下面这样:
RESULT=="vg1-lv[0-9]*",RUN+="/bin/sh -c '/bin/raw /dev/raw/raw$MINOR $MAJOR $MINOR'"
这里我们通过次设备号来作为裸设备的编号依次映射。
恩,看上去很好,But,这里有个bug,那就是我们无法对raw0这样的设备进行映射,而第一个LV对应的MINOR恰好是0的话(很不幸,大部分情况是这样),那我们该怎么办。简单的办法是每次给MINOR+1来作为裸设备的编号。就像下面这样:
RESULT=="vg1-lv[0-9]*",RUN+="/bin/sh -c '/bin/raw /dev/raw/raw$((MINOR+1)) $MAJOR $MINOR'"
看上去很美好,很遗憾,我在Asianux 3.0 SP2,Centos 5.4版本上均没有成功。所以我采取了下面折衷的办法:
以下是代码片段:
KERNEL!="dm-[0-9]*",GOTO="skip_dm"
PROGRAM!="/sbin/dmsetup ls --exec /bin/basename -j %M -m %m", GOTO="skip_dm"
RESULT=="vg1-lv[0-9]*", RUN+="/bin/sh -c ’if [ $MINOR -eq 0 ]; then /bin/raw /dev/raw/raw256 $MAJOR $MINOR; else /bin/raw /dev/raw/raw$MINOR $MAJOR  $MINOR;fi’"
LABEL=skip_dm
上面的做法是如果次设备号是0的话,我们尽可能把他映射到裸设备编号靠后的设备,这里采取的是256。如果你需要映射的设备操作超过256的话,你知道该怎么办
保存该文件后,执行start_udev,然后执行raw -qa,看看是不是已经绑定了,类似如下:
/dev/raw/raw1:	bound to major 253, minor 1
/dev/raw/raw2:	bound to major 253, minor 2
/dev/raw/raw3:	bound to major 253, minor 3
/dev/raw/raw4:	bound to major 253, minor 4
/dev/raw/raw5:	bound to major 253, minor 5
/dev/raw/raw6:	bound to major 253, minor 6
/dev/raw/raw7:	bound to major 253, minor 7
/dev/raw/raw8:	bound to major 253, minor 8
/dev/raw/raw9:	bound to major 253, minor 9
/dev/raw/raw10:	bound to major 253, minor 10
/dev/raw/raw11:	bound to major 253, minor 11
/dev/raw/raw12:	bound to major 253, minor 12
/dev/raw/raw13:	bound to major 253, minor 13
/dev/raw/raw14:	bound to major 253, minor 14
/dev/raw/raw15:	bound to major 253, minor 15
/dev/raw/raw16:	bound to major 253, minor 16
/dev/raw/raw17:	bound to major 253, minor 17
/dev/raw/raw18:	bound to major 253, minor 18
/dev/raw/raw19:	bound to major 253, minor 19
/dev/raw/raw256:	bound to major 253, minor 0

建议继续学习:

  1. 数据映射–平衡二叉有序树    (阅读:3436)
  2. 数据映射–有序数组    (阅读:1815)
  3. JavaScript中真正的哈希映射(译)    (阅读:1472)
  4. 数据映射–映射概述    (阅读:1257)
  5. 对象到数字 ID 的映射    (阅读:950)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1