oracle

关注公众号 jb51net

关闭
首页 > 数据库 > oracle > Oracle RAC ASM磁盘扩容

Oracle RAC ASM磁盘扩容实战指南

作者:Lucifer三思而后行

本文详细记录Oracle 11g RAC环境在线扩容ASM磁盘的完整流程,涵盖扫描新盘、配置Multipath固定别名、设置UDEV权限、检查ASM磁盘状态及监控Rebalance进度等关键步骤,帮助DBA在不影响业务的前提下顺利完成存储扩容,需要的朋友可以参考下

前言

最近给一套 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
POWERRebalance 功率
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 GiB4,150 GiB
空闲容量约 336.3 GiB约 936.3 GiB
冗余类型EXTERNEXTERN
磁盘组状态MOUNTEDMOUNTED

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 状态即可。

以上就是Oracle RAC ASM磁盘扩容实战指南的详细内容,更多关于Oracle RAC ASM磁盘扩容的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文