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

oracle asm lib中使用multipath的陷井

Alibaba DBA Team 2009-10-10 18:25:59 累计浏览 2,766 次
本机暂存

    今天,查看一个数据库时,发现这个数据库没有使用到powerpath提供的多路径盘上。

    这个数据库使用EMC的存储,操作系统是Linux,使用了asm lib包。

    查看/dev/oracleasm/disks下的盘时:

    #cd /dev/oracleasm/disks

    #ls -l

    admin@dbrac1:/dev/oracleasm/disks>ls -l

    total 0

    brw-rw―- 1 oracle dba 65,  17 Jun 18 16:44 ASM_VOL1

    brw-rw―- 1 oracle dba 65,   1 Jun 18 16:44 ASM_VOL10

    brw-rw―- 1 oracle dba 65,  33 Jun 18 16:44 ASM_VOL11

    brw-rw―- 1 oracle dba  8, 113 Jun 18 16:44 ASM_VOL12

    brw-rw―- 1 oracle dba  8, 225 Jun 18 16:44 ASM_VOL13

    brw-rw―- 1 oracle dba  8, 129 Jun 18 16:44 ASM_VOL14

    brw-rw―- 1 oracle dba  8,  81 Jun 18 16:44 ASM_VOL15

    #cd /dev

    #ls -l |grep “65, ”

    admin@dbrac1:/dev>ls -l |grep “65, ”

    brw-r―-  1 root   disk  65,    0 Jun 19 00:42 sdq

    brw-r―-  1 root   disk  65,    1 Jun 18 16:44 sdq1

    brw-r―-  1 root   disk  65,   16 Jun 19 00:42 sdr

    brw-r―-  1 root   disk  65,   17 Jun 18 16:43 sdr1

    发现/dev/oracleasm/disks下面的盘居然不是对应到/dev/emcpowerXX盘,

    由此基本确定了asm lib没有使用多路径的盘,原先创建asm disk明明是使用

    /dev/emcpower盘建立的:

    /usr/sbin/asmtool -C -l /dev/oracleasm -n  ASM_VOL1 -s /dev/emcpowera1

    现在为何不是了?

    通过分析asm lib的原理,基本清楚原因是这样的:

    asm lib包只是对盘起一个名字,如“ASM_VOL1″,然后把这个名字存入磁盘的内容的头部。

    下次机器自动启动时,会自动运行/etc/rc.d/init.d/oracleasm start,这时会自动扫描硬盘,

    扫描过程中,是会读前面我们写入名称,由于使用了多路径,那么在/dev/下会有几个设备名对

    应着同一个硬盘,其中/dev/sdXX的是各个路径盘,/dev/emcpowerXX是把这些路径合并了一个

    盘,正常情况下我们都会要求asmlib使用/dev/emcpowerXX盘,但asm lib的扫描规则是使用最先扫描到的盘,

    后面再扫描到的设备,只要上面的名称与前面相同,就使用前面的设备名,不管再次扫描到的了。

    而一般情况下,asm lib都会先扫描到/dev/sdXX盘,而不是/dev/emcpowerXX的盘,由此导致了

    此问题的发生。

    其实oracle的官方网站也说了此问题:

    http://www.oracle.com/technology/tech/linux/asmlib/multipath.html

    解决方法就是修改配置文件中asm lib的扫描顺序,在/etc/sysconfig/oracleasm中配置如下内容:

    ORACLEASM_SCANORDER=”emc sd”

    这样扫描时会先扫描/dev/下emc开头的文件,然后才会是/dev下sd开头的文件。

    这个问题很隐蔽,在安装asm lib时,没有任何地方提示需要配置这个扫描顺序,

    当用/usr/sbin/asmtool -C -l /dev/oracleasm -n  ASM_VOL1 -s /dev/emcpowera1建asm lib盘时,

    也会正确建立在多路径盘上,但当机器重新启动后,asm lib重新扫描磁盘时,就会扫到错误的盘上。

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. Oracle MTS模式下 进程地址与会话信息 (累计阅读 14,408)
  3. 我的 RHCA 之路 (累计阅读 14,013)
  4. Linux内存点滴 用户进程内存空间 (累计阅读 13,229)
  5. 给程序员新手的一些建议 (累计阅读 13,089)
  6. Linux 性能监控、测试、优化工具 (累计阅读 13,011)
  7. 关于linux内存free的一些事情 (累计阅读 12,867)
  8. ps - 按进程消耗内存多少排序 (累计阅读 12,687)
  9. Google怎么用linux (累计阅读 12,581)
  10. Linux Used内存到底哪里去了? (累计阅读 11,867)