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

在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中。

时间: 2024-11-01 00:57:55

Oracle ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups的相关文章

【ASM 翻译系列第二弹:ASM 12C 版本新特性】

随着Oracle 12c的发布,也就意味着全新版本的ASM面世了.已知的重大新特性有Flex ASM,数据预校验和更加便捷的磁盘管理操作.下面针对这几个方面进行详细介绍. Flex ASM Flex ASM特性可以允许ASM实例只运行在集群中某些节点上.默认安装将会创建3个ASM实例,而不管集群中节点的数量.一个ASM实例可以为本地和远端数据库提供服务.如果一个ASM实例crash,数据库实例会fail over到另一个ASM实例,而不会crash. 随着Flex ASM的引入,又出现了一个新的

Oracle ASM 翻译系列第九弹:ASM Toolbox

本篇文章主要介绍几个大家应该熟练掌握的ASM工具. asmcmd - command line interface to ASM ASM最初发布时,asmcmd的功能还很弱.从11gR2版本开始,asmcmd已经成为一个功能非常强大且常用的工具. ASMCA - ASM configuration assistant ASMCA有两种使用方式,第一种是比较容易使用的图形界面,还有一种是静默方式.虽然图形界面使用频率很高,但静默方式更强大. kfed - ASM metadata editor 前

ASM 翻译系列第三弹:基础知识 About ASM disk groups, disks and files

Oracle ASM使用磁盘组来存放数据文件,每一个ASM的磁盘组由一些ASM磁盘组成,每一个ASM磁盘组本身是一个独立的存储单元,是自描述的,对于ASM磁盘组中数据库文件,ASM提供一个文件系统的接口,方便DBA做管理.存放在ASM磁盘组中的文件被均匀的分布在磁盘组中的所有磁盘上,通过这种方式,每一块磁盘都可以提供一致的性能,同时ASM的性能可以比得上裸设备的性能.[摘录自11GR2版本的ASM官方文档] ASM Disk Groups 一个ASM磁盘组是由一个或多个ASM磁盘组成的,每个AS

Oracle ASM 翻译系列第二十六弹:ASM 高级知识 Where is my data

Where is my data 有时候我们想要知道一个特定的database block位于ASM的哪个磁盘,磁盘的哪个AU以及AU的哪一个块.本篇文章将向大家展示如何解决这个问题. Database Instance 首先在数据库里创建测试表空间: SQL> create tablespace T1 datafile '+DATA'; Tablespace created. SQL> select f.FILE#, f.NAME "File", t.NAME "

Oracle ASM 翻译系列第十四弹:ASM Internal Rebalancing act

在ASM中,每一个文件的extent都均匀的分布在它所在磁盘组的所有磁盘上,无论是在文件第一次创建或是文件创建之后的重新resize都是如此,这也意味着我们始终能保持磁盘组中的每一个磁盘上都有一个平衡的空间分配. Rebalance operation 虽然文件在新建或是resize过程中都能保证空间的均匀分配,但是磁盘组在某些情况下会自动触发重平衡的操作,例如添加.删除和resize磁盘的操作(这些操作显然会让磁盘组变得不再平衡),再如,移动一个文件从磁盘的hot区到cold区.我们还可以通过

Oracle ASM 翻译系列第十二弹:ASM Internal amdu - ASM Metadata Dump Utility

amdu - ASM Metadata Dump Utility ASM Metadata Dump Utility,即ASM元数据导出工具,它的简写amdu更被人所熟知,常被Oracle技术支持人员和Oracle开发人员用来诊断和解决ASM故障.它能输出ASM的元数据信息并且从ASM磁盘组中抽取元数据和数据文件. amdu工具不依赖于ASM实例或者ASM磁盘组的状态,所以它能在ASM实例关闭和磁盘组未挂载的情况下正常使用,它甚至能在ASM磁盘出现故障或者不可见的场景下使用. Use amdu

Oracle ASM 翻译系列第二十弹:ASM Internal ASM file number 7

ASM file number 7 ASM元信息7号文件,是ASM的逻辑卷目录,用于跟踪与ADVM有关的文件. ASM动态逻辑卷设备是由ASM动态逻辑卷构建的.一个磁盘组中可以配置一个或多个ASM动态逻辑卷设备.ASM集群文件系统通过ADVM接口构建在ASM磁盘组之上.ADVM像数据库一样,也是ASM的一个客户端.当一个逻辑卷被访问时,相应的ASM文件会被打开并且ASM extent的信息会被发送到ADVM驱动. 有两种与ADVM逻辑卷相关的文件类型: · ASMVOL:逻辑卷文件,作为逻辑卷存

Oracle ASM 翻译系列第十五弹:ASM Internal ASM File Directory

本篇主要介绍ASM的1号文件,ASM的1号文件是ASM的文件目录,它记录了磁盘组中的所有文件信息,由于在ASM中,每一个磁盘组都是独立的存储单元,所以每一个磁盘组都会有属于它自己的文件目录. 虽然这是一个内部的文件,但ASM实例会把它当做其它ASM文件一样管理,在ASM的文件目录中也会有它自己的条目(指向了它自己),在一个normal和high冗余的磁盘组中,它也会做镜像,随着新文件的产生,文件目录的大小也会相应地增长. 每一个ASM文件目录的条目都会包含如下的信息: · 文件大小 · 文件块大

Oracle ASM 翻译系列第十弹:ASM Internal ASM DISK header

ASM disk header ASM磁盘头可能是ASM元数据中最广为人知的部分.之前你可能认为当它被破坏或丢失时,只能寄希望于Oracle技术支持人员协助来恢复.在本节中将解释ASM磁盘头的重要性和它包含的信息. Block zero ASM磁盘是以AU为单位进行格式化的,部分AU会存放ASM元数据,其他AU存放数据库中的相关数据(如数据文件.备份文件.归档文件等等).包含ASM元数据的AU会以元数据块的方式进行格式化(一个元数据块的大小为4K).AU0位于ASM磁盘的起始位置,它始终用于存储