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

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

程序员文章站 2022-05-17 21:58:36
free spacetable(fst) fst指明了atb中包含的空闲空间。当磁盘被选择分配时asm会生成一个磁盘fst。这个允许asm跳过被atbs占用的空间。fst包含每个...

free spacetable(fst)

fst指明了atb中包含的空闲空间。当磁盘被选择分配时asm会生成一个磁盘fst。这个允许asm跳过被atbs占用的空间。fst包含每个atb的条目。每个条目描述了extents size的总数和空闲extents。fst的目的是优化分配操作。事实上fst位于allocationtable中。fst位于每个at的第二个block(block 1)。

partnershipstatus table(pst)

pst跟踪磁盘组资格和磁盘间的配合关系。asm生成pst来判断使用一组在线磁盘挂载磁盘组是否满足需要。磁盘组中的每一块磁盘保留第二个au(au 1)给pst使用。然而任何时候,一个磁盘组只有一定数量的活跃psts。pst的数量取决于磁盘组冗余度和失效组数(failure group)。外部冗余磁盘组有一个pst。如果至少存在3个失效组normal-redundancy磁盘组包含3个psts。然而,normal-redundancy磁盘组每个失效组有一个pst。high-redundancy磁盘组有5个pst如果有足够的失效组存在。然而,high-redundancy磁盘组中每个失效组有一个pst。

pst是影子分页用来保证磁盘上的活跃pst总是一致的,及时pst跨越多个block。au 1满足写两份pst的需要。一份是活跃的拷贝,其他拷贝用于pst更新时使用。一旦更新pst完毕,从前的影子变成了活跃的pst,同时另外一份拷贝变成了影子供下一次更新使用。rdbms管理控制文件就是用类似的技术。

pst第一部分的信息是关于pst自己的:

n versionnumber

n timestamp

n pstsize(number of disks)

n numberof pst copies

n listof disk containing the pst

n valueof compatible.asm(if compatible.asm>=11.1)

asm存储在pst中存放compatible.asm减少存储的数量,这个信息的修改需要提交修改到成员。真如本章描述磁盘头的章节中,asm同样更新所有磁盘头的compatible.asm值,阻止10g软件产品挂载不兼容的磁盘组,而oracle database 11g使用pat中的值。

pst包含一组描述磁盘组中每一块盘的条目。对于每块盘来说,pst跟踪如下内容:

n disk status(如磁盘时online还是offline)

n 成员的数量

n 成员列表

pst的最后一个block保存磁盘组的心跳。asm使用这个块来保障磁盘组不会再不同的集群中同时被挂载。就像rac,asm在cluster synchronization service(css)的保护下以免在集群中脑裂。pst心跳是阻止集群上脑裂的额外的机制。这就像rdbms写控制文件时的心跳避免非同一个集群的两个实例同时mount一个。

通常,磁盘组必须可以访问一定数目的pst才能挂载磁盘组。normal-redundancy磁盘组需要2个失效磁盘组high-redundancy磁盘组需要5个一下的失效磁盘组的退化情况,需要更少的pst来挂载磁盘组。

虚拟元数据

虚拟元数据存储在asm文件中。目录是asm实例通过排他方式访问的源数据文件。目录文件号开始于1。不但rdbms实例可以注册保存asm文件,asm实例也可以。注册号在255一下。文件号在这节没有提及保留共将来使用。v$asm_file没有显示元数据目录或登记。

像其他asm文件,虚拟元数据文件通过磁盘组冗余类型进行镜像。asm不为external redundancy磁盘组提供镜像保护。虚拟元数据在normal-和high-redundancy磁盘组中提供3份镜像。下面的数据结构构成了虚拟元数据:

n file directory

n disk directory

n active change directory(acd)

n continuing operations directory(dod)

n template directory

n alias directory

n attribute directory

n staleness directory

n staleness registry

file directory

file directory包含了所有与asm文件有关的元数据。目录中包含了每个asm文件的条目和这些条目使用数值进行索引。在每个磁盘组中文件目录的文件号是1(f1)。

file directory包含如下字段:

n incarnation number

n file size

n file block size

n file type

n redundancy(none,normal,or high)

n striping(coarse或fine-grained)

n file creation time

n file modification time(文件最后一次被打开或写入的时间)

n file layout

asm中如果一个文件被删除,然后重用这个文件的文件号创建新文件,该文件的化身号是独一无二并与之前不一样的。化身号是在数据文件创建时根据时间戳生成的,保证当asm文件名相同时化身号是唯一的。

asm文件的块大小不依赖于asm元数据块大小。所有asm元目录使用4k块大小。rdbms数据文件可以是在创建表空间设置为2k,4k,8k,16k,或32k。rdbms的redo log文件一般设置为512byte块大小。asm及跟踪逻辑文件块大小(正如在数据块中看到的)同时也跟踪在磁盘组中的物理空间中的占用,放在审计文件中备查。rdbms同样在文件创建时提供了文件类型。对于那些没有明确被rdbms实例创建的文件(例如通过xmldb ftp命令或asmcmd的cp命令创建的),asm在创建文件时检查文件头来决定文件类型。

create time的含义是显而易见的。然而,filemodification time并不是在每次写数据文件时都更新的。相反,file modification time在文件需要写而打开文件时更新时间戳。这就意味着modification time会被修改就是没有写入数据,stored modification time可能比最后一次修改文件内容时还早。同样,为了减少asm实例中file directory块在buffer cache中的争用,modificationtime每个小时准时截断。因此,如果集群中的几个实例在非常短的时间内打开文件,只有第一个实例访问文件并更新file modification time。

文件分布信息组成了一系列的extentpointers。extent pointer指定extent所在的磁盘号和au号。filedirectory条目包含每个文件的前60个extentpointer,有时也称作direct extent(直接扩展)。filedirectory其余的空间保存indirect extent(非直接扩展)。indirect extent是其他虚拟元数据extent包括了asm的extent pointer。每一个indirect extent是一个au。每个file directory条目可以存放到300个indirect extent。

indirect pointer的概念在传统的文件中都有,例如unix bsd文件系统。推演出的文件布局,也被看做extent map,至于striping和redundancy如何影响文件布局的细节将在第11章中讨论,“asm operations”。

图 10-1中展示了一个足够大的文件可以存放indirect extent。注意indirect extent是扩展到file directory以外的元数据。例子中的磁盘组有10块asm磁盘(d0到d9)。

图10-2中展示了extentpointer和allocat table之间的关系。在这个例子中,文件256有5个extent(0到4)和文件257有4个extent(0到3)。磁盘组有3块磁盘(0到2)。图中只展示了例子中涉及的文件,这是allocation table中的一小部分。