Drop 在ASM 10G時,ASM會立即Drop變成不可用的磁盤。這會觸發一個嘗試恢復數據冗余的重平衡操作。一旦重平衡過程完成,數據冗余度會恢復,同時磁盤會被移除出磁盤組。一旦磁盤不可用的故障被解決,可以通過alter diskgroup命令將磁盤重新添加回磁盤組。 例如:alter diskgroup DATA add disk 'ORCL: DISK077'; 這又會再次觸發一個重平衡操作,一旦重平衡過程完成,磁盤會恢復成為磁盤組成員。 但是如果多個磁盤同時發生故障,又或者一個磁盤故障在重平衡過程中又有磁盤故障會導致什么結果?這取決于多個因素,磁盤組的冗余度、磁盤是否來自于相同或不同的failgroup和故障磁盤是否是partner關系。 在一個normal冗余級別的磁盤組,ASM能容忍來自于一個failgroup中的一塊或者多塊,甚至是全部的磁盤故障。如果來自于不同的failgroup的磁盤變成不可用,僅當它們之間不存在partner關系時,ASM才能容忍。 這里提到的“容忍"的具體含義是指磁盤組能繼續online同時ASM客戶端訪問不受影響。 在一個high冗余級別的磁盤組,ASM能容忍僅來自于兩個failgroup中的一塊或者多塊,甚至是全部的磁盤故障。如果來自于兩個以上failgroup的磁盤變成不可用,partner關系規則仍然有效。基本上,ASM能容忍任意數量的磁盤變成不可用,只要它們之間不存在partner關系時。
Offline 當一個磁盤被drop,整個磁盤組需要為此進行rebalance,整個過程需要耗費大量的時間。在此期間,其他磁盤也可能會發生故障,使得數據丟失的風險大大增加。為解決這個問題,在11gR1開始,ASM引入了fast disk resync特性。ASM不再立即drop不可用的磁盤,而是先置為offline狀態。這樣做的意義是能讓ASM管理員被告知有磁盤發生故障后在disk repair time計時器到達閾值前修復故障。 默認的disk repair計時器閾值是3.6小時。這個閾值是可以通過alter diskgroup命令來調整的,假設要設置為12小時,命令如下:alter diskgroup DATA set attribute 'DISK_REPAIR_TIME' = '12h'; 在磁盤處于offline的這段時間里,ASM持續跟蹤需要在offline磁盤上做的修改操作。如果磁盤在計時器到達閾值前恢復可用并且恢復到online狀態,那么ASM會將這些修改操作應用到磁盤上去。這就是fast disk resync特性的具體用途。 如果導致磁盤離線的故障不能解決,在計時器到達閾值后,磁盤會從磁盤組中被drop掉。
Online 當一個系統管理員或者ASM管理員修復了導致磁盤不可用的故障后(可能是更換了某條故障的線纜),接下來該怎么做能讓磁盤恢復online狀態?這個過程能否能自動呢? 答案同樣也是看情況。如果是Exadata或者是Oracle Database Appliance,磁盤會被自動online。其他情況是ASM管理員需要通過alter diskgroup命令將磁盤恢復為online狀態。 例如: alter diskgroup DATA online disk 'ORCL: DISK077'; 或者 alter diskgroup DATA online all;