ASM基础架构

1: ASM(automatic storage management)的基本架构



1.1 ASM功能

在10G版本之前,Oracle数据库文件的存储选项主要有两种:文件系统或者裸设备(Raw

device),也就是说Oracle并没有自己专用的数据库文件系统。所以,Oracle在10G版本中推出

了属于自己的数据库文件系统和卷管理器ASM,简称自动存储管理,用于保存与管理数据库相

关的文件和磁盘。其中,卷管理器(Volume manager)部分主要负责实现磁盘的条带花和

冗余功能,而文件系统是为数据库相关的文件提供文件管理。从10G版本开始,Oracle推荐使

用ASM作为数据库和集群的存储解决方案。



1.2 磁盘组

1.2.1 基本概念和术语

磁盘:它是ASM管理的设备,可以是一块具体的物理磁盘,也可以是某一块磁盘上的一

个分区,或者是一个NFS文件系统。


磁盘组:由若干块磁盘构成一个逻辑整体。磁盘组是ASM组织磁盘和管理磁盘的方式。

ASM文件:保存在ASM磁盘组上的数据组织形式,它是一个逻辑概念。

ASM上可以保存文件:控制文件、数据文件、重做日志文件、归档重做日志文件、闪回

日志文件,RMAN备份集、参数文件等。


AU(Allocate unit):简称分配单元,是ASM分配的最小单位,类似数据库中的快。每个

磁盘组都可以根据自己的需求指定AU的大小,默认的AU尺寸为1M。另外,AU的尺寸应

该是数据库块的整数倍。


Extent:简称扩展,是由若干个AU构成的集合。每个Extent只能保存在同一个ASM磁盘

中,而且只能属于同一个ASM文件,Extent是ASM磁盘组分配空间的单位。Extent 类似

数据库层面的Extent概念。对于ASM层面的Extent,它的大小是固定的。


1.2.2 磁盘组的结构

可以通过下图来理解磁盘组、磁盘、ASM文件、Extent和AU之间的关系。


从图中可以看到,一块或多块物理磁盘构成磁盘组,磁盘组当中可以保存ASM文件;ASM文件可以用于保存数据库文件,每个ASM文件可以跨多个ASM磁盘,但是不能夸磁

盘组;每个ASM文件包含若干个Extent,Extent是数据库或其他客户端向ASM申请的空间

单位;每个Extent是有一个或多个AU构成,AU是ASM分配空间的最小单位。

磁盘组、磁盘、ASM文件、Extent和AU的关系类似于数据库表空间、数据文件、段、

Extent和快的关系。下图为简单对比:


1.2.3 数据冗余和条带化

条带化:条带化的作用是把数据平均分配到磁盘组的各个磁盘,并降低I/O操作的延时。

ASM磁盘组提供两种条带化:

1)细粒度条带化(fine-grained

stripe): 这种条带化的粒度是128KB。

适用于并发程度低的IO。 在低并发度的DSS系统中,由于IO请求比较序列化,为了避

免出现热点磁盘,我们需 要避免逻辑IO只有一块磁盘处理.我们选择小的条带深度,

使一个逻辑IO分布到多个磁盘上,从而实现IO的负载均衡。这就叫细粒度条带。


2)粗粒度条带化(coarse-grained

striping):这种条带化的粒度是1个AU。

适用于并发程度高的IO。在OLTP系统中,会存在大量小的并发的IO请求。这时就需

要考虑选择比较大的条带深度。通过粗粒度条带能实现最大的IO吞吐量(一次物理IO

可以同时响应多个并发的逻辑IO)。大的条带深度能够使像全表扫描那样的多数据块

读操作由一个磁盘驱动来响应,并提高多数据块读操作的性能。

粗粒度条带下,条带大小、宽度不可调。条带大小将一直等同于AU大小,条带宽度

一直是1。也就是一个条带只在一个磁盘中,不会跨越磁盘。10G、11G默认的AU大

小都是1M,而且,默认情况下,ASM的条带是“不可调粗粒度”。也就是AU大小

1M,条带大小也是1M,条带宽度为1。这意味着数据会以1M为单位,平均分布到

磁盘组所有磁盘中。也就是ASM保证1M数据逻辑上是连续的。如果段的区大小也是

1M,哪么,全表扫描时,一次IO可以在一块磁盘上一次读1M数据。

条带深度:指的是条带的大小,也叫条带大小。

条带宽度:是指同时可以并发读或写的条带数量。


还有一点注意事项,在ASM中,AU,是属于磁盘组层面的概念,一个磁盘组,只能

有一个统一的AU大小。在创建磁盘组时,要指定AU的大小,一旦指定,在磁盘组创

建后无法变更。 而条带,是属于文件层面的概念。同一磁盘组中,各个文件可以有

不同的条带大小。在创建表空间时,要同时确定条带信息。也是一旦确定,无法更

改。

默认情况,Oracle不同类型的文件使用的条带化选项可以参考下表。


11g版本数据库在创建diskgroup时候,可以设置attribute 'au_size' = '16M'。 



可以看到,Oracle分配数据的方式是尽量平均分布到磁盘组的所有磁盘中去,这与传统的RAID方式完全不同。这种数据分布方式无论是读取还是写入,效率都要比传统的RAID高很多。当然,这种数据分布的方式也要求磁盘组中的每一块磁盘大小都应该相同。


冗余(镜像):保护数据的安全性和高可用性。

除了条带化外,磁盘组提供的另一个重要功能就是数据的冗余,以便确保数据的安装性和高可用性。和传统的磁盘不同,Oracle镜像数据时通过failure group 的方式实现。failure group 是有一个或者多个磁盘构成整体,它是磁盘组的一部分,Oracle保证每个extent和他对应的镜像不会保存在相同的failure group 中,从而确保了当failure group 中的某个或者多个磁盘,甚至整个failure group 全部丢失也不会有数据丢失,并实现了数据的镜像。

如果创建磁盘组时候制定了 failure group ,数据以AU为单位,在failure group 之间实现镜像;如果创建磁盘组没有指定failure group ,那么每一块磁盘就作为一个failure group ,以AU为单位对数据进行镜像。

磁盘组的冗余度被划分为以下3种:

1)外部冗余(External redundancy):数据没有镜像。这种情况适用于已经使用底层存储软件对数做过镜像。

2)普通冗余 (normal redundancy):1路镜像。

3)高冗余(High redundancy): 2 路镜像。


根据以上图片描述,可以看到:1)外部冗余的磁盘组,任何一块磁盘损坏,都会导致数据丢失。2)普通冗余的磁盘组,一块以上的磁盘损坏,会导致数据丢失。3)高冗余的磁盘组,2块以上的磁盘损坏,会导致数据丢失。

1.2.4)rebalance

ASM磁盘组中的数据时均匀分布在每一块磁盘上,当磁盘组的磁盘成员列表发生改变时,数据就需要被重新分布,以确保数据能够均匀的分布在每一块磁盘上。

rebalance 的过程实际上就是数据重新分布的过程。

1) 默认情况,rebalance过程会在磁盘成员列表发生变化时自动触发。但是也可以通过手动的方式发起。

2)rebalance是在磁盘组级别进行的,而且每个磁盘组同时只有有一个ASM实例对进行rebalance操作。

3)磁盘组内部,rebalance是以文件为单位,即ASM保证的数据均匀分布是指每个ASM文件上的数据会被平均分布到磁盘组所有的磁盘上。

4)rebalance操作的时间长短和I/O开销取决于需要移动的数据,以及并发进程数量。

5)用户可以根据需要暂停运行中的rebalance操作,在恢复之后rebalance会从暂停的位置继续运行,而不是重新开始一个新的rebalance过程。


exportORACLE_SID=+ASM

sqlplus / assysdba

show parameterpower



2: ASM 实例

ASM 实例 是Oracle 实现对 ASM 磁盘组和磁盘管理的方式。它的结构和普通的数据库实例结构一致,由内存结构和后台进程组成。

内存结构由SGA和PGA组成,主要负责保存ASM磁盘相关的定义信息及磁盘组的元数据。

后台进程负责管理ASM的源数据,并与数据库实例进行通信,为数据库提供存储服务。


2.1 初始化参数文件

ASM有一个初始化参数文件(spfile)定义ASM实例相关参数,与数据库实例类似。默认情况,ASM初始化参数也是保存在ASM磁盘组,具体的参数初始化参数文件位置可以从 gpnp profile中找到。

获取 gpnp profile信息

gpnptool get

ASM实例常用的初始化参数:

1)Memory_target :同数据库实例

2)Instance_type :用于定义实例的类型,这个参数设置为ASM。

3)asm_diskstring : 指定ASM实例搜索磁盘的路径。支持多个搜索路径。

4)asm_diskgroups: 指定ASM实例启动后,会自动挂在哪些磁盘组。

5)asm_power_limit :指定磁盘组 rebalance 时的并行度。范围:0~11,

11.2.0.2 开始,最大可设置为1024.

2.2 内存结构

由SGA+PGA构成。

SGA包括Share pool、buffer cache 、Large pool等


2.3 后台进程

ASM实例的后台进程和数据库实例大致相同。

ASM实例特有进程:

1)GMON(ASM Disk Group

Monitor):磁盘组监控进程。这个进程负责维护磁盘组中的各个磁盘状态的一致性。比如 添加、删除 、离线、上线等操作

2)RBAL(ASM Rebalance Master): Rebalance 主进程,负责协调磁盘组的rebal-ance操作。而具体的平衡磁盘组 Extent的操作由ARBn进程完成。数据库实例中也存在RBAL进程,它的功能和ASM实例中的RBAL不同,负责为数据库管理ASM磁盘。

3)ASMB:该进程负责和ASM实例进行通信,并且为ASM的客户(asmcmd,数据库,OCR),提供链接ASM实例信息。


2.4 ASM实例启动顺序

1)从gpnp profile 读取 ASM spfile ,获取实例启动必须的参数。

2)根据spfile 设置分配SGA,并启动后台进程。

3)根据spfile中的asm_diskstring指定的位置检索磁盘,挂在ASM磁盘组。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容