Oracle ASM 高可用详解

Oracle ASM 高可用详解

适用版本:Oracle Database 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

ASM 提供存储高可用[1]:

详细见:Oracle ASM 架构与 AU 详解Oracle ASM File Extent 与 Mirroring 详解


2. ASM 冗余

2.1 External

- 外部 RAID
- ASM 不镜像
- 存储 RAID

2.2 Normal

- 2-way mirror
- 容忍 1 盘故障
- 默认

2.3 High

- 3-way mirror
- 容忍 2 盘故障
- 高可用

2.4 Flex

- 12c+
- 灵活
- 文件级

3. Failure Group

3.1 概念

- 一组磁盘
- 同时故障
- 隔离

3.2 配置

CREATE DISKGROUP data NORMAL REDUNDANCY
  FAILUREGROUP fg1 DISK '/dev/sdb'
  FAILUREGROUP fg2 DISK '/dev/sdc';

3.3 作用

- 镜像跨 FG
- 容忍 FG 故障
- 高可用

4. 磁盘故障

4.1 检测

- ASM 检测
- 磁盘 offline
- 告警

4.2 Rebalance

- 自动重建
- 跨 FG
- 恢复冗余

4.3 替换

ALTER DISKGROUP data DROP DISK disk1;
ALTER DISKGROUP data ADD DISK '/dev/sdd';
-- 或
ALTER DISKGROUP data REPLACE DISK disk1 WITH '/dev/sdd';

5. Flex ASM

5.1 架构

- ASM 客户端/服务端
- Flex Cluster
- 冗余

5.2 优势

- ASM 冗余
- 不每节点 ASM
- 高可用

5.3 配置

asmcmd showclustermode
-- Flex ASM mode

6. ASM Cluster

6.1 多 ASM 实例

- 每节点一个 ASM
- 共享磁盘
- 冗余

6.2 故障

- ASM 故障
- 客户端切换
- 透明

6.3 监控

srvctl status asm
crsctl stat res -t | grep asm

7. Voting Disk

7.1 作用

- 集群仲裁
- 节点投票
- Split-brain 防护

7.2 冗余

- Normal:3 个
- High:5 个
- 跨 FG

7.3 故障

- 少数故障:继续
- 多数故障:集群停
- 监控

8. OCR

8.1 作用

- 集群配置
- 资源定义
- 管理

8.2 冗余

- Normal:3 个
- 跨 FG
- 备份

8.3 恢复

ocrconfig -restore /u01/ocr.bak

9. ASM 网络

9.1 ASM 网络

- 12c+
- 独立网络
- Flex ASM

9.2 冗余

- 多网卡
- HAIP
- 高可用

9.3 监控

ifconfig -a
crsctl stat res -t | grep -E 'haip|asm'

10. ASM Filter Driver

10.1 ASMFD

- 12c+
- 过滤驱动
- 设备管理

10.2 优势

- 设备持久
- I/O 过滤
- 高可用

10.3 配置

$GI_HOME/bin/asmcmd afd_label DATA /dev/sdb
$GI_HOME/bin/asmcmd afd_state

详细见:Oracle ASMFD ASM Filter Driver


11. ACFS

11.1 集群文件系统

- ACFS
- 共享文件
- 高可用

11.2 冗余

- ASM 基础
- 镜像
- 高可用

11.3 应用

- 共享文件
- 应用
- 高可用

详细见:Oracle ACFS 部署与使用


12. 监控

12.1 磁盘

SELECT group_number, disk_number, name, 
       mount_status, header_status, mode_status, state
FROM v$asm_disk;

12.2 Disk Group

SELECT group_number, name, state, type, 
       total_mb, free_mb
FROM v$asm_diskgroup;

12.3 操作

SELECT * FROM v$asm_operation;
-- Rebalance 进度

13. 应用场景

13.1 RAC

- 共享存储
- ASM
- 高可用

13.2 Data Guard

- 存储冗余
- ASM
- 灾备

13.3 关键业务

- High Redundancy
- Failure Group
- 高可用

14. 常见问题

14.1 磁盘故障

- 自动重建
- 替换
- 监控

14.2 Disk Group Dismount

- 多数盘故障
- 修复
- Mount

14.3 性能

- I/O
- Rebalance
- 优化

15. 最佳实践

  1. Normal/High:冗余
  2. Failure Group:隔离
  3. 多盘:分散
  4. 监控:状态
  5. 备份:OCR
  6. ASMFD:使用
  7. Flex ASM:12c+
  8. 网络:冗余
  9. 测试:故障
  10. 文档:配置

16. 参考资料

[1] Oracle Automatic Storage Management Administrator’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/