2016年4月1日 星期五

磁碟陣列失效的可能性

前面一篇文章提到,如果不想要因為磁碟陣列損壞而出現“啊,我死定了”的感覺,那這樣計算磁碟陣列因為硬碟故障造成磁碟陣列失效的可能性就很重要。先說結論:
  • 單一硬碟又不備份是找死的行為
  • RAID1很安全,三顆幾乎是永保安康,但空間容易不足
  • RAID5組建磁碟陣列,建議量是4到6顆,不要超過10顆,請備份重要資料
  • RAID6組建磁碟陣列,建議量是8到16顆,不要超過20顆,請備份重要資料
下面這件事情很重要所以要說三次
磁碟陣列不是備份!!
    磁碟陣列不是備份!!
        磁碟陣列不是備份!!
備份請另外找備份用的機器,最好能夠做到異地備援

要計算磁碟陣列故障率,首先必須要知道硬碟的年故障率,根據此資訊可知單一個硬碟年故障率約莫在1%~12%(不考慮人品不好拿到超過50%的極端情況...)。這邊硬碟年故障率叫做ff={1%, 2%, 4%, 6%, 12%},橫軸x是經過的時間(單位是年);縱軸y是經過了x年之後的故障率(單位是機率,會發生在0到1之間)

單一硬碟的狀況

單一硬碟的故障率可以依照下面公式計算:
y = 1 - 經過x年都沒有壞的機率
   = 1 - 年良好率^x
   = 1 - (1 - 年故障率)^x
   = 1 - (1 - f)^x
依照上面公式用年故障率1%(紫), 2%(藍), 4%(綠), 6%(橘), 12%(紅),可以畫出下圖:
單一硬碟的故障率

所有的單一硬碟都沒有辦法達到五年百分之三故障率的標準,也就是說,資料放在單一硬碟又不備份基本上是個找死的行為


RAID1(mirror)的狀況

做成RAID1,所有硬碟都做成鏡像,理論上可以放置n個硬碟,但是一般來說都是配置兩顆mirror、但以某人人品不好遇到兩個同時壞掉,現在系統可以的話都做三顆mirror。RAID1的好處就是同時可以容忍n-1個硬碟壞掉,也就是說要N個硬碟同時壞掉磁碟陣列才會失效,故上述的公式更改成:
y = 1 - 經過x年RAID1都沒有壞的機率
   = 1 - RAID1的年良好率^x
   = 1 - (1 - 年故障率^2)^x   這邊n代表的是RAID1安裝的硬碟數目,此處是兩個
   = 1 - (1 - f^2)^x
令單個硬碟年故障率是1%(紫), 2%(藍), 4%(綠), 6%(橘), 12%(紅),可以畫出下圖:
兩個硬碟組成RAID1
此圖說明了,除非拿到年故障率12%(紅線)的硬碟,不然做兩個硬碟的RAID1基本上五年內磁碟陣列失效的機率都不會超過3%。如果年故障率在4%(綠線)以下的話,組成的兩顆RAID1資料在五年內消失的機率在1%以下。所以說使用RAID1兩顆來確保資料安全,實務上還是需要考慮到硬碟品牌
另外補充,做三個硬碟的RAID1,即使是年故障率12%(紅線)的硬碟,上圖的線也很靠近綠線。因此可以知道如果要資料安全保存的話,RAID1三顆可以讓你確保資料的死亡率遠低於老闆的死亡率,也就是基本上是不用擔心資料不見而被老闆罵死~


RAID5的狀況

RAID1很安全,但是RAID1沒辦法提供足夠大的儲存空間。另外一個解法就是RAID5,好處是如果有n個容量是size的硬碟組成RAID5,那麼容量就會是(n-1) * size;另一方面,RAID5可以容忍任何一個硬碟壞掉,換句話說就是要同時有任兩個硬碟壞掉才會造成資料損毀。
對一個n個硬碟組成的RAID5,任取兩個硬碟的組合數目c會是C(n,2)
n = 3, c = 3
n = 4, c = 6
n = 6, c = 15
n = 8, c = 28
n = 10, c = 45
n = 12, c = 66
n = 16, c = 120
n = 32, c = 496
n = 64, c = 2016

y = 1 - 經過x年RAID5都沒有壞的機率
   = 1 - RAID5的年良好率^x
   = 1 - (1 - c*年故障率^2)^x
   = 1 - (1 - c*f^2)^x
令單個硬碟年故障率是1%(紫), 2%(藍), 4%(綠), 6%(橘), 12%(紅),RAID5的故障率是
由4個硬碟組成的RAID5
可以看到只有年故障率1%與2%硬碟組成的4HDs, RAID5可以達到五年磁碟陣列失效率小於3%

由6個硬碟組成的RAID5
年故障率2%的勉強達成五年磁碟陣列失效率3%的要求

由8個硬碟組成的RAID5
只有年故障率1%的硬碟組成的8HDs, RAID5可以達到五年磁碟陣列失效消失率小於3%

由12個硬碟組成的RAID5
完全沒有硬碟可以達標。也就是放任不管的話,即使是最好的硬碟,組成12HDs, RAID5五年的磁碟陣列失效率也會超過百分之三!

結論:雖然說RAID5可以容忍壞掉一個硬碟,壞掉是可以馬上更換,所以說五年損毀率沒有上面所說那麼慘。但是由於組建的硬碟都會是同一批,還是有可能會發生在重建的時候資料消失的慘劇。所以說使用RAID5組建磁碟陣列絕對不要超過10顆,建議量是四到六顆,組越多顆硬碟要求的品質就要越好。上面的排列組合列到64只是要讓人體會到換不完的硬碟,與活在資料不見的恐懼......當RAID5用超過12個硬碟組起來的時候


RAID6的狀況

RAID5在大儲存空間的時候安全性不夠,所以要考慮到RAID6,好處是如果有n個容量是size的硬碟組成RAID5,那麼容量就會是(n-2) * size;另一方面,RAID6可以容忍任何兩個硬碟壞掉,換句話說就是要同時有任三個硬碟壞掉才會造成磁碟陣列失效。
對一個n個硬碟組成的RAID6,任取兩個硬碟的組合數目c會是C(n,3)
n = 4, c = 4
n = 6, c = 20
n = 8, c = 56
n = 10, c = 120
n = 12, c = 220
n = 16, c = 560 
n = 32, c = 4960
n = 64, c = 41664

y = 1 - 經過x年RAID6都沒有壞的機率
   = 1 - RAID6的年良好率^x
   = 1 - (1 - c*年故障率^3)^x
   = 1 - (1 - c*f^3)^x

令單個硬碟年故障率是1%(紫), 2%(藍), 4%(綠), 6%(橘), 12%(紅),RAID6的故障率是
6個硬碟組成的RAID6
可以見到這種情況幾乎是拿到爛硬碟,不然資料消失的機會實在都很低

10個硬碟組成的RAID6
年故障率4%(綠)的五年資料損毀率約在4%,算還可以。

16個硬碟組成的RAID6
如果硬碟挑的好的話,五年的資料消失率還是在3%以下。但是也不能夠放任不管,要是遇到不好的硬碟,又沒有勤加替換的話,還是會有機會遇到磁碟陣列失效~

結論:RAID6可以容忍壞掉兩個硬碟同時壞掉,壞掉是可以馬上更換,所以說五年磁碟陣列失效率沒有上面所說那麼慘。但是由於組建的硬碟都會是同一批,還是有可能會發生在重建的時候資料消失的慘劇。所以說使用RAID6組建磁碟陣列絕對不要超過20顆,建議量是8到16顆,組越多顆硬碟要求的品質就要越好


以上算出來磁碟陣列失效,並不代表資料一定都會不見,還是有一些方式可以做資料救援。不過一旦要做到資料救援,代表需要花費許多金錢與時間,也無法做到完整回復。因此,還是必須要注意磁碟陣列失效率與資料回復的時間,藉此來考量資料備份的頻率

2016-Apr-05 更新

以上RAID5, RAID6的算式只是近似值,因為我只有算恰恰好壞掉兩個(RAID5)或是三個(RAID6)當作是RAID失效的條件,但還是有可能同時會壞超過這個數目,需要更好的方式來估算磁碟陣列失效率

_EOF_

沒有留言:

張貼留言