值得重視的假性磁盤故障,譯自“What is false disk failure, and why is it a problem?”

這一段時間在查找磁盤故障、可靠性相關的資料,下面這篇是之前瞭解較少的,

翻譯一下(直譯,比較生硬,請見諒,權且當作google的翻譯工具吧,:) )


另外,我接觸的磁盤樣本數量較少,目前遇到過一次磁盤假性故障(假死):在Linux OS

下,lsscsi看,該SATA磁盤盤符/dev/sd$X仍然存在,但是執行管理命令(例如smartctl)

或IO命令都報錯(例如dd讀寫)。 在機器上從發現磁盤IO異常到期間定位的幾十分鐘時間內,

該磁盤都是這種狀態,奇怪的是,Linux OS也並沒有讓該磁盤Offline。 之後把該磁盤拔下後

重新插回原機器、原槽位,能正常IO。


如有類似經驗,歡迎提供症狀與解決辦法,:)



原文地址:http://blog.lsi.com/what-is-false-disk-failure-and-why-is-it-a-problem/

March 19th, 2013 by Rob Ober
重視假性磁盤故障    
我(注:LSI的Rob Ober)花了大量的時間,走訪世界各地各種規模的數據中心,試圖瞭解數據中心運轉時存在的問題,方方面面的問題。你能想像到,在很多大型數據中心(mega datacenters)中,第一大問題是什麼嗎?答案可能是聞所未聞,或甚至是未曾考慮過的,那就是被稱作“假性磁盤故障”(false disk failure)問題。有些數據中心已經在採取措施面對和解決這個問題,有些還沒有重視它。
爲什麼需要重視“假性磁盤故障”呢?如今很多大型數據中心在線使用的磁盤數量巨大,高達一百萬到四百萬片,這也是一個非常有意思的統計數字。大型數據中心採購磁盤時,數量這麼巨大的磁盤用量,當然能夠得到一個非常優惠的價格,甚至可能比OEM渠道商拿到的價格都要好。也許有讀者說,磁盤出故障有什麼值得大驚小怪的,磁盤採購成本低廉,換磁盤也不費事,壞一塊更換就是了,反正數據有冗餘機制保護。但是且慢,數據中心磁盤出現故障時,一系列的工作以及相應的負擔開銷遠不是一塊磁盤的採購成本那麼簡單:
  • 一塊2TB或3TB磁盤故障後,RAID重建或者數據副本的情形中

    • RAID重建時,必然給RAID的應用性能帶來影響,應用性能的QoS也很難控制;並且這麼大容量的RAID重構,通常需要數天時間

    • 數據複製時,需要增加存儲容量(例如加磁盤),這是有相應成本,大約$40~$50

    • 需要在多臺服務器之間重新分佈副本數據

    • IT基礎架構中,需要把應用負載分配到其它服務器、重新進行負載均衡

    • 需要IT運維人員移走故障磁盤、更換上新的磁盤


我們來看一些上規模的數字,這個問題的嚴重性就會很明顯。在所走訪的數據數據中心中,其中一個非常慷慨地分享了他們在實際運行中的數據。這個數據中心規模不算大,之所以說不算大,是因爲該數據中心的規模只是其它衆多數據中心的1/4~1/2的樣子。即便這樣,這種規模數據中心的絕對數字依然大得驚人:擁有超過20萬臺服務器。其它數據中心的情況沒有透露。我認識的一個在磁盤製造工廠工作的工程師聽說了磁盤的故障數據後說”哇,我本來以爲更糟糕呢,現在看來已經相當不錯了“。數據中心所使用的硬盤是相當好的,但是一旦上規模後,問題依然會變得非常嚴重。
來看具體的數據:
做RAID的SAS磁盤:
  • 30萬片SAS磁盤

  • 每天報告故障的約15~30片

    • SAS磁盤的假性故障率在30%~45%(每天10-15片)

    • 年假性故障率約1/1000(譯者注:(10~15)*365/300000 = (12~18)/1000)


通過HBA卡直接連接、補做RAID的SATA:
  • 120萬片SATA磁盤

  • 每天報告故障的約60-80片

    • SATA磁盤的假性故障率在40%~55%(每天24-40片)

    • 年假性故障率約1/100(譯者注:(24~40)*365/1200000 = (7~12/1000) )


從SATA和SAS的數據對比來看,它們的相對故障率值得關注,SATA磁盤的年假性磁盤故障率比SAS磁盤的高出10倍(?譯者疑問)。坦白的說,其中部分原因是因爲SAS協議和SATA協議的不同造成的:SAS協議的錯誤處理能力比SATA要勝出不止一籌。另外,SAS磁盤比SATA磁盤貴出不少,筆者相信,磁盤製造廠商會選擇質量更好的元器件來製作SATA磁盤。我們知道,SAS磁盤上的電路板看上去比SATA磁盤要複雜一些。
假性故障?什麼是假性故障?是的,這是一個非常有意思的話題,從數據中心提供的數字來看,SAS磁盤有約40%的假性故障,SATA磁盤有約50%的假性故障。所謂假性故障,是指磁盤並不是真正故障,磁盤只是在一段時間內沒有反應(不響應主機命令)。當把假性故障的磁盤從運行機器上拔下來插入到檢測裝置時,檢測一圈下來,磁盤表現完全正常。更有意思的是,當把這樣的磁盤重新接入運行機器上使用時,從數據中心統計的情況來看,它們再次故障的概率並不比其它磁盤高。這是什麼原因呢? 沒有人知道,對此我非常懷疑。
我曾經做過引擎控制器,那是一個很偏執的行業,如果出問題或者某人出事故了,那就吃上官司了。如果控制器需要召回,需要更換的數量都得有數百萬,光模具開銷就是數百萬;每更換一個還得搭上數百美元的人工費。沒有人願意承擔這樣的大風險,因此在設計時,我們對內存和寄存器中的各種軟錯誤都進行了非常認真仔細地處理,我們採用了在服務器中所使用的ECC校驗技術、後臺檢驗和,主動掃描檢測,以及各種各樣的專有技術,包括看門狗和超級快速的自重置技術,該技術能讓引擎在不到一個完整衝程的時間就能重置重新開始工作。 爲什麼這麼做?這是有原因的。從歷史統計數據來看,軟錯誤事件發生的概率非常低,在引擎的整個生命期也就1~2次,而且事件發生時,一次點火就能重置狀態,很好地解決了問題。但是,軟錯誤終究會發生,一旦發生就會導致召回、吃官司,所以需要足夠重視、採用各種技術手段來應對各種錯誤...  磁盤控制器沒有這樣的保護機制,當然這也是情有可原的,畢竟就磁盤的價錢來說,那麼複雜的保護機制顯得過於奢望了。
還記得豐田普銳斯的加速器故障事件麼?我知道的情況是控制器沒有對軟錯誤提供足夠的處理和保護機制,當然事故的真正原因沒有公佈、仍然是個“謎”。也許它只是短時間沒有反應而已,這也可以說是一個假性故障,對吧。
回到磁盤相關話題上來,假性故障確實令人難受,想想,在發生故障的磁盤中,有一半的磁盤其實沒有問題不需要更換,但是,假性故障帶來的損失(詳見下)確實實實在在發生了、但卻不知道真正的原因,憋屈啊。而解決這種問題的方法居然是隻要讓磁盤重置就足夠了(ok,這引出了一系列的動作,RAID卡控制器或應用程序需要來處理磁盤的上電重置,一般這個過程需要10秒,應用程序要處理這段時間的上層IO,此處假定這些都已經搞定了)。
這樣的數據中心每天都要做的事情:
  • 更換100片左右的磁盤

    • 物理上更換100片故障磁盤(需要維護人員介入)

    • 複製副本或RAID重構這些磁盤包含的200~300TB數據量,想想就夠頭大的了

    • 重新對至少100臺服務器進行負載均衡,或者是100個集羣中的機器負載均衡,那也許是2000多臺服務器呢

    • 要應對副本複製200~300TB數據量所需要的網絡帶寬開銷

      • 按10Gb以太網帶寬計算,那也是需要50小時的量級啊



而上述所有的事情開銷,其中一半居然是沒有確切原因的假性磁盤故障所導致的!下面來具體看看。
首先,如果磁盤做RAID了,那麼爲什麼不重構磁盤呢?一般來說,數據中心的應用多是集羣,傳統的RAID重構會把服務器的性能拉下50%左右。如果是重構2TB的磁盤,在重負載下重構時間可能長達一週,在一週的時長內,服務器的性能只能發揮50%,這在集羣應用中,意味着整個集羣中的服務器都只能發揮50%的性能。假定集羣有200個節點,等於在重構的一週時間內,只有100個節點的性能產出,這個損失可不小。還不如簡單點,乾脆讓這個節點離線,這樣集羣服務器可以發揮100%的性能、而集羣整體的性能可以達到故障前的99.5%,也可以把負載重新分配到其它節點上(因爲在其它機器上有數據副本)。但是讓節點離線會引入其它問題,當節點RAID重構完成後,這個節點回到集羣時,還需要和集羣重新同步或重新映像,這些實現起來沒什麼問題,改天再談。 當然,也可以不做RAID,直接使用單盤,那麼就只需要不掛載該磁盤、讓故障磁盤離線即可。
其次,爲什麼通過網絡複製數據、爲什麼複製數據是個大事情呢?這是因爲,出於異地容災冗餘或區域局部訪問性能考慮,數據中心需要多份數據副本。通常是建立3副本來獲得足夠的可靠性;如果採用的是糾刪碼方案,那麼需要 2.2~2.5個副本(很奇怪的數學計算產物哈,怎麼會有0.5個副本呢...)。如果有副本損壞丟失,副本總數減少變成2乃至1時,就需要快速複製把副本恢復到讓系統足夠冗餘可靠的3副本狀態。這就需要通過網絡複製數據到數據中心的其它節點上,從而產生網絡流量開銷。複製數據的網絡流量過大時甚至會造成網絡擁塞,網絡擁塞會對數據中心的其它運行業務造成影響。在上述的例子中,這個數據中心每天會產生持續長達50小時的帶寬達到10Gb的網絡流量。
公平的說,SAS接口中有個新的標準,當磁盤不響應時,會重置磁盤;而SATA則剛開始就這個問題進行討論、SATA的問題要複雜得多。不管怎麼說,從開始討論標準到業界實現,怎麼着都得一年以上的時間。
這對用戶來說,意味着什麼?
嗯,可以預見的情況是:每年真正故障的磁盤有1/100,還有1/100的磁盤會發生假性故障。假性故障發生時,仍然會產生各種開銷:RAID重構或副本複製、更換磁盤、介入管理工作量、安排停機維護時間。而磁盤的OEM更換價格是$600左右(?),價格取決於磁盤的用量,如果量大的話,價格不算什麼大問題。假性磁盤故障問題的解決辦法其實很簡單,而且代價也不貴,甚至比磁盤盤架都便宜得多,解決起來也簡單透明--只要磁盤廠商在磁盤發生假性故障時記錄並重置磁盤即可。磁盤用戶羣體需要說服廠商採用這個解決方案。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章