欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ORACLEAUTOMATICSTORAGEMANAGEMENT翻译-第十章ASM内置数据结构(3)完

程序员文章站 2022-05-02 20:29:04
disk directory disk directory包含了磁盘组中所有的磁盘信息。disk directory信息比pst更为详细。磁盘组中的每一块盘都有一个条目以数字为索...

disk directory

disk directory包含了磁盘组中所有的磁盘信息。disk directory信息比pst更为详细。磁盘组中的每一块盘都有一个条目以数字为索引。disk directory的文件号在每个磁盘组中都是2号(f2)。

disk directory中的字段如下:

n disk name

n failure group name

n disk size

n disk free space

n disk creation time

disk directory中大部分信息在disk header中都有。alterdiskgroup … check命令校验关于磁盘中数据结构的一致性。磁盘组mount时diskdirectory总是可用的,因此他也提供了关于normal-或high-redundancy模式下offline磁盘组的磁盘信息。

active change directory(acd)

acd是一种日志结构,允许记录asm对多个元数据结构的修改。类似于oracle rdbms的redo log。每个实例有一个42m大小chunk的acd。(正如douglas adams在hitchhiker’sguide to the galaxy中的说明,生命的终极问题的答案是“42”, 宇宙和一切.)。每个chunk的第一个块包含了open/close状态和checkpoint。checkpoint每3秒更新一次。剩下的块用做保存acd修改记录的循环buffer。(是的,“active change directory change record”是冗余的,但是没有第二次修改,我们不能称之为acdc记录)。新的asm实例acd会根据需要动态增长。asm使用acd来执行崩溃恢复和实例恢复进而保证了元数据的一致性。每个磁盘组的acd的文件号是3(f3)。

continuing operations directory(cod)

cod跟踪长时间运行的磁盘组操作,如文件创建和重平衡。长时间运行操作的范围不适合acd。如果一个长时间运行的操作执行失败cod条目可以使asm恢复到失败操作之前的状态。例如,asm可以回滚一个为创建文件未完成的操作。rdbms失效或用户行为可能会导致这个场景出现。对于磁盘组重平衡,如果实例执行重平衡失败,asm可以在一个集群中存活的节点上重新启动重平衡操作,或者在单实例中挂载磁盘组以后重启重平衡。cod在每个磁盘组中的文件号都是4号(f4)。

template directory

template directory包含磁盘组所有temlate的信息。创建的磁盘组支持默认的每种文件类型。如果用户添加一个自己的template就会新增一个条目。templatedirectory使用数字索引编号。

每个template条目包含如下信息:

n template name

n file redundancy

n file striping policy

n system flag

template directory在每个磁盘组中的文件号都是5号(f5)。默认模板名字与文件类型一致。文件冗余策略默认为磁盘组的冗余策略。文件条带默认是文件类型指定的。flag设置为默认(或系统)模板。用户创建模板没有设置system标记。

alias directory

alias directory包含所有的alias的元数据,系统别名、系统目录、用户目录、用户别名。它也是使用数字索引编号的。

alias directory包含如下结构:

n alias name(ordirectoryname)

n alias incarnation number

n file number

n file incarnation number

n parent directory

n system flag

alias directory在每个磁盘组中的文件编号都是6号(f6)。aliasincarnation与文件的incarnation非常相似,为可能拥有相同aliasnumber的别名或目录提供唯一性保证。system flag是系统创建的别名和目录,但是没有为用户创建的别名和目录设置system flag。

attributesdirectory

attributedirectory包括了磁盘组的属性元数据。这个数据结构只有磁盘组compatible.asm是11.1或11.1以上才有。这样的磁盘组,attributedirectory的文件号是9(f9)。(文件号7和8为将来的数据结构预留)。au_size属性由于引导的原始实际是存放在磁盘头的。compatible.asm在11.1或更高版本中存储在pst中,否则也存放在磁盘头。在oracledatabase 11g release 1,compatible.rdbms和disk_repair_time和他们的值存储在attributedirectory中。今后的版本会支持其他的属性。

staleness directory

staleness directory包括特定磁盘和客户端的stalenessregistry映射表槽的元数据。stalenessdirectory的文件号是12(f12)。如果有需要它会随着stalenessregister的分配而分配。

staleness registry(sr)

staleness registry用来跟踪磁盘offline导致出现问题的au。在normal-和high-redundancy磁盘组中并且compatible.rdbms设置为11.1或更高版本时,registry是254号文件(文件255为保留文件)。stalenessregister在需要时创建,也会在需要调整额外offline磁盘或新建asm和rdbms实例时动态增长。

当磁盘offline时,每个rdbms实例在stalenessregistry中获取到一个关于该盘的slot(槽)。这个slot有一个字节与offline磁盘的每个au对应。当rdbms要写的位置正是offline磁盘的位置,如果还没有设置相匹配的bit,rdbms实例会为这块盘在stalenessregistry的slot中设置相匹配的bit。

当磁盘online时,asm执行按位或操作通过对磁盘联机实例使用。任何au有bit设置必须从镜像extent上复制。任何bit被清理的au不需要作为磁盘online更新的一部分。因为只有磁盘offline时au才需要更新修改,把一个磁盘online比添加一块新盘替换旧盘更有效。

总结

asm磁盘组是一个自描述的实体,存放了所有磁盘组中的元数据。每块磁盘都有一少部分物理元数据。其余的元数据——存储在虚拟地址的元数据——存放在asm文件中,这使元数据利用相同元数据分布和冗余特性,通过存储在磁盘组中的数据文件。