ACFS 不直接管理非结构化数据,仅提供基于ASM的集群文件存储载体,支持POSIX语义,不解析内容、不提供元数据索引或版本控制,由应用层负责组织路径、权限与生命周期。
ACFS 本身不直接管理非结构化数据,只提供存储载体
oracle acfs 是一个集群文件系统,不是数据库对象或数据类型管理器。它不解析 blob、clob、xmltype 或文件内容,也不提供元数据索引、版本控制或访问策略——它只负责把字节块可靠地写入 asm 卷,并支持 posix 语义(如 open()、read()、flock())。你存进去的是 jpg、pdf、dicom 还是 tar.gz,acfs 完全不关心。
所以“用 ACFS 管理非结构化数据”,真实含义是:把应用层生成/消费的非结构化文件,放在 ACFS 挂载点下统一存放,再由上层逻辑(比如 Java 服务、PL/SQL 外部表、备份脚本)来组织路径、命名、权限和生命周期。
- ACFS 不替代 Oracle 的
BLOB列;如果你原来把小文件( - ACFS 不自动压缩或去重;大文件重复写入会占用双份空间,得靠应用层做哈希比对或调用
acfsutil snap create做写时复制快照 - ACFS 的 POSIX 权限(
chmod/chown)作用于挂载点目录树,但无法约束数据库用户对UTL_FILE或DBMS_LOB的操作范围
挂载前必须确认四个内核模块已加载
在 RAC 环境中,oracleacfs、oracleadvm、oracleoks、oracleasm 四个模块缺一不可。RAC clusterware 通常自动加载,但节点重启后可能遗漏,尤其当使用 udev 规则而非 ASMLIB 时 —— 此时 oracleasm 模块甚至不会存在(如墨天轮笔记所提),但其余三个仍必须就位。
执行 lsmod | grep oracle,应看到类似输出:
oracleacfs 1990406 0 oracleadvm 250040 0 oracleoks 427672 2 oracleacfs,oracleadvm
- 若缺失
oracleacfs或oracleadvm,仅运行acfsload start不够,得先用acfsroot install安装驱动(需 GI_HOME 环境变量正确) -
oracleoks未加载会导致mount -t acfs报错Operation not supported,且错误日志里不会明说根源 - RAC 中某节点模块正常,不代表所有节点都 OK;必须逐节点检查,不能只看
crsctl status res "ora.xxx.acfs"
创建卷并挂载时注意 ASM 磁盘组冗余与容量预留
非结构化数据往往单体体积大、增长不可预测,ACFS 卷一旦创建,扩容虽支持(alter diskgroup ... resize volume),但在线 resize 需底层磁盘组有足够空闲空间,且 resize 后还需 acfsutil size 扩展文件系统视图。
典型操作链路:
ASMCMD> volcreate -G FRA -s 500G v_nfs_data ASMCMD> volinfo -G FRA v_nfs_data # 确认 DEVICE 显示为 /dev/asm/v_nfs_data-xxx # 然后 root 用户执行: # mkdir -p /u01/acfs_nfs # mount -t acfs /dev/asm/v_nfs_data-xxx /u01/acfs_nfs
- 卷大小建议按峰值预估+30%冗余,因为 ACFS 不支持 shrink;
resize只能变大 - 若磁盘组
FRA是EXTERNAL冗余,ACFS 卷无镜像保护,单磁盘故障即丢全部文件;生产环境强烈建议用NORMAL或HIGH冗余磁盘组承载 ACFS - 挂载选项别漏掉
-o all_suid(若需保留 setuid 程序权限)或-o nosuid(更安全,默认);ACFS 默认不继承父目录 umask,需显式设uid/gid
快照是保障非结构化数据一致性的关键手段
医疗影像、电子合同等场景要求“某一时刻所有文件状态可回溯”。ACFS 快照(acfsutil snap)是写时复制(CoW),不阻塞 I/O,且支持跨节点可见——这比应用层 rsync 或 tar 更可靠。
例如每天凌晨 2 点创建只读快照:
acfsutil snap create -r daily_$(date +%Y%m%d) /u01/acfs_nfs
- 快照本身不占额外空间,直到原文件被修改;但大量小文件频繁更新会导致快照空间激增,需监控
acfsutil info fs中的Snapshots Used - 快照路径为
/u01/acfs_nfs/.ACFS/snaps/daily_20260603,应用可直接读取,无需挂载新路径 - 删除快照前,务必确认无进程正打开其内部文件(
lsof +D /u01/acfs_nfs/.ACFS/snaps/xxx),否则acfsutil snap delete会失败且不提示具体原因
ACFS 不解决非结构化数据的语义一致性(比如一张 DICOM 图像和它的 JSON 元数据是否匹配),它只保证字节级快照原子性。真正要落地,得把快照触发逻辑嵌进业务归档流程,而不是当成“事后补救”。


















