Oracle RAC共享存储核心技术

发布于:2025-09-10 ⋅ 阅读:(15) ⋅ 点赞:(0)

Oracle RAC(Real Application Clusters)的核心存储原理是共享存储(Shared Storage)。所有集群中的数据库实例(运行在不同服务器/节点上)都必须能够并发访问相同的数据文件、控制文件、在线重做日志文件、参数文件以及归档日志文件

理解其存储原理的关键点如下:

  1. 核心:共享存储

    • 所有节点访问同一份数据: 数据库的核心物理文件(数据文件、控制文件、在线重做日志)必须放在能被集群中所有服务器节点同时读写访问的共享存储设备上。这是实现集群中所有实例操作同一个数据库的基础。
    • 存储类型: 通常使用高性能、高可用、支持多路径的SAN(Storage Area Network)、NAS(Network Attached Storage - 需特定NAS头支持)或基于软件的分布式存储(如Oracle ASM Cluster File System - ACFS)。NFS也是常见的选项(需配置Direct NFS或使用认证的NAS设备)。
  2. 协调机制:全局缓存服务 & 全局队列服务

    • GCS (Global Cache Service): 这是RAC的核心组件,负责管理数据块在集群各节点缓存(SGA)中的分布和一致性。
      • 缓存融合(Cache Fusion): GCS的核心技术。当一个节点需要访问的数据块不在其本地缓存中时:
        • 它首先查询GCS,询问哪个节点缓存了该块的最新版本(主副本)。
        • 如果块在另一个节点的缓存中且是最新、干净的,GCS会协调将该块直接从该节点的缓存通过高速互连网络(如InfiniBand/RoCE)传输到请求节点的缓存(称为“块传输”),避免了物理磁盘I/O。
        • 如果块在磁盘上是最新的,或者需要修改,GCS会协调必要的锁获取和可能的磁盘读取。
      • 维护一致性: GCS确保无论数据块被缓存到哪个节点的内存中,任何节点访问到的都是该块的当前一致版本。它管理着数据块的“全局锁”状态(如Null, Shared, Exclusive)。
    • GES (Global Enqueue Service): 负责管理集群范围内的资源协调和同步,处理非缓存融合的锁(称为“队列”)。
      • 协调非数据块资源: 管理如Library Cache Locks/Pins(解析锁)、字典缓存锁、事务锁(TX)、表锁(TM)、内部锁(如数据文件/控制文件访问)、实例/节点成员关系等资源的全局同步。
      • 防止冲突: 确保不同节点上的会话不会同时修改相同的结构(如DDL操作修改数据字典),保证事务隔离性。
  3. 高速互连网络

    • 关键桥梁: 节点之间的私有、高速、低延迟网络(通常使用万兆以太网、InfiniBand或RoCE),用于:
      • 缓存融合块传输: 在不同节点的SGA之间直接传输数据块(这是Cache Fusion性能的关键)。
      • GCS和GES的消息传递: 节点间协调锁信息、心跳检测、集群管理等大量内部通信。
      • 集群心跳: 监控节点状态(健康检测)。
    • 性能要求: 该网络的性能和可靠性对RAC的整体性能(特别是减少“global cache”等待事件)和稳定性至关重要。
  4. 共享磁盘访问协调与控制文件/重做日志的特殊性

    • 控制文件: 所有实例都需要频繁读取控制文件。写入操作(如检查点更新、日志切换记录)由协调实例(通常是拥有相关资源的Master实例)执行,其他实例通过GCS/GES协调访问。
    • 在线重做日志:
      • 每个实例拥有自己专属的一组在线重做日志文件(Thread),但文件本身物理存储在共享存储上。
      • 只有该实例可以写入其所属的Thread。其他实例在需要执行实例恢复(如该实例崩溃时)或归档时可以进行读取。
      • 日志文件切换、归档状态更新等操作需要全局协调(通过GES)。
    • 数据文件访问: 通过GCS协调的Cache Fusion机制,极大减少了直接物理访问共享磁盘上数据文件的次数。写入最终会刷新到磁盘,但读取经常通过缓存传输满足。
  5. 存储层的高可用性要求

    • 单点故障消除: 共享存储本身必须是高可用的,不能成为单点故障。这意味着存储通常配置为:
      • RAID保护(防磁盘故障)。
      • 多路径I/O(Multipathing I/O - MPIO):服务器到存储有多条物理路径,一条路径失效不影响访问。
      • 存储设备本身具有冗余控制器、电源、风扇等。
      • 如果使用NAS,NAS头需要冗余。
  6. Oracle ASM的作用

    • 推荐的存储管理: Oracle强烈推荐使用ASM(Automatic Storage Management)作为RAC的存储管理解决方案。
    • 简化管理: ASM提供卷管理器和文件系统功能,消除了对第三方逻辑卷管理器(LVM)和集群文件系统(CFS)的需求(尽管部分CFS也被支持)。
    • 负载均衡与条带化: ASM自动将文件条带化(Striping)分布在所有磁盘上,实现I/O负载均衡和最大化性能。
    • 镜像/冗余: ASM提供基于存储的镜像(Normal, High, External redundancy),无需硬件RAID即可实现数据冗余(或结合使用)。
    • 集群感知: ASM实例本身也是集群化的(Oracle ASM Cluster),运行在每个数据库节点上,协同管理共享磁盘组(Disk Groups),提供集群范围内的存储可见性和管理。
    • 动态扩展/再平衡: 轻松添加或删除磁盘,ASM自动重新平衡数据。
    • ACFS: ASM还支持在其上部署Oracle ACFS(ASM Cluster File System),用于存储非数据库文件(如Oracle Home、应用代码、日志等)。

总结Oracle RAC存储原理的核心思想:

  1. 数据一份,全局共享: 数据库物理文件存放在所有节点都能同时访问的共享存储上。
  2. 内存协调,减少I/O: 通过GCS(Cache Fusion)和GES,协调各节点内存(SGA)中的数据块访问和资源锁管理,最大限度减少对共享磁盘的直接访问,提升性能并保证数据一致性。
  3. 高速互联,传输缓存: 依赖高速专用网络在节点间传输数据块(缓存融合)和同步消息。
  4. 存储高可用: 共享存储基础设施必须具备高可用性。
  5. ASM优化管理: ASM是管理RAC共享存储的首选和推荐方式,提供性能、高可用性和易管理性。

简单来说,RAC让多个服务器像操作一台服务器的本地存储一样,安全、高效、并发地操作同一套放置在共享存储上的数据库文件,其核心魔法在于全局化的缓存协调服务(GCS/GES)和高速网络


网站公告

今日签到

点亮在社区的每一天
去签到