ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups

原作者:Bane Radulovic

译者: 魏兴华

审核: 魏兴华

ASM Allocation Units

在ASM磁盘组中,最基本空间分配单位是allocation unit,简称AU,每个ASM的磁盘在初始化后都会被切割成一个一个的AU。

当磁盘组创建时,可以通过设置AU_SIZE的属性值,来指定AU的大小(在11.1版本以后),AU的大小可以是1,2,4,8,16,32,64MB,如果不指定AU的大小,默认值是1MB(Exadata下为4MB)。

AU size是磁盘组的属性(不是磁盘的属性,不是ASM实例的属性),因此每一个ASM磁盘组都可以有自己的AU size值。

ASM Extents

一个或多个AU组成一个extent,一个或多个ASM extent组成了一个ASM的文件,因此一个ASM文件逻辑上是由extent组成的。

我们需要区分物理extent和虚拟extent,一个虚拟extent或者说extent set,在外部冗余的磁盘组中,是由一个物理extent组成,在normal冗余的磁盘组中,是由至少2个物理extent组成,在一个high冗余的磁盘组中,由至少3个物理extent组成。

在ASM 11.1版本之前,extent的大小是固定的,在ASM 11.1版本之后,出现了可变extent,可变extent的出现是为了更好的支持大数据文件,减少对ASM和数据库实例的SGA要求、提升创建文件和打开文件等操作的性能,初始化的extent大小等于磁盘组的AU_SIZE设定值,随着一个文件分配的extent越来越多,extent的size会按照4或16倍的AU_SIZE增大。这个特性在文件新建或者resize的时候自动起作用,当然ASM磁盘组的属性值COMPATIBLE.ASM 和COMPATIBLE.RDBMS要设置为大于等于11.1。

一个文件的extent大小变化规律遵循如下方式:

一个文件的前20000个extent set,extent的size等于磁盘组的AU_SIZE的设定值。

接下来的20000个extent set,extent的size等于磁盘组的AU_SIZE*4。

如果一个文件的总extent set数多于40000个,那么后面所有的extent的size等于磁盘组的AU_SIZE*16。

这个可变extent特性有一个烦人的BUG 8898852,更多信息可以参考MOS 965751.1。

译者注:我很怀疑可变extent能起到的效果,因为大部分用户添加数据文件时,一般会指定数据文件的大小,假如AU_SIZE设置成1M,那么只有大于20G的数据文件才会有一些extent的大小为4MB,而就我接触到的DBA来说,可能大部分DBA都会把数据文件的大小设置成20G左右。还有就是虽然Oracle中有bigfile表空间,但是用的人并不多。

ASM Mirroring

ASM的数据镜像功能用来保护数据的完整性,它是通过对一份数据在不同的磁盘多存储一份数据副本来做到这一点。当一个ASM的磁盘组被创建时,ASM管理员可以指定磁盘组的镜像方式:

● External – 不提供镜像保护

● Normal – 2副本

● High – 3副本

ASM镜像的粒度是extent而非磁盘或者block,ASM中的镜像是通过对组成的每一个ASM文件的extent做镜像来实现的。在ASM中,我们可以指定每个文件的冗余级别。例如,一个在normal冗余的磁盘组中的文件,它的每一个extent可能会被镜像一次(默认行为),另一个文件,在相同的磁盘组,可能会被镜像二次,也就是三副本(假设磁盘组中至少有3个failgroup),事实上,ASM元数据文件在normal冗余的磁盘组中就是做的三副本,这里同样需要磁盘组中至少要有3个failgroup。

译者注:在normal冗余的磁盘组中,会有文件被镜像两次,也就是三副本,对于这点不必怀疑,这些文件都是ASM的元数据文件,在后续的文章中,我们会多次看到这种现象。

ASM Failgroups

一个ASM磁盘组可以逻辑上被划分为一个一个的failgroup,failgroup需要在磁盘组创建指定,如果我们在创建磁盘组时,不指定failgroup ,那么ASM会自动把每一个磁盘作为一个failgroup,这一点可能在Exadata上会不一样,Exadata 下所有来自相同存储节点的磁盘会自动放入到一个failgroup ,即使你没有指定failgroup。

normal冗余的磁盘组要求至少2个failgroup,high冗余的磁盘组要求至少3个failgroup,external冗余模式的磁盘组不要求有failgroup。

当一个extent分配给一个具有双副本的文件时,ASM会分配一个primary copy 和 一个 mirror copy,primary copy存储在一个磁盘,而mirror copy会存储在另外一个不同failgroup的磁盘上。

当向ASM磁盘组添加磁盘时,failgroup可以手工指定,ASM会智能的把磁盘添加到正确的failgroup中。

关于译者

魏兴华,沃趣科技高级技术专家,主要参与公司一体机产品、监控产品、容灾产品、DBaaS平台的研发和设计。曾就职于东软集团,阿里巴巴集团,Oracle ACE组成员,DBGEEK 用户组发起人,ITPUB认证博客专家,ACOUG、SHOUG核心成员。曾在中国数据库大会、Oracle技术嘉年华、ORCL-CON、YY分享平台等公开场合多次做过数据库技术专题分享。对Oracle 并行机制、数据库异常恢复方法、ASM等有深入的研究,人称”Oracle Internal达人”,对企业数据库架构设计、故障恢复、高并发下数据库性能调优有丰富的经验,擅长从等待事件角度分析解决数据库性能问题,是OWI方法论的提倡者和践行者。

原文发布于微信公众号 - 沃趣科技(woqutech)

原文发表时间:2016-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏猫哥学前班

猫哥网络编程系列:详解 BAT 面试题

从产品上线前的接口开发和调试,到上线后的 bug 定位、性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期。不论你是前后端的开发岗位,还是 SQA、运维等...

45312
来自专栏FreeBuf

点击一张图片背后的风险

* 本文原创作者:mscb,本文属FreeBuf原创奖励计划,未经许可禁止转载 你相信吗?仅仅是因为你点击了某个你一只在访问网站里的一张图片,导致你的用...

2427
来自专栏张善友的专栏

zookeeper 分布式锁服务

分布式锁服务在大家的项目中或许用的不多,因为大家都把排他放在数据库那一层来挡。当大量的行锁、表锁、事务充斥着数据库的时候。一般web应用很多的瓶颈都在数据库上,...

2158
来自专栏互联网杂技

程序员保证能笑出腹肌

客户需求 vs 最终产品 ? requirements vs. implementation 程序员的一天 ? The Programmers life 寂寞...

3747
来自专栏TSW

5201314对程序员意味着什么?

作为年轻人的潮流聚集地,Qzone在每个特殊的日子总会迎来一波猛烈的流量冲击。比如刚过去的520,下图是今年5月20号的流量情况:

2337
来自专栏Java架构师学习

深度学习Dubbo系列(入门开篇)一、背景二、架构三、需求四、用法五、快速启动

1653
来自专栏DevOps时代的专栏

微服务之基于Docker的分布式企业级实践

3383
来自专栏CSDN技术头条

分布式锁的技术选型及思考

在计算机中,锁的作用是解决在并发状态下的共享资源互斥问题,保证在同一时间只有一个进程/线程可以掌握资源的控制权。

1383
来自专栏CSDN技术头条

【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(一)

【导读】笔者(许鹏)看Spark源码的时间不长,记笔记的初衷只是为了不至于日后遗忘。在源码阅读的过程中秉持着一种非常简单的思维模式,就是努力去寻找一条贯穿全局的...

3098
来自专栏架构师之路

秒杀系统架构优化思路

一、秒杀业务为什么难做 1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息); 2)微博系统,每个人读你关注的人的数据,一个人读多...

46210

扫码关注云+社区

领取腾讯云代金券