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中的一小部分。
-----------------------------------------------------------------------------------------------------------------
本站注明原创和翻译的均为原创文章,文章允许转载,但必须以链接方式注明源地址,
否则追究法律责任!文章中难免有疏漏欢迎网友批评指正。
QQ: 173386747
Email: hailong.sun1982@gmail.com
Blog: http://blog.csdn.net/card_2005
ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第十章ASM内置数据结构(2),布布扣,bubuko.com