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
| 特性 | ASMLib | ASMFD |
|---|---|---|
| 管理 | oracleasm | asmcmd 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. 最佳实践
- ASMFD:现代
- 过滤 I/O:保护
- 多路径:冗余
- GI 内置:简化
- 替换 ASMLib:推荐
- OCR 多份:3 个
- AU 4MB:大库
- 测试:验证
- 监控:状态
- 文档化:配置
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/