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磁盘组。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容