你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2014-10-28] 来源:Linux社区  作者:pxbibm [字体: ]

配置Oracle ASMLIB和多路径磁盘

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

涉及多路径软件的问题:

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

磁盘的第一条路径

磁盘的第二条路径

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

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

Linux的SCSI驱动会看到所有的这两条路径。他们会显示成/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 命令配置的启动配置信息,但是命令不能配置扫描的顺序。

该配置文件中包含很多配置的变量。我们可以使用以下2个:

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会使用多路径的磁盘。

EMC PowerPath 和ASMLib

很多系统管理员会使用EMC PowerPatch来做多路径和ASMLib的磁盘配置。

尽管如此,PowerPath和2.4 kernels EMC是不支持的。Linux系统2.6内核,如RHEL 4或者SLES 9以及2.0ASMLib kernel 驱动是支持的。

关于EMC Power Patch的使用,请参考EMC Support Matrix的文档来校验任何/所有 兼容性的需求是否满足。

如果您有任何关于 ASMLib 和 PowerPath 在Linux 2.4 Kernel上的使用,如RHEL3 SLES8 等平台上的疑问,请咨询EMC

CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htm

Oracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htm

Debian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-10/108565.htm

linux
相关资讯       Oracle ASMLib  Oracle路径 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款