以 mdadm 和 raid 5 為例
URE 發生時,硬碟的控制晶片 ECC 失敗通常會整個 block/sector 給零
到作業系統上只壞 1bit 比較可能是其它原因
假設有 3顆 硬碟 (先進格式化 實體的 block = 4k )作 raid5
而 mdadm 使用的 chunk 64k ,檔案系統的 block 是 4k
假設檔案系統的 block 有和 raid 的 chunk 對齊
其中的一個 stripe 會長這樣,每個 ■ 為 4k (即磁碟的實體 block/sector)
也就是這 raid 其中的一個 128k 會長這樣
磁碟1 ■■■■■■■■■■■■■■■■ chunk 1
磁碟2 ■■■■■■■■■■■■■■■■ chunk 2
磁碟3 ■■■■■■■■■■■■■■■■ parity
今天 磁碟 3 掛掉了,磁碟 1 因為 URE 壞了一個 block
磁碟1 ■■■■■■■■■■■■■■■ chunk 1
磁碟2 ■■■■■■■■■■■■■■■■ chunk 2
磁碟3 parity
最好運的情況是檔案系統損失 4k
( 如果剛好壞的碟在URE stripe 是 parity block
並且非常剛好檔案系統的 block 就是磁碟的 block )
不過壞碟在發生 URE 的 stripe 是資料的情況比機率比較大
磁碟1 ■■■■■■■■■■■■■■■ chunk 1
磁碟2 ■■■■■■■■■■■■■■■■ parity
磁碟3 chunk 2
這時候至少就壞 64 + 4 k 了
不過以上情況都太樂觀了
raid chunk 大小常見 128 以上,512 最多
raid 上掛了 1 block 檔案系統可以知道並處理也不常見
這些情況反而是 zfs 或 btrfs 這種檔案系統層級 raid 才比較可能發生