Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10327586
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类:

2011-12-15 17:13:19

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

2010-11-24 10:23:37|  分类: 默认分类 |  标签: |字号 

原文:http://blog.wgzhao.com/2010/06/24/mapping-raw-devices-to-lvm-devices-on-redhat-as5-update-2-or-later.html

之前的版本如何做,这里不做描述,自行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
 
阅读(1132) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~