ASM架构基础与核心概念
第一部分:ASM架构总览
1.1 ASM设计哲学
Oracle Automatic Storage Management(ASM)的核心设计目标:
- 简化存储管理:替代传统文件系统和卷管理器
- 自动负载均衡:数据自动分布到所有可用磁盘
- 高可用性:内置镜像和故障转移机制
- 性能优化:条带化和直接I/O路径
1.2 ASM体系结构
应用层:Oracle数据库实例
↓
接口层:ASM客户端(ASMB、RBAL)
↓
服务层:ASM实例
↓
存储层:ASM磁盘组(Disk Groups)
第二部分:核心组件详解
2.1 ASM实例
特殊用途的Oracle实例,不包含数据字典,主要功能:
- 管理磁盘组元数据
- 协调磁盘重新平衡
- 提供文件布局服务
关键后台进程:
-- RBAL:磁盘组协调器
-- ASMB:与数据库实例通信
-- GMON:磁盘组监控
-- OSM0:重新平衡从进程
2.2 磁盘组(Disk Groups)
ASM管理的最高层级存储单元,特性:
- 逻辑磁盘集合
- 统一的存储池
- 独立的冗余策略
创建语法示例:
CREATE DISKGROUP dg_data EXTERNAL REDUNDANCYDISK '/dev/sdb1', '/dev/sdc1', '/dev/sdd1'ATTRIBUTE 'au_size' = '4M';
命令参数说明
EXTERNAL REDUNDANCY
表示不提供ASM镜像保护,依赖底层存储系统提供冗余DISK
子句列出要包含在磁盘组中的磁盘设备路径ATTRIBUTE 'au_size'
设置分配单元大小为4MB(默认为1MB)
2.3 分配单元(Allocation Units)
ASM空间分配的基本单位:
- 默认大小:1MB(可配置1, 2, 4, 8, 16, 32, 64MB)
- Exadata默认:4MB
- 磁盘组级别属性,非全局设置
AU大小影响:
-- 大AU优势:大文件性能更好,元数据开销更小
-- 小AU优势:空间利用率更高,适合小文件
第三部分:数据分布机制
3.1 条带化策略
双重条带化机制:
3.1.1 精细条带(Fine-grained)
- 条带大小:128KB
- 适用场景:控制文件、在线重做日志
- 优势:减少小I/O延迟
3.1.2 粗粒度条带(Coarse-grained)
- 条带大小:等于AU大小
- 适用场景:数据文件、临时文件
- 优势:大I/O吞吐量高
3.2 文件与区映射
文件组织结构:
文件(File)
↓
虚拟区(Virtual Extents)
↓
物理区(Physical Extents)
↓
分配单元(Allocation Units)
可变大小区特性:
-- 0-19,999区:1倍AU大小
-- 20,000-39,999区:4倍AU大小
-- 40,000+区:16倍AU大小
-- 优势:减少大文件的元数据开销
第四部分:冗余与高可用
4.1 冗余级别
三种冗余策略:
4.1.1 外部冗余(External)
- 依赖硬件RAID保护
- 无ASM镜像开销
- 存储空间利用率100%
4.1.2 正常冗余(Normal)
- 双路镜像(2副本)
- 可容忍单磁盘故障
- 存储空间利用率50%
4.1.3 高冗余(High)
- 三路镜像(3副本)
- 可容忍双磁盘故障
- 存储空间利用率33%
4.2 故障组(Failure Groups)
智能镜像放置策略:
-- 创建故障组示例(NORMAL)
CREATE DISKGROUP dg_data NORMAL REDUNDANCYFAILGROUP fg1 DISK '/dev/sdb1', '/dev/sdc1'FAILGROUP fg2 DISK '/dev/sdd1', '/dev/sde1'
;
故障组设计原则:
- 同一故障组的磁盘共享单点故障风险
- 镜像副本必须放在不同故障组
- 建议故障组对应不同物理存储单元
第五部分:核心操作原理
5.1 文件创建过程
ASM文件创建流程:
- 数据库实例请求创建文件
- ASM实例分配初始区(extent)
- 返回文件句柄和区映射表
- 数据库实例直接访问存储
元数据交互最小化:
-- 文件打开后,数据库直接I/O
-- 仅元数据变更时需要ASM协调
-- 类似传统文件系统的inode概念
5.2 重新平衡(Rebalance)
自动数据重新分布:
触发条件:
- 添加/删除磁盘
- 磁盘resize操作
- 手动触发rebalance
三个阶段:
-- 阶段1:计划生成(几分钟)
-- 阶段2:区重定位(主要工作阶段)
-- 阶段3:磁盘压缩(优化数据位置)
Power控制:
-- 范围:1-1024(11gR2+)
-- 高power值:更快完成,更高资源消耗
-- 低power值:对业务影响小,执行时间长
示例:
ALTER DISKGROUP dg_data REBALANCE POWER 8;
第六部分:实践配置指南
6.1 磁盘组创建最佳实践
容量规划:
-- 估算公式:所需空间 = 数据量 × 冗余因子
-- 外部冗余:因子=1.0
-- 正常冗余:因子=2.0
-- 高冗余:因子=3.0
-- 额外预留20%空间用于重新平衡
AU大小选择:
-- OLTP系统:1-4MB AU
-- DSS系统:8-16MB AU
-- Exadata:默认4MB,可调整
-- 大文件系统:考虑更大AU减少元数据
6.2 多路径配置
确保路径冗余:
# 检查多路径配置
multipath -ll
# 确认所有路径可见
asmcmd lsdsk --discovery
第七部分:监控与维护
7.1 关键监控视图
磁盘组状态监控:
SELECT name, state, type, total_mb, free_mb,usable_file_mb, required_mirror_free_mbFROM v$asm_diskgroup;
磁盘状态检查:
SELECT disk_number, name, path, state, failgroupFROM v$asm_diskWHERE group_number = (SELECT group_numberFROM v$asm_diskgroupWHERE name = 'DG_DATA');
总结
重点掌握:
- ASM架构核心:理解实例、磁盘组、AU的关系
- 数据分布原理:条带化、镜像、故障组的作用
- 监控维护:状态检查与监控视图
下一章预告:将深入ASM元数据结构和内部管理机制,包括磁盘头、FST、AT表等核心元数据组件的工作原理。