DBA親,你們的RAID5陣列有保障嗎?

2021-09-04 02:42:53 字數 4482 閱讀 7319

很多人遇到過伺服器raid5掛掉,往往掉乙個盤後,第二個盤也立刻掛掉。

引用:raid 5

也是以資料的校驗位來保證資料的安全,但它不是以單獨硬碟來存放資料的校驗位,而是將資料段的校驗位互動存放於各個硬碟上。這樣,任何乙個硬碟損壞,都可以根據其它硬碟上的校驗位來重建損壞的資料。硬碟的利用率為

n-1。如果掛掉兩個盤,資料就玩完了。

理論上兩個硬碟同時失效的概率是很低的,但為什麼會這樣呢?

引用:從數學角度說,每個磁碟的平均無故障時間

(mtbf)

大約為50

萬至150

萬小時( 也就是每

50~ 150

年發生一次硬碟損壞

) 。實際往往不能達到這種理想的情況,在大多數散熱和機械條件下,都會造成硬碟正常工作的時間大幅減少。考慮到每個磁碟的壽命不同,陣列中的任何磁碟都可能出現問題,從統計學角度說,陣列中

n 個磁碟發生故障的機率比單個磁碟發生故障的機率要大

n 倍。結合上述因素,如果陣列中的磁碟數量合理,且這些磁碟的平均無故障時間

(mtbf)

較短,那麼在磁碟陣列的預期使用壽命過程中,就很有可能發生磁碟故障

( 比方說每幾個月或每隔幾年就會發生一次故障

) 。

兩塊磁碟同時損壞的機率有多大呢

(「同時

」 就是指一塊磁碟尚未完全修復時另一塊磁碟也壞掉了

)?如果說

raid 5

陣列的mtbf

相當於mtbf^2

,那麼這種機率為每隔

10^15

個小時發生一次

( 也就是

1 萬多年才出現一次

) ,因此不管工作條件如何,發生這種情況的概率是極低的。從數學理論角度來說,是有這種概率,但在現實情況中我們並不用考慮這一問題。不過有時卻是會發生兩塊磁碟同時損壞的情況,我們不能完全忽略這種可能性,實際兩塊磁碟同時損壞的原因與

mtbf

基本沒有任何關係。

對這種情況來說,這裡首先要引入乙個一般人不常接觸到的概念:

ber

硬碟誤位元速率

, 英文是

ber(bit error rate),

是描述硬碟效能的乙個非常重要的引數

, 是衡量硬碟出錯可靠性的乙個引數。

這個引數代表你寫入硬碟的資料,在讀取時遇到

不可修復的讀錯誤的概率。從統計角度來說也比較少見,一般來說是指讀取多少位後會出現一次讀取錯誤。

隨著硬碟容量增加,驅動器讀取資料的誤讀率就會增加,而硬碟容量暴漲,誤位元速率的比例一直保持相對增加。

乙個1tb

的驅動器是需要更多讀取整個驅動器,這是在

raid

重建期間發生錯誤的概率會比

300g

驅動器遇到錯誤的機率大。

那這個錯誤的機率到底有多大呢?或者說,我們寫入多少

gb資料,才會遇到

1byte

的讀取錯誤呢?

看這篇文章:

對於不同型別的硬碟(以前企業級、伺服器、資料中心級硬碟用

scsi/

光纖,商用、民用級別是

ide;現在對應的則是

sas/sata

; 他們的 mrbf

(平均無故障時間)是接近的,但是

ber便宜的

sata

硬碟要比昂貴的

scsi

硬碟的誤位元速率(

ber)要高得多。

也就是說,出現某個

sector

無法讀取的情況,

sata

要比scsi

嚴重得多。

具體區別在韌體上:遇到讀取不過去,或者寫入不過去的壞道時,家用硬碟會花費

1 分鐘以上的時間去嘗試糾正錯誤,糾正不了就直接用備用扇區代替,這個時間超過陣列控制器能容忍的限度,所以遇到這種情況直接掉盤;企業級的磁碟會把這項工作放在後台進行,不需要停頓

1 分鐘左右的時間,從而不影響陣列執行。在

ber

硬碟誤位元速率上沒有任何區別。

按照文中的計算,乙個

1tb的硬碟,通常你無法讀取所有

sector

的概率達到了

56%,因此你用便宜的大容量

sata

盤,在出現硬碟故障的情況下重建

raid

的希望是:無法實現。 用

1tb的 sata

硬碟做raid5

的話,當你遇到乙個硬碟失效的情況,幾乎剩下的兩個以上硬碟(

raid5

最少組合是

3 個)鐵定會遇到乙個硬碟讀取錯誤,從而重建失敗。

所以,以前小硬碟做

raid5

,基本很少遇到同時掛掉兩個盤的情況;現在硬碟大了,出問題的概率也越來越大了。

對於跑raid

的使用者,對整個硬碟進行讀取的事情經常發生。即使系統足夠和諧,知道不對你報告那些出現在你從不讀取的檔案中的壞道,但是也只是略過了報告這一步:它還是會找到所有的壞道,

56%就來了。

還有所謂的監控專用企業級

sata

,其原理就是在韌體上做手腳,讓硬碟即使遇到寫入的資料讀取錯誤,也不管三七二十一直接跳過,不再重試讀取(標準硬碟的讀取方式是遇到某個扇區

crc錯誤自動重新再去讀,直到讀到正確的資料為止)。這對監控資料來說是理所當然的(大多數監控的硬碟都是在不停地寫入,但是很少需要讀取),除非遇到出現問題需要重現影像時。

現有的raid5

陣列的磁碟中有未檢測到的錯誤的話,

hot spare

沒辦法解決。

hot spare

只能在某個磁碟下線的時候,及時的替換下線的盤進行

raid

重建,如果其他磁碟有錯誤的話,重建還是會可能失敗。

解決方法還是要在陣列健康狀態下,進行定期或者其他方式的錯誤檢查。

一般的硬體陣列卡,也就是插在主機板

pci/pcix/pcie/

或者主機板整合的

raid5

,壓根就沒資料巡檢(

scrub

)功能。企業級的資料儲存,也只有到盤陣級別(比如

ibm ds3000/4000/5000

, dell md3000....etc

)才有這類功能,但是你也看不到檢查的結果,最多能在日誌裡看到某個硬碟

crc失敗,然後跳紅燈掉出來,陣列櫃告警通知你換硬碟。你別想知道這個硬碟到底是徹底掛了呢,還是有讀取錯誤,還是有壞道。。。總之兩眼一抹黑。(

zfs上的

raidz

有資料巡檢(

scrub

)功能)

總結遇到

raid5

一次掛掉倆盤的概率 1、

使用越大容量的硬碟做

raid5

,遇到ber

扇區的概率越大;比如用

100g

硬碟做raid5

就比用1tb

的安全; 2、

使用越多盤數的硬碟做

raid5

,遇到ber

扇區的概率越大;比如用

3 個盤做的

raid5

,比6 個盤做的

raid5

安全; 3、

使用越便宜的硬碟做

raid5

,遇到ber

扇區的概率越大;比如用

scsi/fc/sas

盤比用ide/sata

的 raid5

安全; 4、

raid5

裡面存放的資料越多,塞得越滿,遇到

ber

扇區的概率越大;比如存了

100g

資料的比存了

1tb資料的

raid5

安全;(

rebuid

時只讀取存過資料的扇區,某些卡則不管三七二十一要讀完整個盤)

raid1/raid10

參與重建的只有乙個盤

, 與

raid5

所有盤都需要參與重建相比,故障概率降低;

raid1

某一組磁碟故障,也不需要強制上線的操作,因為資料仍然存在,不需要組

raid

也能讀取,哪怕是換到其他沒有

raid

卡的機器上資料仍能讀出;而

raid5

如果不能強制第二個掉下的硬碟上線,你一點東西都讀不到。

對於db來說:做raid 1+0 是最好不過啦!(備份時必不可少的;

當 raid

處理降級狀態時,如重要資料容量不大,建議先做備份,當然這種備份應該是異機的,不可備份至當前已降級的

raid

中。如果在

rebuild

當中出現另外硬碟離線的情況導致

raid

卷 offline

,切不可重建

raid

,如確定後離線的硬碟,可通過強制上線恢復資料

( 有些控制器沒有選項,就沒辦法了

) 本文出自 「技術成就夢想」 部落格,請務必保留此出處

Raid5磁碟陣列raid資訊丟失資料恢復過程

北亞資料恢復中心接收到客戶的一台hp dl380 g4伺服器,伺服器使用hp smart array控制器掛載了一台國產磁碟陣列,磁碟陣列由14塊146g scsi硬碟組成一組raid5。作業系統為linux,構建了nfs ftp,作為公司內部檔案伺服器使用。由於伺服器機房進行搬遷,搬遷過程中管理員...

我理解的RAID5

raid5 就是做奇偶校驗 異或操作 它假定兩塊硬碟同時壞的概率非常非常低,n塊硬碟做了raid5之後,可以用的是n 1塊硬碟的容量 例如,4塊硬碟,每塊硬碟的相應位做奇偶校驗 這也解釋了為什麼做raid之後,大容量的硬碟只能被識別出和其他硬碟大小相同的容量 1 2 3 4 0 0 0 0 0 0 ...

恢復磁碟陣列RAID 5損壞硬碟

恢復磁碟陣列raid 5損壞硬碟 恢復步驟如下 mdadm manage dev md0 fail dev sdc1 告訴陣列硬碟sdc1已損壞,陣列將不再向該硬碟寫入資料 mdadm manage dev md0 remove dev sdc1 把硬碟sdc1從硬碟中移除 新增一塊硬碟 需重啟系統...