欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2024-01-11 17:25:40
...

以下文档描述如何在linux的平台下使用Oracle的asmlib来访问多路径的磁盘,无论您使用哪种多路径的软件,该文档是建立在已经创建好

配置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)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2