ASM 11R2基本知識點

531968912發表於2017-12-19

1 基本概念

ASM例項一直處於started或mounted狀態,11R2其在監聽器中註冊狀態為ready,即支援遠端訪問;
啟動時將連線字串註冊到CSS,資料庫例項啟動時由ASMB讀取以此建立同ASM的聯絡,ASM使用前臺程式UFG同資料庫例項聯絡;

磁碟以AU為分配單位,在建立磁碟組時指定,範圍為1-64M;

ASM檔案以extent為單位,一個extent可對應若干AU,為避免管理大檔案佔用過量SGA,oracle採用可變大小的Extent
0-20000區間, extent = AU
20000-40000區間,extent = 4* AU
>40000,extent=16* AU

通常建議ASM extent 等於或是 DB extent的整數倍;
同一磁碟在不同RAC節點的路徑可以不一致,依靠其磁碟頭判斷是否同一磁碟;



2 映象與條帶

映象
ASM採用extent映象而非磁碟映象,若某個磁碟失敗,則區間指標可藉助磁碟夥伴被重定向到區間映象;
在normal和high冗餘策略下,ASM將主區間和區間映象儲存於不同的故障組;
ASM的磁碟夥伴維護extent映象複製,其存於PST夥伴狀態表中;ASM基於故障組定義自動選擇磁碟夥伴,而故障組在建立磁碟組時指定;
磁碟最多可有10個active夥伴關係,drop disk會引發重置形成新的夥伴關係,PST跟蹤此操作直至rebalance完成;
過多的磁碟組巢狀可能會耗盡空間,引發ORA-15074 diskgroup requires rebalance completion;
在normal和high磁碟組中,可以為檔案單獨指定冗餘級別;

條帶化
將AU存於同一故障組的不同磁碟上,分為粗粒度和細粒度;
粗粒度:條帶=AU,當區間>20000時,一個extent的AU可位於不同磁碟上,提高IO吞吐量;
細粒度:條帶=128K,減少IO延遲,適用於online logfile(可單獨建立細粒度磁碟組);
檔案模板決定了條帶化型別,如果建立檔案時不顯示指定則選擇預設模板;


3 資料結構
分為物理後設資料和虛擬後設資料,

3.1 物理後設資料
存於磁碟前2個AU,用於必要的ASM引導;

3.1.1 磁碟頭第1個AU的首塊,大小為4K;
磁碟名/磁碟號
磁碟組/故障組名
磁碟/AU大小
建立/載入時間
ASM/DBMS相容性
檔案目錄指標

3.1.2  AT分配表
記錄磁碟的AU使用情況,每個AU對應一個分配條目ATE(entry),多個ATE組成一個ATB(block);
當AU被某檔案使用時,其ATE記錄下file no + extent no;
為分配的AU標示為free,而free extent儲存於1個連結串列中以便分配,
其與虛擬後設資料file directory互補,可透過alter diskgroup … check驗證其一致性

3.1.3 FST 空閒空間表
每個ATB包含一個FST條目,描述其下free extent;
請求空間分配時,ASM透過FST跳過full ATB;

3.1.4 PST夥伴關係表
佔用第2個AU,跟蹤磁碟組成員和磁碟夥伴,ASM透過其判斷磁碟組是否有足夠磁碟線上;
針對每個磁碟,PST記錄 磁碟狀態 + 夥伴個數 + 夥伴列表;
任意時間一個磁碟組只能有一個active PST,預設一個故障組包含1個PST;
PST副本: PST shadow為active  PST的副本(兩者位於不同磁碟),其副本隨著active PST更新,完畢後兩者角色互換;
PST最後1個塊用於磁碟心跳,1避免磁碟組在不同叢集中同時載入,類似控制檔案 


3.2 虛擬後設資料
位於ASM檔案中,分為directories和registers,前者為ASM獨立訪問的後設資料檔案,檔案號從1開始;後者檔案號從255倒計數,為保留的ASM檔案;

3.2.1 File directory
包含所有ASM檔案的metadata,與物理後設資料的AT對應;檔案號為1 ;
Incarnation number + file size + file type + redundancy level + strip level + created/modified time + file layout
ASM檔案被刪除後檔案號可重用,incarnation number卻不可能相同,由此保證檔案的唯一性;
File layout:由區間指標組成,包括區間對應的磁碟號和 AU號,1個file directory包含60個直接區間指標 和最多300個間接區間

3.2.2 Disk directory
包含磁碟組所有資訊,與PST對應但比之更詳盡,檔案號為2;

3.2.3 ACD
類似redo日誌,檔案號3;
每個ASM例項擁有1個42M的ACD chunk,第一個塊包含開啟/關閉狀態和檢查點(3秒更新1次),其餘迴圈利用;

3.2.4 COD
類似undo,跟蹤耗時較長操作如rebalance/檔案建立,檔案號4;
若當前例項執行rebalance失敗,叢集其他節點可重啟該操作;

其餘還有template directory, alias directory以及attribute directory;

3.2.5 Staleness registry
當compatible.rdbms>=11.1且冗餘類似為normal或high時才可用,檔案號254;
當磁碟offline時在SR中獲取1個slot,為該磁碟每個AU分配1個bit,若offline期間發生寫操作則設定AU的bit位;
當磁碟再次online時,ASM根據slot中被更新的bit位從映象區間同步資料,以此完成11R2的fast mirror resync;

 

4 與資料庫互動

建立檔案
RDBMS向ASM傳送建立檔案請求,ASM分配空間並將extent map返回給RDBMS,檔名格式為+<磁碟組>/<資料庫名>/<檔案型別>/<file tag.file #.incarnation#>;
RDBMS初始化檔案,由COD跟蹤尚未完成的檔案建立;
RDBMS提交完成請求,則ASM的LGWR清除ACD,DBWR更新AT以及file directory和alias directory;若RDBMS撤銷建立請求,則ASM使用COD回滾;
刪除檔案也由COD全程跟蹤並在失敗時回滾;

開啟檔案
RDBMS傳送請求給ASM,後者將檔案的extent map返回給RDBMS;11G會先傳送60個直接區間,根據RDBMS請求再傳送間接區間;

讀錯誤
讀主區間遭遇錯誤時自動選擇映象區間,11g還可自動對主區間的壞塊進行修復;
若ASM例項不能讀取虛擬後設資料則強制解除安裝磁碟組,若不能讀取磁碟的物理後設資料則將其offline;

寫錯誤
若ASM例項收到寫錯誤則嘗試該磁碟offline,並透過PST檢視夥伴磁碟狀態,若很多夥伴磁碟也offline則強制解除安裝磁碟組;
將訊息傳給其他ASM例項,由其更新RDBMS例項;
Compatible.rdbms >=11.1時disk_repair_time指定磁碟可offline最長時間;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2148902/,如需轉載,請註明出處,否則將追究法律責任。