Linux平台上配置Oracle ASMLib和磁盘多路径

以下文档描述如何在linux 的平台下使用oracle asmlib 来访问多路径的磁盘,无论您使用哪种多路径的软件,该文档是建立在已经创建好了多路径磁盘的基础上的。这个文档给出的多路径磁盘的名称是" multipatha" ,和存储厂商无关。

      

涉及多路径软件的问题:

 

        在使用多路径软件的时候,我们有两个问题需要面对:ASM无法同时看到2次同样的磁盘,这样会出现错误。每块盘在多路径的配置下会出现至少3次,如:

     

        磁盘的第一条路径

        磁盘的第二条路径

        由多路径软件聚合的逻辑路径

     

 

下面是一个例子:假设一个系统有一个本地磁盘,为/ dev/ sda上,和一个磁盘通过外部存储连接.该主机拥有2条链路或者路径来访问这个外部的存储。

 

LinuxSCSI驱动会看到所有的这两条路径。他们会显示成/dev/sdb/dev/sdc.系统可以通过sdb或者sdc来访问到同样的终端。

此时,如果我们启用多路径的软件来管理,会有一条多路径软件聚合出来的磁盘 ,如/dev/multipatha,它能通同时访问到这两个路径,也就是说,任何I/ O使用multipatha可以通过任何一条路径来访问磁盘。

如果一个系统使用sdb路径,而这条链路上的电缆呗拔出是,这个系统会收到错误。但是multipath的磁盘会知道切换到sdc的路径上去继续工作。

 

大部分的软件是无法识别出来多路径的配置的,它可以使用任何一条路径:sdb或者sdc或者是multpatha,并且是无法知道有什么区别的。ASMLIB也一样,默认的配置中,ASMLIB也是不会关心使用那条路径的。

ASMLIB会选择,并且只会选择一条路径,因为ASM不能同时管理两块相同的磁盘。这样我们就解决了第一个问题。ASM只会看到一条路径,而且可以正常的工作。

 

这就出现了第二个问题:ASM究竟看到的是那个路径?

默认的情况下,ASMLIB会选择第一条它找到的路径.Linux系统中给出的第一条路径,第一条路径取决于磁盘的驱动,它可能是multipath 或者是某一条单路径。

 

系统管理员希望ASMLIB始终使用多路径的磁盘!如果Oracle不是使用它,有什么指定的方式吗?

 

答案是没有,尽管如此,如果我们想让ASMLIB知道多路径软件的磁盘看起来是什么样的,那么我们必须通过配置来告诉它:

 

 

 

 

磁盘扫描顺序:

 

                   ASMLIB是通过ASMLIB安装中描述的过程来把磁盘标识成ASMLIB使用的磁盘。ASMLIB通过一个磁盘扫描的过程来知道哪些磁盘是被标识过的。ASMLIB每次启动的时候都会运行一次这样的扫描,当然系统管理员可以通过/etc/init.d/oracleasm scandisks的命令来强制做一次扫描。

ASMLIB会检查系统中的每一块磁盘。它会检查每一块盘是否被标识成了asmlib的磁盘,所有被标识过的磁盘都是ASMLIB的有效盘,通常情况下,ASMLIB通过OS的列表顺序来检查这些磁盘,大部分的OS都能提供合理的顺序。     

    上边我们说的情况,我们描述了一种OS的顺序不够好的情况。系统管理员希望ASMLIB在看到单路径的盘之前先扫描到多路径的聚合磁盘。这样ASMLIB会选择多路径聚合出来的磁盘,并把它交给Oracle使用。

ASMLib允许两种修改方式来控制磁盘扫描的顺序。第一种,它允许我们排除一部分不需要扫描的磁盘。换句话说,ASMLib会完全忽略折现磁盘。第二种,系统管理员可以指定哪些磁盘先被扫描.指定的这些磁盘会在系统中其它磁盘扫描之前完成扫描。

     多路径软件配置中可以使用任意一种方式,系统管理员可以选择排除所有的单路径磁盘的方式,这样ASMLib会忽略他们,只扫描多路径的磁盘。或者系统管理员可以指定多路径的盘被先扫描。这样ASMLib就会先发现聚合路径的盘,优先选择先发现的磁盘。

  

  

配置扫描的顺序:

ASMLib的配置文件的路径在/etc/sysconfig/oracleasm.它被链接到文件/etc/sysconfig/oracleasm-_dev_oracleasm 工具会读取后边的这个文件。这里包含了所有系统管理员通过/etc/init.d/oracleasm configure 命令配置的启动配置信息,但是命令不能配置扫描的顺序。

该配置文件中包含很多配置的变量。

ORACLEASM_SCANORDER 参数指定了哪些磁盘被优先扫描;

ORACLEASM_SCANEXCLUDE参数指定了哪些磁盘在扫描的过程中被忽略掉;

该变量用空格分隔的前缀字符串列表来匹配.换言之,如果一个磁盘的开始部分和前缀相同,那么就是匹配。例如,前缀字符串sd会匹配到所有的SCSI驱动的设备。注意不是模糊匹配.参数里不要使用通配符,他们是简单的前置字符。另外注意 /dev/ 路径并不是前置字符的一部分。

 

注意:当扫描的过程中,只有内核知道的设备名才会被扫描得到。当使用device-mapper的时候,内核看到的设备是/dev/dm-XX。在/dev/mapper/XXX中的设备名称是udev创建的其它可读性的名称。无论是ORACLEASM_SCANORDER 还是 ORACLEASM_SCANEXCLUDE必须使用 dm 前置字符。

 

以下是一些例子:

 

注意:如果我们手工的编辑/etc/sysconfig/oracleasm,一定确保不要破坏该文件到/etc/sysconfig/oracleasm-_dev_oracleasm的链接。

 

多路径磁盘优先读取:

 

系统管理员配置ASMLib来有限读取多路径软件的聚合盘,在ASMLib的配置文件中,编辑ORACLEASM_SCANORDER变量,如下格式:

 

 

ORACLEASM_SCANORDER="multipath sd"

 

此时,在扫描的过程中,ASMLib会首先寻找以"multipath"开头的磁盘。多路径的设备/dev/multipatha 当然是符合的。这样它就会被优先扫描到。然后ASMLib开始寻在以"sd"开头的磁盘。这些是SCSI的磁盘。本地设备/dev/sda会被扫描到,但是它并非一个ASM的磁盘。

单路径的磁盘/dev/sdb/dev/sdc也会被扫描到,他们是ASM的磁盘,但是ASMLib 会发现已经有了一条通道来访问它。ASMLib会忽略他们。接下来ASMLib会继续扫描其它没有匹配前置字符的磁盘。

 

 

排除单路径的磁盘:

 

系统管理员可以配置ASMLib来忽略但路径的磁盘。在ASMLib的配置文件中,编辑ORACLEASM_SCANEXCLUDE变量,如下格式:

 

 

ORACLEASM_SCANEXCLUDE="sdb sdc"

 

这里,系统管理员做了一些配置。ASMLib会排除掉完全匹配的磁盘/dev/sdb/dev/sdc.它不会忽略其他的SCSI磁盘。这样,ASMLib在扫描的过程中就会忽略这2块磁盘,仅仅会看到/dev/multipath的磁盘,同样,Oracle会使用多路径的磁盘。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12798004/viewspace-1611586/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12798004/viewspace-1611586/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值