Oracle RAC ASM 磁盘扩容实战
前言
最近给一套 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 状态即可。
- 点赞
- 收藏
- 关注作者
评论(0)