關於ASM的一些理論
ASM Allocation Units
在ASM磁碟組中,最基本空間分配單位是allocation unit,簡稱AU,每個ASM的磁碟在初始化後都會被切割成一個一個的AU。
當磁碟組建立時,可以透過設定AU_SIZE的屬性值,來指定AU的大小(在11.1版本以後),AU的大小可以是1,2,4,8,16,32,64MB,如果不指定AU的大小,預設值是1MB(Exadata下為4MB)。
AU size是磁碟組的屬性(不是磁碟的屬性,不是ASM例項的屬性),因此每一個ASM磁碟組都可以有自己的AU size值。
ASM Extents
一個或多個AU組成一個extent,一個或多個ASM extent組成了一個ASM的檔案,因此一個ASM檔案邏輯上是由extent組成的。
我們需要區分物理extent和虛擬extent,一個虛擬extent或者說extent set,在外部冗餘的磁碟組中,是由一個物理extent組成,在normal冗餘的磁碟組中,是由至少2個物理extent組成,在一個high冗餘的磁碟組中,由至少3個物理extent組成。
在ASM 11.1版本之前,extent的大小是固定的,在ASM 11.1版本之後,出現了可變extent,可變extent的出現是為了更好的支援大資料檔案,減少對ASM和資料庫例項的SGA要求、提升建立檔案和開啟檔案等操作的效能,初始化的extent大小等於磁碟組的AU_SIZE設定值,隨著一個檔案分配的extent越來越多,extent的size會按照4或16倍的AU_SIZE增大。這個特性在檔案新建或者resize的時候自動起作用,當然ASM磁碟組的屬性值COMPATIBLE.ASM 和COMPATIBLE.RDBMS要設定為大於等於11.1。
一個檔案的extent大小變化規律遵循如下方式:
一個檔案的前20000個extent set,extent的size等於磁碟組的AU_SIZE的設定值。
接下來的20000個extent set,extent的size等於磁碟組的AU_SIZE*4。
如果一個檔案的總extent set數多於40000個,那麼後面所有的extent的size等於磁碟組的AU_SIZE*16。
這個可變extent特性有一個煩人的BUG 8898852,更多資訊可以參考MOS 965751.1。
ASM Mirroring
ASM的資料映象功能用來保護資料的完整性,它是透過對一份資料在不同的磁碟多儲存一份資料副本來做到這一點。當一個ASM的磁碟組被建立時,ASM管理員可以指定磁碟組的映象方式:
External – 不提供映象保護
Normal – 2副本
High – 3副本
ASM映象的粒度是extent而非磁碟或者block,ASM中的映象是透過對組成的每一個ASM檔案的extent做映象來實現的。在ASM中,我們可以指定每個檔案的冗餘級別。例如,一個在normal冗餘的磁碟組中的檔案,它的每一個extent可能會被映象一次(預設行為),另一個檔案,在相同的磁碟組,可能會被映象二次,也就是三副本(假設磁碟組中至少有3個failgroup),事實上,ASM後設資料檔案在normal冗餘的磁碟組中就是做的三副本,這裡同樣需要磁碟組中至少要有3個failgroup。
ASM Failgroups
一個ASM磁碟組可以邏輯上被劃分為一個一個的failgroup,failgroup需要在磁碟組建立指定,如果我們在建立磁碟組時,不指定failgroup ,那麼ASM會自動把每一個磁碟作為一個failgroup,這一點可能在Exadata上會不一樣,Exadata 下所有來自相同儲存節點的磁碟會自動放入到一個failgroup ,即使你沒有指定failgroup。
normal冗餘的磁碟組要求至少2個failgroup,high冗餘的磁碟組要求至少3個failgroup,external冗餘模式的磁碟組不要求有failgroup。
當一個extent分配給一個具有雙副本的檔案時,ASM會分配一個primary copy 和 一個 mirror copy,primary copy儲存在一個磁碟,而mirror copy會儲存在另外一個不同failgroup的磁碟上。
當向ASM磁碟組新增磁碟時,failgroup可以手工指定,ASM會智慧的把磁碟新增到正確的failgroup中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-2564473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 對於Oracle鎖的一些理論總結Oracle
- 關於ora_pz程式的一些討論
- Java 理論與實踐: 關於異常的爭論Java
- 關於專案經理的討論 (轉)
- 關於OT分類的一些處理
- 關於漏洞挖掘理論的讀書筆記筆記
- 關於PHP中的警告資訊和session的一些討論PHPSession
- 關於jive開發論壇的一些討論-winCVS安裝(整理)
- 關於“學習金字塔理論”的所思所想
- 【ASM學習】關於 ASM 的隱含引數ASM
- 一些實用的職場理論
- CSS > 關於雪碧圖預處理和後處理方案的討論CSS
- 關於ASM的failgroup概念的探索方法ASMAI
- 關於畢業論文開題報告的一些總結
- 關於“斯金納箱”及相關理論在遊戲設計中應用的討論遊戲設計
- 關於oracle中大物件處理的一些方法和例項Oracle物件
- 聽同事關於一個ASM的故事ASM
- 關於filesystem與ASM的效能對比ASM
- 關於JS中switch和if進行多路判斷的一些討論JS
- 關於實現論壇的回覆評論
- 有關Developer的島嶼理論Developer
- 關於oracle SCN 的討論Oracle
- 關於position的一些理解
- 關於機器學習的一些看法機器學習
- 關於table的一些操作
- 關於oracle的一些命令Oracle
- 關於MongoDB的一些PPTMongoDB
- 關於ASM的一點使用上的步驟ASM
- 關於部落格評論外掛的討論
- asm的一些基本操作ASM
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記
- 關於Canvas的一些經驗Canvas
- 《關於MySQL的一些騷操作》MySql
- 關於position定位的一些理解
- 關於CodeReview的一些思考View
- 關於蘋果銷量的一些看法蘋果
- 關於面試的一些個人看法面試
- 關於angularJS的一些用法AngularJS