Oracle RAC集群如何配置multipath多路径并创建ASM共享磁盘?

来源:编程学习作者:广州网站建设头衔:草根站长
导读:本期聚焦于广州网站建设创作的《Oracle RAC集群如何配置multipath多路径并创建ASM共享磁盘?》,敬请观看详情。搭建Oracle RAC集群时,共享存储的多路径配置是绕不开的关键环节。同一块LUN通过多条物理链路访问时,如果直接用设备名挂载,容易出现链路故障后IO中断的问题,而udev规则与multipath的结合使用正是解决这一痛点的标准方案。本文围绕Oracle RAC环境下multipath多路径的完整配置流程展开,涵盖多路径软件安装、multipath.conf文件编写、wwid获取与别名设置、udev规则绑定、属主权限调整以及ASM磁盘的创建验证等核心步骤,同时分析了配置过程中常见的权限不一致、设备名漂移等问题的排查思路,适合正在规划或部署RAC的DBA与系统管理员参考。

在Oracle RAC集群的部署过程中,共享存储的配置质量直接决定了整个集群的稳定性。生产环境中,为了实现存储链路冗余,服务器通常通过两条甚至更多条光纤链路连接到存储阵列,这就会导致同一个LUN在操作系统层面出现多个设备名称,比如/dev/sdb和/dev/sdc实际指向的是同一块物理磁盘。如果不做任何处理,Oracle的ASM实例会把这些设备当成不同磁盘,一旦其中一条链路抖动或切换,就可能引发节点驱逐等严重故障。本文将以Linux平台为例,详细讲解multipath多路径的配置方法以及ASM共享磁盘的完整创建流程。

Oracle RAC集群如何配置multipath多路径并创建ASM共享磁盘?

一、为什么RAC环境必须配置多路径

首先需要理解多路径存在的必要性。当服务器配置了双HBA卡、每个HBA卡分别连接到存储的两个控制器时,一块LUN会被识别为多个块设备。以常见的双链路为例,系统会识别出/dev/sdb和/dev/sdc两个设备,通过scsi_id查询会发现它们的wwid完全相同,说明这其实是同一条通往同一块LUN的不同路径。

如果ASM直接使用/dev/sdb这样的裸设备名,会带来两个严重问题。第一,设备名不具备稳定性,Linux内核在扫描SCSI总线时,设备名的分配顺序与扫描顺序有关,服务器重启或存储链路恢复后,sdb和sdc完全可能互换身份,导致ASM找不到原本的磁盘。第二,没有故障切换能力,当sdb对应的物理链路出现故障时,即使sdc链路依然健康,正在通过sdb下发的IO也会直接失败。

Device Mapper Multipath(DM-Multipath)组件正是为了解决这些问题而生的。它将多条物理路径聚合成一个虚拟设备(通常为/dev/mapper/xxx),对上层的ASM屏蔽底层路径细节,并在路径故障时自动把IO切换到健康路径上,配合udev规则固定设备权限后,就能为RAC提供一个稳定可靠的共享磁盘访问入口。

二、multipath多路径的安装与配置

主流的Linux发行版默认可能没有安装多路径软件,需要先确认并安装相关组件。在RHEL或Oracle Linux环境下执行以下命令即可:

# 检查是否已安装
rpm -qa | grep device-mapper-multipath

# 未安装则通过yum安装
yum install -y device-mapper-multipath
# 启动并设置开机自启
systemctl enable --now multipathd

安装完成后,核心工作是编写/etc/multipath.conf配置文件。这个文件定义了路径聚合策略、别名以及路径选择算法。对于Oracle RAC场景,推荐的配置如下:

defaults {
    user_friendly_names yes
    find_multipaths yes
}

blacklist {
    devnode "^(ram|raw|loop|fd|sr|scd)[0-9]*"
    devnode "^sd[a-z]+$"    # 实际项目中按需调整
}

multipaths {
    multipath {
        wwid    "3600a0980383036345a2b4c5d6e7f8a9b"
        alias   ocr_vote
    }
    multipath {
        wwid    "3600a0980383036345a2b4c5d6e7f8a9c"
        alias   data01
    }
}

配置中的wwid是全局唯一的磁盘标识,可以通过multipath -ll命令或者/lib/udev/scsi_id -g -u /dev/sdb来获取。建议为RAC的每块共享磁盘设置语义清晰的别名,比如ocr_vote、data01、fra01等,方便后续维护时一眼识别磁盘用途。blacklist部分需要特别注意,要把操作系统本地盘排除在外,避免本地磁盘被聚合进多路径设备。

修改完配置后执行multipath -rr重新加载,再用multipath -ll验证聚合结果。正常情况下会看到类似下面的输出,显示两条路径分别处于ready状态,并按照设定的策略工作:

ocr_vote (3600a0980383036345a2b4c5d6e7f8a9b) dm-2
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 1:0:0:1 sdb 8:16  active ready running
| `- 2:0:0:1 sdd 8:48  active ready running

三、udev规则绑定与权限设置

多路径设备创建好之后,还面临最后一个问题:设备属主和权限。ASM磁盘需要被grid用户的asmadmin组读写,而系统默认创建的mapper设备属主是root,直接使用会报权限错误。虽然可以直接用chown修改,但每次重启后权限会还原,因此必须借助udev规则实现持久化。

针对multipath设备,推荐通过wwid匹配的方式编写udev规则,创建文件/etc/udev/rules.d/99-oracle-asmdevices.rules,内容示例如下:

KERNEL=="dm-*", ENV{DM_UUID}=="mpath-3600a0980383036345a2b4c5d6e7f8a9b", \
  OWNER:="grid", GROUP:="asmadmin", MODE:="0660"

KERNEL=="dm-*", ENV{DM_UUID}=="mpath-3600a0980383036345a2b4c5d6e7f8a9c", \
  OWNER:="grid", GROUP:="asmadmin", MODE:="0660"

这里的DM_UUID是multipath设备特有的环境变量,值为mpath-前缀加上wwid,比直接匹配设备名可靠得多。规则编写完成后,执行udevadm control --reload-rules和udevadm trigger重新触发,或者干脆重启服务器验证。检查时执行ls -l /dev/mapper/,确认ocr_vote和data01的属主为grid、属组为asmadmin、权限为0660即表示配置成功。

需要强调的是,RAC是集群环境,所有节点的multipath.conf中的wwid、别名以及udev规则必须完全一致,否则不同节点看到的设备映射关系会错乱,创建磁盘组时可能把IO写到不同的物理磁盘上,造成数据损坏。建议配置完成后在两个节点分别执行multipath -ll并逐项比对输出。

四、ASM磁盘组的创建与验证

多路径设备就绪后,就可以进入ASM阶段。如果使用AFD(ASM Filter Driver)或者直接使用裸设备路径,在创建磁盘组时指定/dev/mapper/ocr_vote即可。通过grid用户启动asmca图形工具,或使用SQL语句创建磁盘组的典型方式如下:

CREATE DISKGROUP OCR_VOTE NORMAL REDUNDANCY
  FAILGROUP fg1 DISK '/dev/mapper/ocr_vote' NAME ocr_vote_1
  FAILGROUP fg2 DISK '/dev/mapper/ocr_vote_2' NAME ocr_vote_2
  ATTRIBUTE 'compatible.asm'='19.0.0.0',
            'au_size'='4M';

创建成功后,建议做一轮完整的验证:首先在两个节点分别查询v$asm_disk视图,确认所有磁盘的HEADER_STATUS为MEMBER且PATH一致;然后通过dd或kfed工具简单读取设备头信息,验证节点间确实访问的是同一块磁盘;最后可以模拟一条链路故障,比如临时拔掉一根光纤线,观察multipath -ll中路径状态的变化以及ASM层面的IO是否平滑切换,这是检验多路径配置是否真正生效的最直接手段。

此外还有一些实践经验值得参考。OCR和Voting Disk所在的磁盘组建议使用NORMAL冗余并保证故障组分布在不同的存储控制器上;数据磁盘组应根据容量规划合理选择外部冗余或正常冗余;磁盘组的AU大小设置为4M对大数据库的性能更有利。所有配置变更都应在业务低峰期进行,并提前保存好multipath.conf和udev规则的备份副本,方便故障时快速回滚。

总结来说,RAC共享磁盘配置的核心思路可以概括为三步:用multipath把多条物理路径聚合成稳定设备,用udev固化设备属主和权限,最后把聚合设备交给ASM管理。每一步都做到位并在多节点间保持一致,整个集群的存储基础才算是牢靠的。

Oracle RACmultipathASM磁盘修改时间:2026-09-02 20:51:05

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260902/49136.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。