學習ASM技術(四)--條帶化原理和rebalance

yezhibin發表於2010-03-09
一、條帶化:
 
        ASM的條帶化有兩種:coarse和fine-gained。AU是最小分配單元,預設是1M,每個AU預設由8個128K條帶空間組成。
       
         coarse條帶化中一個extent對映為一個AU,預設是1M大小,比如4個磁碟
#0~#3,分配extent時候,第一個AU分配給disk0,第二個AU給disk1,依此順推。所以該條帶化適合連續的I/O讀寫,比如全表掃描表。

        Fined-gained條帶化,一個AU中的8個128K條帶空間,平均打散在磁碟上,也就是說,4個磁碟,1個AU是平均分佈在4個磁碟,每個磁碟2個128K。適合於對資料讀寫延遲比較敏感的檔案。如redo日誌,控制檔案,spfile等。

        10g版本AU和條帶設定引數:_asm_ausize和_asm_stripesize,11g版本資料庫在建立diskgroup時候,可以設定attribute 'au_size' = '16M'。

 二、Rebalance

        從diskgroup中新增或刪除disk時候,將觸發RBAL程式建立rebalance計劃,並計算執行Rebalance所需要時間和工作要求,然後發訊息給ASM Reblance (ARBx)程式處理該請求。ARBx程式的數量由引數ASM_POWER_LIMIT決定。COD (Continuting Operation Directory)用於記錄rebalances情況。如果rebalance失敗,在重啟instance時候,將從COD讀取記錄,重新啟動rebalance。ARBx程式對每個extents進行locked, relocated和unlocked操作,執行過程中可以參考v$asm_operation檢視。

     ASM_POWER_LIMIT範圍是0~11,0:表示不進行rebalance,值越大, rebalance速度越快。

       在進行rebalance時候要注意以下幾點:
     
      1、每個disk的大小必須是相同,如果存在一個小盤,因為rebalance將對每個盤的分配相同比例的空間,可能造成rebalance時候空間不足。

      2、rebalance僅僅在diskgroup發生改變時候才進行的,並不是定時執行

      3、如果磁碟大小一樣,仍然沒有進行rebalance,需要檢視asm_power_limit

      4、如果rebalance執行過程中,server當機,重啟後會自動進行rebalance

      5、影響rebalance速度因素有很多,最重要是I/O子系統

      6、如果執行過程中,空閒空間不足,造成rebalance失敗,將出現ORA-15041錯誤,需要再新增disk,。

      7、如果需要頻繁新增disk,每一次都可能造成資料的頻繁移動,為提高效率,最好批量新增。

     從老的磁碟陣列切換和遷移disk到新的磁碟陣列命令如下:

SQL> alter diskgroup add disk '/dev/xxx/xxx'
           drop disk [disk_name] rebalance power 8;
     

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

相關文章