Oracle RAC ASM 磁盘扩容实战

举报
Lucifer三思而后行 发表于 2026/10/23 14:17:37 2026/10/23
【摘要】 前言 最近给一套 Oracle 11g RAC 数据库扩容 ASM 磁盘,存储侧已经完成 LUN 映射,需要在操作系统上识别新盘,并将其加入现有的 DATA 磁盘组。 这套环境使用 Linux Multipath 管理存储多路径,通过 UDEV 配置 ASM 磁盘权限,ASM 直接使用 /dev/m

前言

最近给一套 Oracle 11g RAC 数据库扩容 ASM 磁盘,存储侧已经完成 LUN 映射,需要在操作系统上识别新盘,并将其加入现有的 DATA 磁盘组。

这套环境使用 Linux Multipath 管理存储多路径,通过 UDEV 配置 ASM 磁盘权限,ASM 直接使用 /dev/mapper 下的设备。

本次新增一块 600G 磁盘,整个扩容过程不需要停止数据库服务,记录一下完整操作流程,后续遇到类似需求可以直接参考。

一、操作系统扫描新盘

存储管理员完成 LUN 映射后,在两个 RAC 节点分别使用 root 用户扫描 SCSI 总线。

for host in /sys/class/scsi_host/host*; do
    echo "- - -" > "$host/scan"
done

扫描完成后检查:

lsblk
multipath -ll

确认新增磁盘已经被系统识别,并检查 Multipath 是否正常聚合存储路径。

mpathX (3600xxxxxxxxxxxxxxxxxxxxxxxxxxxxx) dm-X DGC,VRAID
size=600G
|-+- policy='round-robin 0' prio=50 status=active
| |- sdX active ready running
| `- sdY active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- sdZ active ready running
  `- sdW active ready running

两个节点需要确认新增磁盘的 WWID 一致,确保访问的是同一块共享 LUN。

二、配置 Multipath 固定别名

为了避免设备名称发生变化,建议通过 WWID 为新盘配置固定别名。

先备份配置文件:

cp -p /etc/multipath.conf \
/etc/multipath.conf.bak_$(date +%Y%m%d_%H%M%S)

编辑:

vi /etc/multipath.conf

在现有 multipaths 配置块中增加新盘映射:

multipath {
    wwid    3600xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    alias   data12
}

其中 WWID 替换为实际新盘的 WWID,data12 根据现场磁盘命名规则调整。

重新加载 Multipath 配置:

service multipathd reload

检查:

multipath -ll data12
multipathd -k"show maps"

确认新盘已经正确映射为 /dev/mapper/data12。

两个 RAC 节点都需要配置相同的 WWID 与 alias。如果重新加载后别名没有立即生效,应先检查现有映射状态,不要直接清除正在使用的 Multipath 设备。

三、配置 UDEV 磁盘权限

ASM 使用的磁盘需要具备正确的设备权限。本次环境采用 UDEV 管理,现有 ASM 磁盘权限为:

grid:asmadmin  660

先备份规则文件:

cp -p /etc/udev/rules.d/60-dm-permissions.rules \
/etc/udev/rules.d/60-dm-permissions.rules.bak_$(date +%Y%m%d_%H%M%S)

追加新盘规则:

cat >> /etc/udev/rules.d/60-dm-permissions.rules <<'EOF'
ENV{DM_NAME}=="data12", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"
EOF

重新加载 UDEV 规则:

udevadm control --reload-rules

查询新盘对应的实际 dm-* 编号:

multipath -ll data12

假设当前节点对应 dm-12,执行:

udevadm trigger --action=change \
  --sysname-match=dm-12

udevadm settle

两个节点的 dm-* 编号可能不同,必须分别确认。

检查权限:

ls -lL /dev/mapper/data12
ls -l /dev/iscsi/oraasm-data12

预期:

brw-rw---- 1 grid asmadmin ... /dev/mapper/data12

至此,新盘的持久化命名及权限配置完成。

四、检查 ASM 磁盘状态

切换到 Grid 用户,连接 ASM 实例:

su - grid
sqlplus / as sysasm

查看 ASM 磁盘发现路径:

SHOW PARAMETER asm_diskstring;

本次环境配置为:

asm_diskstring = /dev/mapper

查询新盘:

SET LINES 200
COL PATH FOR A50

SELECT
    GROUP_NUMBER,
    DISK_NUMBER,
    NAME,
    PATH,
    HEADER_STATUS,
    MOUNT_STATUS,
    STATE,
    TOTAL_MB
FROM V$ASM_DISK
WHERE PATH = '/dev/mapper/data12';

对于尚未加入磁盘组的全新磁盘,通常可以看到:

HEADER_STATUS  MOUNT_STATUS
-------------  ------------
CANDIDATE      CLOSED

同时确认两个 ASM 实例均能发现新盘,并核实磁盘 WWID、容量、权限及磁盘头状态。新盘必须是经过存储管理员确认、可供本次扩容使用的 LUN。

再检查目标磁盘组:

SELECT
    NAME,
    TYPE,
    STATE,
    TOTAL_MB,
    FREE_MB,
    USABLE_FILE_MB
FROM V$ASM_DISKGROUP
WHERE NAME = 'DATA';

本次扩容前 DATA 磁盘组为 EXTERN 冗余,总容量为 3,635,200 MB。

五、执行 ASM 磁盘扩容

完成上述检查后,在 ASM 实例执行:

ALTER DISKGROUP DATA
ADD DISK '/dev/mapper/data12'
REBALANCE POWER 4;

Diskgroup altered.

这里没有手动指定 ASM 磁盘名称,由 Oracle 自动分配。

REBALANCE POWER 4 指定本次数据重新分布操作的功率。生产环境可以根据业务负载及存储性能选择合适的值。

扩容过程中数据库可以继续提供服务,但 Rebalance 会产生额外 I/O,建议在业务相对空闲时执行。

六、监控 Rebalance 进度

磁盘加入 DATA 后,ASM 会重新分布数据。

查询:

SET LINES 200

SELECT
    INST_ID,
    OPERATION,
    STATE,
    POWER,
    SOFAR,
    EST_WORK,
    EST_MINUTES
FROM GV$ASM_OPERATION;

主要关注以下指标:

字段 说明
OPERATION 操作类型,REBAL 表示数据重平衡
STATE 执行状态,如 RUN、WAIT
POWER Rebalance 功率
SOFAR 已完成工作量
EST_WORK 预计总工作量
EST_MINUTES 预计剩余时间(分钟)

可以每隔几分钟查询一次,观察进度。

当 GV$ASM_OPERATION 不再返回正在执行的 Rebalance 操作时,再结合 ASM 告警日志及磁盘状态确认操作已正常完成。

七、扩容后检查

首先检查新盘是否已经成为 DATA 磁盘组成员:

SELECT
    NAME,
    PATH,
    HEADER_STATUS,
    MOUNT_STATUS,
    STATE,
    TOTAL_MB
FROM V$ASM_DISK
WHERE PATH = '/dev/mapper/data12';

正常加入后应显示 HEADER_STATUS=MEMBER,磁盘组挂载正常时通常为 MOUNT_STATUS=CACHED、STATE=NORMAL。

然后检查 DATA 容量:

SELECT
    NAME,
    TYPE,
    STATE,
    TOTAL_MB,
    FREE_MB,
    USABLE_FILE_MB
FROM V$ASM_DISKGROUP
WHERE NAME = 'DATA';

本次扩容后的容量如下:

指标 扩容前 扩容后
总容量 3,550 GiB 4,150 GiB
空闲容量 约 336.3 GiB 约 936.3 GiB
冗余类型 EXTERN EXTERN
磁盘组状态 MOUNTED MOUNTED

DATA 磁盘组总容量增加了 600 GiB,符合本次扩容预期。最终验收还需要确认 Rebalance 完成、所有磁盘状态正常。

总结

Oracle RAC ASM 扩容主要分为六个步骤:

存储侧完成 LUN 映射
          ↓
两个 RAC 节点扫描 SCSI 新盘
          ↓
配置 Multipath 固定别名
          ↓
配置 UDEV 磁盘权限
          ↓
检查 ASM 磁盘发现状态
          ↓
ALTER DISKGROUP ADD DISK
          ↓
监控 Rebalance 并验收

整个过程不需要停止数据库,适用于使用 Multipath + UDEV 管理 ASM 磁盘的 Oracle RAC 环境。

实际操作时,重点确认两个节点的 WWID、设备权限和 ASM 磁盘发现情况。扩容完成后,再检查磁盘组容量和 Rebalance 状态即可。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。