ASMFD比ASMLib更安全、稳定且与19c GI深度集成:它通过内核级IO过滤拦截非法写操作,无需udev规则避免路径漂移,并随Grid自动部署;启用前须卸载ASMLib,启用后需校验权限、WWID一致性及$ORACLE_HOME配置。
ASMFD比ASMLib更安全:内核级IO过滤不可绕过
asmlib只是给磁盘加个标签、做软链接,不拦任何写操作;dd if=/dev/zero of=/dev/sdb、fdisk /dev/sdb照样能直接覆写asm磁盘头——只要root权限在手,数据就随时可能被清零。asmfd则不同,它作为内核模块插入i/o路径,所有发往afd磁盘的写请求都会被校验:只有oracle进程通过libasm.so发起的合法io才放行,其余一律拒绝。这个过滤动作发生在块设备层,用户态工具甚至无法感知拦截发生。
ASMFD无需udev规则:避免路径漂移和重启失效
用udev绑定磁盘时,一旦multipath重映射、内核模块加载顺序变化或scsi_id输出不稳定,/dev/mapper/mpatha可能变成/dev/mapper/mpathb,导致ASM启动失败、CRS无法拉起。ASMFD接管后,磁盘由asmcmd afd_lsdsk统一识别并生成稳定路径如/dev/afd/disks/DATA1,该路径与底层设备名解耦,不受udev规则生效与否影响。你不再需要维护/etc/udev/rules.d/99-oracle-asm.rules这类易出错的配置文件。
ASMFD与19c GI深度集成:装完Grid就自带,不额外装包
ASMLib需要单独安装kmod-oracleasm、oracleasmlib等RPM包,且版本必须严格匹配内核——稍有偏差就报Module oracleasm not found。而ASMFD是19c Grid Infrastructure原生组件,随gridSetup.sh自动部署,只要确认crsctl stat res ora.asmfd -p | grep ENABLED返回ENABLED=1即可。注意:如果之前装过ASMLib,必须先执行oracleasm disable + oracleasm uninstall再启用ASMFD,否则会冲突。
启用ASMFD后仍要检查三件事
常见故障不是ASMFD本身坏了,而是外围没对齐:
-
ls -l /dev/mapper/mpatha权限必须是0660、属主grid:asmadmin;若被udev规则覆盖成0600,AFD将拒绝接管 -
scsi_id -g -u -d /dev/sda输出的WWID,必须与/etc/multipath.conf中wwid字段完全一致(大小写、空格、换行都不能差) - 执行
asmfd -i前,确保$ORACLE_HOME指向19c GI家目录,且当前用户为root;非root执行会静默失败
真正麻烦的从来不是asmfd命令本身,而是共享存储链路上任意一环的微小不一致——比如多路径WWID里多了一个不可见空格,就能让asmcmd afd_lsdsk输出为空。

















