Oracle RAC集群中ACFS文件系统如何与ASM实现互操作?

来源:JS脚本作者:吴凌云头衔:网络博主
导读:本期聚焦于吴凌云创作的《Oracle RAC集群中ACFS文件系统如何与ASM实现互操作?》,敬请观看详情。ASM磁盘组只能存放数据文件,那归档日志、软件安装包、普通共享文件该放在哪里?ACFS正是Oracle为填补这一空白推出的集群文件系统。本文围绕ACFS与ASM的互操作展开,先讲清ACFS的底层架构:它以ASM磁盘组为存储载体,通过ADVM动态卷模块向上提供卷设备,再在其上创建POSIX兼容的文件系统,整个链条由OHASD与CRS统一托管。接着给出完整的互操作配置流程,包括创建专用磁盘组、加载acfs模块、用asmcmd创建卷与挂载ACFS,并强调CRS资源注册实现开机自动挂载的关键步骤。最后分析生产环境常见坑点,例如GI与DB版本匹配限制、非root用户挂载权限、跨节点卷可见性与删除顺序等,帮助DBA在RAC环境中安全用好ACFS。

在Oracle RAC环境中,ASM作为裸设备之上的存储管理方案,天生就是为数据文件、控制文件、联机日志这些数据库对象设计的。但现实运维中总有 ASM 覆盖不到的需求:归档日志要放共享位置、GoldenGate 的 trail 文件需要多节点同时读写、甚至只是一些安装介质和脚本想集中存放。ASM 磁盘组里的内容普通文件系统命令根本看不到,这时候 ACFS 就派上用场了。ACFS 的全称是 Oracle Automatic Storage Management Cluster File System,它是 Oracle 提供的集群共享文件系统,而且它的存储底座正是 ASM 磁盘组,两者互操作是这个方案的核心。

Oracle RAC集群中ACFS文件系统如何与ASM实现互操作?

一、ACFS 与 ASM 互操作的底层架构

很多DBA第一次接触 ACFS 时都会疑惑:文件系统怎么建在磁盘组上?磁盘组不是只能给数据库用吗?要理解这个互操作,必须先理清 ASM、ADVM、ACFS 三层的职责划分。ASM 位于最底层,负责管理磁盘、做条带化和镜像冗余;ADVM(ASM Dynamic Volume Manager)是中间层,它在一个 ASM 磁盘组内部划出一块空间,以卷的形式对外暴露,在操作系统中表现为 /dev/asm/卷名-数字 这样的块设备;ACFS 则是最上层的通用文件系统,直接创建在 ADVM 卷之上,提供 POSIX 兼容的文件操作接口。

这个链路的加载顺序也有讲究。Linux 上 ACFS 依赖内核模块 oracleacfsoracleadvm,这两个模块由 OHASD 托管的资源负责加载。也就是说,只要 Grid Infrastructure 正常启动,模块加载、卷设备的创建、文件系统挂载都可以交给集群软件自动完成,不需要管理员手动写 fstab。这一点和传统的 NFS 或 GPFS 有本质区别,ACFS 的生命周期是跟着 GI 走的。

还有一点容易忽略:存放 ACFS 卷的磁盘组属性有要求,磁盘组的兼容性参数 compatible.advm 必须设置到 11.2 及以上,否则卷创建会直接报错。日常建议为 ACFS 单独建一个外部冗余的磁盘组,而不是和数据文件混在同一个磁盘组里,便于容量规划和性能隔离。

二、从磁盘组到挂载点的完整配置流程

下面以一个实际场景为例:在两节点 RAC 上创建一个供归档日志使用的共享 ACFS。第一步先创建磁盘组并设置 ADVM 兼容性参数,用 grid 用户执行:

-- 创建专用磁盘组,compatible.advm 是关键参数
CREATE DISKGROUP ACFSDG EXTERNAL REDUNDANCY
  DISK '/dev/asm-disk5'
  ATTRIBUTE
    'compatible.asm' = '19.0.0.0',
    'compatible.advm' = '19.0.0.0';

第二步创建 ADVM 卷。卷必须建在设置了 compatible.advm 的磁盘组中,大小可以指定,也可以后期在线扩容:

# 用 grid 用户执行,创建 100G 的卷
asmcmd volcreate -G ACFSDG -s 100G ARCHVOL

# 查看卷信息,确认卷设备名
asmcmd volinfo -G ACFSDG ARCHVOL
# 输出中的 Device Name 类似 /dev/asm/archvol-123

第三步创建文件系统并挂载。注意创建文件系统用 grid 用户即可,但挂载动作需要 root 权限:

# 创建 ACFS 文件系统
/sbin/mkfs -t acfs /dev/asm/archvol-123

# root 用户在两个节点分别执行挂载
mkdir -p /archlog
/sbin/mount -t acfs /dev/asm/archvol-123 /archlog

# 授权给 oracle 用户
chown oracle:oinstall /archlog

第四步是互操作中最重要的环节:把挂载动作注册成 CRS 资源。手动挂载在节点重启后会失效,而且 CRS 感知不到,节点驱逐时可能出问题。正确的做法是注册资源:

# 注册 ACFS 挂载资源,所有节点自动维护
srvctl add filesystem -device /dev/asm/archvol-123 \
  -path /archlog -user oracle

# 启动资源,CRS 会在集群各节点自动挂载
srvctl start filesystem -device /dev/asm/archvol-123

注册完成后,可以用 crsctl stat res -t 看到该资源处于 ONLINE 状态,此时在任一节点写入的文件,另一个节点立即可见,这就是集群文件系统的价值所在。

三、生产环境常见坑点与运维建议

第一个坑是版本与平台限制。ACFS 在早期版本对 GI 和数据库版本有严格的互操作矩阵,比如 11.2 早期补丁集下 ACFS 数据库文件支持有限,直到 12.1 之后才全面放开。部署前务必查 MOS 上对应版本的认证矩阵,确认自己的操作系统内核也在支持列表里,否则模块加载会失败。Windows 平台上的 ACFS 行为与 Linux 差异较大,迁移方案时要特别留意。

第二个坑是删除顺序。很多人清理 ACFS 时直接把磁盘组 drop 掉,结果留下悬空的挂载点,导致节点重启时 CRS 卡住。正确的拆除顺序是:先删 CRS 资源,再卸载所有节点的文件系统,然后删除卷,最后才处理磁盘组:

# 严格的拆除顺序,顺序颠倒会留下悬空资源
srvctl stop filesystem -device /dev/asm/archvol-123
srvctl remove filesystem -device /dev/asm/archvol-123
umount /archlog
asmcmd voldelete -G ACFSDG ARCHVOL
asmcmd dropdg ACFSDG

第三个坑是空间与快照管理。ACFS 卷虽然支持在线扩容(asmcmd volresize 配合 acfsutil size),但缩容有限制,规划容量时宁可给足。另外 ACFS 自带快照能力,命令是 acfsutil snap create,做归档日志备份前的临时保护非常实用,比传统 cp 快得多。日常监控方面,建议用 acfsutil info fs 定期采集使用率,纳入监控平台,避免磁盘组悄悄写满波及同组的其他卷。

总体来说,ACFS 与 ASM 的互操作让 RAC 的存储能力从数据库对象延伸到了通用文件领域,架构上是层层递进的关系:磁盘组承载卷,卷承载文件系统,CRS 负责全生命周期托管。只要把兼容性参数、资源注册和拆除顺序这几个关键点守住,ACFS 完全可以成为 RAC 环境中处理共享文件的首选方案,比外挂 NFS 少一套依赖,管理上更省心。

Oracle RACACFS文件系统ASM磁盘组修改时间:2026-09-09 08:48:43

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/20260909/53301.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。