IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

Linux|系统管理|WEB开发 2010-08-17 23:11:59 累计浏览 2,277 次
本机暂存

之前的版本如何做,这里不做描述,自行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. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 从磁盘映像中挂载或提取指定的 LVM 逻辑卷 (累计阅读 4,745)
  2. 存储基础知识之——磁盘阵列原理及操作实战 (累计阅读 4,588)
  3. LVM介绍 (累计阅读 3,768)
  4. Linux下如何迁移VG及文件系统 (累计阅读 3,474)
  5. ASM的争论 (累计阅读 3,313)
  6. ASM的争论 (累计阅读 3,236)
  7. 深入浅出Flashcache(五) (累计阅读 2,963)
  8. LINUX系统备份 (累计阅读 2,652)
  9. Centos(RHEL) 6 添加网卡的方法 (累计阅读 2,191)