在ASM中,每一個文件的extent都均勻的分布在它所在磁盤組的所有磁盤上,無論是在文件次創建或是文件創建之后的重新resize都是如此,這也意味著我們始終能保持磁盤組中的每一個磁盤上都有一個平衡的空間分配。
雖然文件在新建或是resize過程中都能保證空間的均勻分配,但是磁盤組在某些情況下會自動觸發重平衡的操作,例如添加、刪除和resize磁盤的操作(這些操作顯然會讓磁盤組變得不再平衡),再如,移動一個文件從磁盤的hot區到cold區。我們還可以通過命令 ALTER DISKGROUP … REBALANCE手工觸發rebalance。同時還可以通過給這個命令增加power子句來修改rebalance的并行度,在磁盤組因為任何理由變得不再平衡的時候,都可以運行這個命令來讓磁盤組再次變得平衡。
譯者注:由于ASM要求每個文件在ASM磁盤組的所有磁盤上都均勻分配,因此添加、刪除磁盤一定會觸發REBALANCE,這個特性可能在傳統的卷管理軟件上并不常見。還會有一些特例導致文件在ASM磁盤組的磁盤上空間分布不均勻,例如external模式下,磁盤組中的磁盤大小差異很大。
在ALTER DISKGROUP…REBALANCE命令中,可以指定POWER子句,用來指定重平衡的并行度。這個參數可以指定為0,這時重平衡操作會被掛起,直到下一次手工或者自動觸發重平衡操作。可以將POWER設置為一個較高的值,這樣一定程度上可以加快重平衡的速度,縮短重平衡花費的時間。
在執行ALTER DISKGROUP … REBALANCE命令時,默認會馬上返回執行成功,這樣我們可以在窗口繼續執行其他命令,但是重平衡的操作其實在后臺繼續執行。我們可以通過視圖V$ASM_OPERATION查看重平衡的進度。
重平衡操作共分為三個階段:
階段是rebalance plan,ASM會計算出重平衡的計劃。計劃取決于很多因素,例如磁盤組大小、磁盤組中的文件個數、磁盤的partnership是否需要調整等等。這個過程時間不會太長,一般不會超過幾分鐘。
第二階段是extent relocating,是真正干活的階段,這個階段,ASM的區會在磁盤組中的磁盤間移動,這個過程會花費大部分的時間。這個過程中,ASM會記錄區的移動數量,以及實際的I/O性能,從而估算該過程需要花費的時間(GV$ASM_OPERATION.EST_MINUTES記錄估算出的時間)。不過要注意的是,這只是估算的時間,真正的花費時間還取決于整體負載(特別是磁盤相關的負載)。如果重平衡是由于磁盤組中的一個或者多個磁盤損壞造成的,那么這個階段還會對不滿足冗余度要求的數據做鏡像。
注意:磁盤組在rebalance過程中并不會去修復存在邏輯錯誤或物理錯誤的數據,在12C中通過新增的一個ASM-scrubbing功能可以做到這一點,請參考本系列的【ASM data scrubbing】篇。
重平衡過程需要注意的點:
在以下兩種個情況下,重平衡的并行度是ASM_POWER_LIMIT參數指定的值:
我們可以動態的調整該參數,從而調整重平衡的并行度。高的并行度會縮短重平衡的花費時間,但是時間并不是隨著并行度遞增而線性減少,這取決于存儲的整體負載、可用的吞吐量和底層磁盤的響應速度。
在重平衡過程中,我們可以動態調整并行度。通過ALTER DISKGROUP … REBALANCE POWER N命令來指定一個新的并行度。修改并行度,會停止當前的重平衡,然后根據新的POWER參數重新開始重平衡過程。
雖然修改并行度會導致停止當前的重平衡,開啟新的重平衡,但是根據我的觀察,重平衡可以增量進行,例如舊的重平衡已經完成了對100號文件的重平衡操作,那么下次重新啟動重平衡會從101號文件開始,100號文件會被跳過,或者是在做一些檢查后很快的跳過。
ASM_POWER_LIMIT
這個參數是磁盤組進行重平衡操作時默認的并行度。在11.2.0.2之前它的取值范圍是0-11,從11.2.0.2版本開始,它的取值范圍是0-1024。當然這取決于磁盤組的屬性COMPATIBLE.ASM的設定值(見下文)。ASM_POWER_LIMIT默認值是1,當你將這個值指定為0時,會禁止重平衡操作。
_DISABLE_REBALANCE_COMPACT
設置初始化參數_DISABLE_REBALANCE_COMPACT=TRUE會禁止磁盤組重平衡的第三個階段(壓縮階段)。該參數對所有的磁盤組生效。
_REBALANCE_COMPACT
這是個隱含參數,設置_REBALANCE_COMPACT=FALSE會禁止磁盤組重平衡的第三個階段(壓縮階段)。該參數指定單個磁盤組,對單磁盤組生效。
_ASM_IMBALANCE_TOLERANCE
這個隱含參數控制磁盤組中磁盤大容忍的不平衡比例,默認值是3%。 比如同一個磁盤組中,A磁盤的使用率不會和B磁盤使用率相差超過3%,否則會觸發自動重平衡。
下面這個表總體概括了重平衡過程中,涉及到的后臺進程:
| Process | Description |
|---|---|
| ARBn | ASM重平衡進程,在磁盤組中進行數據區的重平衡,會有ARB0-ARB9和ARBA這些進程。 |
| RBAL | 在ASM實例中,該進程協調磁盤組中的重平衡過程。在DATABASE實例中,它管理ASM磁盤組。 |
| Xnnn | Exadata獨有-ASM Disk Expel Slave Process(ASM磁盤驅逐進程)。負責ASM重平衡后的善后工作,它會在ASM重平衡后對磁盤機型刪除操作。 |
在重平衡過程中,ARBn進程會在后臺進程dump文件目錄生成trace文件,記錄重平衡的過程。
在ASM實例中,V$ASM_OPERATION視圖會顯示在本實例上執行的時間較長的ASM操作,GV$ASM_OPERATION視圖會展示集群中的所有節點上的執行的時間較長的ASM操作。
在重平衡的過程中,OPERATION字段會顯示REBAL,STATE字段會顯示重平衡操作的狀態,POWER字段會顯示重平衡的并行度,EST_MINUTES會顯示重平衡操作還需要執行多長時間。
視圖V$ASM_DISK用來顯示ASM磁盤的相關信息,在rebalance期間,視圖的STATE列展示了rebalance期間磁盤的當前狀態。
通過在ASM實例中執行下面的命令,可以得到磁盤組上面數據平衡的狀態。
SQL> column "Diskgroup" format A30
SQL> column "Imbalance" format 99.9 Heading "Percent|Imbalance" SQL> column "Variance" format 99.9 Heading "Percent|Disk Size|Variance" SQL> column "MinFree" format 99.9 Heading "Minimum|Percent|Free" SQL> column "DiskCnt" format 9999 Heading "Disk|Count" SQL> column "Type" format A10 Heading "Diskgroup|Redundancy" SQL> SELECT g.name "Diskgroup", 100*(max((d.total_mb-d.free_mb)/d.total_mb)-min((d.total_mbd. free_mb)/d.total_mb))/max((d.total_mb-d.free_mb)/d.total_mb) "Imbalance", 100*(max(d.total_mb)-min(d.total_mb))/max(d.total_mb) "Variance", 100*(min(d.free_mb/d.total_mb)) "MinFree",
count(*) "DiskCnt",
g.type "Type" FROM v$asm_disk d, v$asm_diskgroup g WHERE d.group_number = g.group_number and d.group_number <> 0 and d.state = 'NORMAL' and d.mount_status = 'CACHED' GROUP BY g.name, g.type;
Percent Minimum
Percent Disk Size Percent Disk Diskgroup
Diskgroup Imbalance Variance Free Count Redundancy ------------------------------ --------- --------- ------- ----- ---------- ACFS .0 .0 12.5 2 NORMAL DATA .0 .0 48.4 2 EXTERN
PLAY 3.3 .0 98.1 3 NORMAL
RECO .0 .0 82.9 2 EXTERN
注意:上面的查詢摘錄自Oracle Press book Oracle Automatic Storage Management, Under-the-Hood & Practical Deployment Guide, by Nitin Vengurlekar, Murali Vallath and Rich Long.
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。