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