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
建议继续学习:
- 数据映射–平衡二叉有序树 (阅读:3436)
- 数据映射–有序数组 (阅读:1815)
- JavaScript中真正的哈希映射(译) (阅读:1472)
- 数据映射–映射概述 (阅读:1257)
- 对象到数字 ID 的映射 (阅读:950)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:cacti 增加 Tokyocabinet 监控
文章信息
- 作者:wgzhao 来源: Linux|系统管理|WEB开发
- 标签: 映射 裸设备 逻辑卷
- 发布时间:2010-08-17 23:11:59
近3天十大热文
- [54] IOS安全–浅谈关于IOS加固的几种方法
- [52] android 开发入门
- [52] 如何拿下简短的域名
- [51] 图书馆的世界纪录
- [49] Go Reflect 性能
- [49] Oracle MTS模式下 进程地址与会话信
- [47] 【社会化设计】自我(self)部分――欢迎区
- [46] 读书笔记-壹百度:百度十年千倍的29条法则
- [35] 程序员技术练级攻略
- [27] 视觉调整-设计师 vs. 逻辑