Oracle ASMFD 配置详解

Oracle ASMFD 配置详解

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


1. 概述

ASM Filter Driver(ASMFD)替代 ASMLib[1]:

优势

  • 内核模块
  • 过滤 I/O
  • 设备管理
  • Oracle 推荐

详细见:Oracle ASM 详解


2. ASMFD vs ASMLib

特性ASMLibASMFD
管理oracleasmasmcmd afd
过滤
内置12c+
推荐

3. 安装

3.1 软件包

# Oracle Linux
dnf install -y oracleasm-support oracle-database-preinstall-19c

# ASMFD 包含在 GI 中

3.2 配置

# root
export ORACLE_HOME=/u01/app/19.0.0/grid
$ORACLE_HOME/bin/asmcmd afd_configure

# 验证
$ORACLE_HOME/bin/asmcmd afd_state
# ASMCMD-9528: Connected to an idle instance.
# ASMCMD-9536: ASMLib installation not found.
# ASMCMD-9535: ASM Filter Driver configuration - true

4. 标记磁盘

4.1 查看

lsblk
fdisk -l

4.2 分区

fdisk /dev/sdb
# n → p → 1 → 回车 → 回车 → w

4.3 标记

# grid 用户
asmcmd afd_label DATA /dev/sdb1
asmcmd afd_label FRA /dev/sdc1
asmcmd afd_label OCR1 /dev/sdd1
asmcmd afd_label OCR2 /dev/sde1
asmcmd afd_label OCR3 /dev/sdf1

4.4 查看

asmcmd afd_lsdsk

4.5 删除

asmcmd afd_unlabel DATA

5. GI 安装

5.1 响应文件

# ASMFD
oracle.install.asm.storageOption=AFD

5.2 安装

./gridSetup.sh -silent -responseFile /tmp/grid_install.rsp \
  -J"-Doracle.install.asm.configureAFD=true"

5.3 Disk Group

# ASMFD 磁盘路径
AFD:DATA
AFD:FRA
AFD:OCR1

6. 创建 Disk Group

6.1 asmca

asmca -silent -createDiskGroup \
  -diskGroupName OCR \
  -diskList 'AFD:OCR1,AFD:OCR2,AFD:OCR3' \
  -redundancy NORMAL \
  -au_size 4

6.2 SQL

CREATE DISKGROUP OCR NORMAL REDUNDANCY
  DISK 'AFD:OCR1', 'AFD:OCR2', 'AFD:OCR3'
  ATTRIBUTE 'au_size' = '4M';

7. 管理

7.1 状态

asmcmd afd_state
asmcmd afd_lsdsk
asmcmd afd_dsget

7.2 启停

# 启动
asmcmd afd_load

# 停止
asmcmd afd_unload

7.3 添加磁盘

asmcmd afd_label NEWDISK /dev/sdg1

# ASM 加入
sqlplus / as sysasm
ALTER DISKGROUP DATA ADD DISK 'AFD:NEWDISK';

8. 过滤

8.1 I/O 过滤

- 非 Oracle 进程不能写
- 防止误操作
- 设备保护

8.2 验证

# root 写测试
dd if=/dev/zero of=/dev/sdb1 bs=1M count=1
# 应该失败

9. 多路径

9.1 多路径设备

multipath -ll
asmcmd afd_label DATA /dev/mapper/mpathb

9.2 配置

# /etc/multipath.conf
defaults {
  user_friendly_names yes
  find_multipaths yes
}

10. 迁移 ASMLib → ASMFD

10.1 备份

# OCR 备份
ocrconfig -manualbackup

# Disk Group 检查
asmcmd lsdg

10.2 流程

# 1. 停 GI
crsctl stop crs

# 2. 配置 ASMFD
$ORACLE_HOME/bin/asmcmd afd_configure

# 3. 标记磁盘
asmcmd afd_label DATA /dev/sdb1

# 4. 移除 ASMLib
oracleasm deletedisk DATA

# 5. 启动 GI
crsctl start crs

# 6. Mount Disk Group
sqlplus / as sysasm
ALTER DISKGROUP DATA MOUNT;

11. 常见坑与排错

11.1 ASMFD 未加载

asmcmd afd_load
asmcmd afd_state

11.2 磁盘不可见

asmcmd afd_lsdsk
asmcmd afd_scan

11.3 标签冲突

asmcmd afd_unlabel OLD_NAME
asmcmd afd_label NEW_NAME /dev/sdb1

12. 最佳实践

  1. ASMFD:现代
  2. 过滤 I/O:保护
  3. 多路径:冗余
  4. GI 内置:简化
  5. 替换 ASMLib:推荐
  6. OCR 多份:3 个
  7. AU 4MB:大库
  8. 测试:验证
  9. 监控:状态
  10. 文档化:配置

13. 参考资料

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