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

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中的一小部分。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐