愛伊米

Tech Talk·雲技術有話聊|關鍵基礎部件如何保障高可靠?

一、可靠性的定義和目標

可靠性是指系統不會意外地崩潰、重啟甚至發生資料丟失,這意味著一個可靠的系統必須能夠做到故障自修復,對於無法自修復的故障也儘可能進行隔離,保障系統其餘部分正常運轉。簡而言之,可靠性的目標是縮短因故障(產品質量、外部部件、環境、人因等)造成的業務中斷時間。

高可靠可以從三個層面理解:一,不出故障,系統可以一直正常執行,這種情況就需要提高硬體的研發質量。二,故障不影響業務。三,影響業務但能快速恢復。後兩個層面可以透過“軟體定義”的方式去規避硬體故障產生的業務中斷。

談到可靠性,首先要了解伺服器的關鍵基礎部件。從業界的伺服器統計資料看,硬體部件的問題集中在記憶體、硬碟、CPU、主機板、電源、網絡卡上。在雲的環境當中,同一臺伺服器上可能運行了若干不同業務、不同場景的虛擬機器,一旦物理裝置崩潰,將會波及眾多使用者,同時也會對運營商自身造成巨大損失。而在現有的故障模式中,記憶體、硬碟故障是最高發和最嚴重故障。

關於記憶體和硬碟的故障,可以透過這兩個案例來進一步瞭解。

案例一,記憶體UCE錯誤導致伺服器系統反覆宕機重啟。伺服器發生宕機重啟,登入伺服器的BMC管理介面,查詢伺服器的告警資訊,出現如下告警:“2019-07-25 08:03:06 memory has a uncorrectable error。”後來,進一步查詢硬體錯誤日誌檔案,發現DIMM020有大量記憶體CE錯誤和部分記憶體UCE錯誤,可知是因為DIMM020記憶體條發生UCE錯誤導致伺服器宕機重啟。

案例二,磁碟卡慢導致大資料叢集故障。某大資料平臺叢集節點出現慢盤故障(系統每一秒執行一次iostat命令,監控磁碟I/O的系統指標,如果在60s內,svctm大於100ms的週期數大於30次則認為磁碟有問題,產生該告警)。先是ZOOKEEPER出現故障,後出現叢集平衡狀態異常。然後同一節點的其他服務也出現故障,最後整個節點所有服務全部故障,隨後重啟自動恢復。但是在3-10分鐘之後該節點就會重複出現此情況。在未發現其他問題的情況下選擇重啟系統,業務中斷時間十幾分鍾。

二、記憶體的可靠性技術

記憶體從外部結構看有PCB板、金手指、記憶體晶片、記憶體條固定卡缺口等。從內部結構看,包括儲存體、儲存單元Cell、儲存陣列Bank、Chip(device)、Rank、DIMM、Channel等。

基於記憶體的結構,記憶體技術的提升(製程縮小和頻率)容易帶來更高的故障率。

(一)製程縮小帶來的挑戰

(1)光刻更容易受到衍射,聚焦等影響質量。

(2)外延生長(EPI)容易出現漏生長和外延生長間的短路等。

(3)蝕刻清洗等工藝的particle造成的影響加重。

(4)單die尺寸變小,單wafer die數量增加。

(5)未來TSV封裝多die後段封裝難度加大,失效率增加。

(二)頻率提升帶來的挑戰

(1)高速訊號時序margin更小,相容性問題更突出。

(2)訊號衰減更嚴重,DDR5增加DFE電路,設計更復雜。

(3) 更高頻率帶來更高功耗,對PI的要求更高。

記憶體故障按照“故障能不能糾正”可以分為兩類:CE(Correctable Error):可以糾正任意單位元錯誤、部分單顆粒多位元錯誤的統稱;UE(Uncorrectable Error):不能糾正的錯誤統稱。有一部分UE錯誤由於作業系統無法處理會導致系統宕機。

記憶體發生故障的原因有:記憶體單元能量洩漏 leakage、記憶體資料傳輸路徑存在高阻抗、記憶體電壓工作異常、內部時序異常、內部操作異常(如自重新整理)、bit line/word line線路異常、地址解碼線路異常、記憶體存在弱單元(可正常使用)、宇宙射線或放射性(沒有造成永久損傷)導致的軟失效(多次檢測故障不復現)。

在處理故障時,會進行分層處理,業內有軟體主導和和硬體主導兩種思想。基於硬體主導的觀點,會在器件選型的時候,選擇一些質量比較高的硬體,另外,硬體本身具備一些“可靠性”,比如會自動地糾正一些比較簡單的錯誤。

但硬體是沒有辦法做得非常可靠的,就需要軟體去做一些工作。軟體定義的方式會把有故障的記憶體區域隔離出來,讓它不再使用,從而不會對業務產生影響。

CE(可以糾正的錯誤)發生後,如果不去處理它,會有可能變成不可糾正的UE錯誤。所以要防微杜漸,發生CE(可以糾正的錯誤)時,要進一步處理,隔離出可疑的故障。

信服雲針對記憶體CE故障隔離方案設計思路

當記憶體硬體發生CE觸發中斷,看這些記憶體能否被隔離(不是被作業系統核心或外設使用),如果可以被隔離就加入白名單,對這些記憶體進行隔離。當使用記憶體隔離功能把發生故障的記憶體頁切換到正常的記憶體頁後,就把這個故障記憶體頁隔離出來不再使用。

同時,這些故障發生的位置和次數等詳細資訊會進行告警,幫助運維人員對故障記憶體條進行更換。針對沒有辦法隔離的記憶體,在系統下次重啟時根據重啟之前記錄的記憶體錯誤區域的資訊,在系統沒有使用這些記憶體時就把有問題的記憶體部分隔離出來,這樣就保證系統使用的記憶體是沒有問題的部分。

Tech Talk·雲技術有話聊|關鍵基礎部件如何保障高可靠?

記憶體CE故障隔離方案總體架構

信服雲實施這個方案之後,透過收集現網運營資料統計,平均隔離成功成功率為96。93%。相較於業界一般的方案的CE遮蔽,不能及時隔離CE以及出錯後定位記憶體條的問題,信服雲在方案上具有領先優勢,並且在這個領域申請了5項專利。隔離方案在使用過程中針對CPU和記憶體資源開銷小,並且效果明顯。

針對記憶體UE故障,信服雲的方案設計思路是解決記憶體UE的可恢復和提前預警問題,把一部分UE宕機降級為殺死對應應用程式,甚至只需隔離壞頁,避免宕機來提升系統穩定性和可靠性。至少提升30%以上記憶體故障恢復能力,信服雲的解決方案能夠達到60% 記憶體UE故障恢復率,效果優於業界公開資料(業界普遍是UE故障恢復能覆蓋50%),在實際POC測試場景中,優於業界的一般方案(如一般方案會宕機,無記憶體故障告警日誌,無法定位故障記憶體所在的插槽位置)。

Tech Talk·雲技術有話聊|關鍵基礎部件如何保障高可靠?

記憶體UE故障隔離方案總體架構

三、硬碟的可靠性技術

硬碟主要包括系統盤、快取盤、資料盤。系統盤一般使用固態硬碟SSD,存放雲平臺系統軟體和主機OS,以及相關的日誌和配置。快取盤一般使用固態硬碟SSD,利用SSD速度快的特性作為快取盤作為IO讀寫提速的快取層,用於存放使用者業務經常被訪問的資料,稱之為熱資料。資料盤一般使用機械硬碟HDD,容量高適合做資料盤則作為資料(如虛擬機器的虛擬磁碟)最終存放的位置。

(1)硬碟TOP故障模式/分類:

卡死:硬碟IO暫時或者一直不響應;

卡慢:硬碟IO明顯變慢或者卡頓;

壞道:硬碟邏輯單元(sector)損壞;

壞塊:硬碟物理單元(block)損壞;

壽命不足:機械硬碟物理磨損,或者固態硬碟的快閃記憶體顆粒積極達到擦寫次數。

當硬碟出現輸入輸出(Input Output,I/O)響應時間變長,或者卡住不返回的情況,會導致使用者業務持續出現卡慢,甚至掛起,一塊硬碟卡住甚至會導致系統的全部業務中斷。

隨著使用年限的增加,硬碟出現壞道、磁頭退化或者其他問題的機率也在增加;從歷史問題分佈、以及業界硬碟可靠性故障曲線,都可以看到硬碟卡盤問題正成為影響系統穩定執行的最嚴重問題之一。

Tech Talk·雲技術有話聊|關鍵基礎部件如何保障高可靠?

信服雲卡慢盤解決方案總體架構

(2)信服雲針對卡慢盤解決方案的思路:

1。針對磁碟卡慢故障模式複雜的問題,多維度檢測確診。採用了Linux通用的工具和資訊,不依賴特定硬體工具,包括核心日誌分析、smart資訊分析、硬碟io監控資料分析等從多個維度精確定位故障硬碟。

2。針對卡慢盤處置時業務還是資料的抉擇,制定了多級隔離演算法。輕度慢盤:不隔離,在頁面告警通知使用者;嚴重慢盤:選擇業務:對端異常時不隔離,頁面告警通知使用者;卡盤:選擇業務:第一次出現對端異常時不隔離,頁面告警通知使用者;卡盤(頻繁):選擇資料:一個小時內出現3次異常,進行永久隔離。

3。在多級隔離演算法的基礎上進行閾值打磨。用大量真實卡慢盤進行測試以及使用者側採集的資料制定更加精準的卡慢檢測閾值;使用故障注入工具進行閾值驗證。

開啟卡慢盤功能後的效果,可保障1min內觸發隔離,虛擬機器未出現HA,隔離後業務IO恢復穩定。

以上就是本次直播的主要內容。對雲計算感興趣的IT朋友可以關注“深信服科技”公眾號回顧本期直播,瞭解更多雲計算知識。

雷峰網