在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值。
一個或多個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。
譯者注:我很懷疑可變extent能起到的效果,因為大部分用戶添加數據文件時,一般會指定數據文件的大小,假如AU_SIZE設置成1M,那么只有大于20G的數據文件才會有一些extent的大小為4MB,而就我接觸到的DBA來說,可能大部分DBA都會把數據文件的大小設置成20G左右。還有就是雖然Oracle中有bigfile表空間,但是用的人并不多。
ASM的數據鏡像功能用來保護數據的完整性,它是通過對一份數據在不同的磁盤多存儲一份數據副本來做到這一點。當一個ASM的磁盤組被創建時,ASM管理員可以指定磁盤組的鏡像方式:
ASM鏡像的粒度是extent而非磁盤或者block,ASM中的鏡像是通過對組成的每一個ASM文件的extent做鏡像來實現的。在ASM中,我們可以指定每個文件的冗余級別。例如,一個在normal冗余的磁盤組中的文件,它的每一個extent可能會被鏡像一次(默認行為),另一個文件,在相同的磁盤組,可能會被鏡像二次,也就是三副本(假設磁盤組中至少有3個failgroup),事實上,ASM元數據文件在normal冗余的磁盤組中就是做的三副本,這里同樣需要磁盤組中至少要有3個failgroup。
譯者注:在normal冗余的磁盤組中,會有文件被鏡像兩次,也就是三副本,對于這點不必懷疑,這些文件都是ASM的元數據文件,在后續的文章中,我們會多次看到這種現象。
一個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中。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。