服務器問題

      服務器的黑科技:服務器是怎么做到每年只停機30秒的?

      2020-04-29
      0
      關鍵業務服務器對可靠性要求非常嚴格,調研機構曾調查過不同行業,關鍵業務中斷服務帶來的金錢損失:服務器宕機1分鐘,平均會使運輸業損失15萬美元,銀行業損失27萬美元,通信業損失35萬美元,制造業損失42萬美元,證券業損失45萬美元。而根據ITIC最新2018年底統計,1小時停機損失:


      1小時停機損失,來源ITIC
      前些年關鍵業務服務器的金標準是要做到5個9,現在已經要求6個9,甚至7個9。他們是什么意思呢?

      X個9,表示在1年時間的使用過程中,服務器可以正常使用時間與總時間(1年)的比值。

      5個9:(1-99.999%)*365*24*60=5.26分鐘,表示1年非計劃停機時間不超過5.26分鐘。

      6個9:(1-99.9999%)*365*24*60*60=31.5秒,表示1年非計劃停機時間不超過30秒。

      7個9:(1-99.99999%)*365*24*60*60=3.15秒,表示1年非計劃停機時間不超過3秒。

      ITIC統計2018年80%的企業最低要求4個9,可靠性要求增長非常迅速:


      來源ITIC
      服務器能夠做到這么短的非計劃停機時間,除了在操作系統上要求嚴格外,硬件上的保證是重中之重。服務器的RAS(Reliability, Availability,Serviceability 高可靠性、高可用性、高服務性)特性(feature)曾經是大型機的驕傲,也是它們高高在上身價的基礎,但隨著X86在RAS功能上的補足,服務器市場已經幾乎被X86服務器占據。關鍵業務服務器由于歷史和維護原因,還有部分市場份額不在X86的掌控之中,但非X86高可靠性的神話已經破滅。根據ITIC統計:


      來源ITIC
      X86服務器不但占據絕大部分,而且可靠性也僅僅比Power 服務器低一點點。

      那么這些RAS功能都是些什么呢?絕對不是焚香禱告哦


      而是實打實的硬功夫!RAS的根本在于提供硬件冗余來避免錯誤;出錯后及時發現、糾正和避免錯誤擴散;替換掉出錯的設備等等。下面我們來分別了解一下。

      內存鏡像

      對計算機比較了解的同學都知道磁盤的RAID模式,RAID提供了數據冗余來保證數據安全。當然RAID是服務器上的必備要求,但你知道嗎,內存也有同樣的模式,那就是內存鏡像(Memory Mirror)。內存鏡像將4個通道的內存成對存儲相同的數據,類似磁盤的RAID 1,內存的數據在硬件上就被保存了兩份,當一份損壞時還有備份,而更妙的是這些是對軟件透明的。

      這個冗余度和RAID1一樣是很大的,一半的資源在大部分情況下閑置了,在提高可靠性的同時浪費也十分嚴重,有沒有稍微省錢點的做法呢?當然有,那就是內存備用(Memory Sparing),簡單來說就是保留了部分內存,當出錯再把這些內存拿來頂上。它的顆粒度可以到DIMM甚至以Rank為單位。

      SDDC、SDDC+1、DDDC和ADDDC

      大家知道1位奇偶校驗碼可以發現1位的錯誤,但不能糾正,對于2位以上連發現都發現不了。ECC好一些,但對于很多位錯誤就無能為力了。SDDC (Single Device Data Correction,單設備數據校正 )可以糾正X4的單設備錯誤:


      注意是1RX4, 來源SuperMicro
      SDDC+1不但可以糾正X4的內存錯誤,還可以把出錯的顆粒替換掉,讓它下次不再出錯:


      來源Supermicro
      DDDC(Double Device Data Correction )可以和Lockstep一起,將兩個DIMM拼拼,糾正兩個X4顆粒的錯誤:


      來源Supermicro
      DDDC+1和ADDDC(Adaptive Double Device Data Correction)這里就不再介紹,有興趣的可以自行Google。

      內存巡警

      這些都是內存訪問的時候發現錯誤了如何處理,但是還有些錯誤可能發生在沒有訪問的區域,這些區域錯誤不加處理,積少成多,可能超過DDDC的糾錯能力。這就需要Patrol Memory Scrubbing的幫助了。它會像高速巡警一樣,借助一個特殊的引擎,幫助定期掃描內存的可能出現的錯誤。Demand Scrubbing會把發現錯誤的數據,糾正后寫回去,避免錯誤積累。

      錯誤的報告和隔離

      本專欄有過兩篇文章介紹出錯的問題:

      老狼:計算機硬件出錯了會發生什么?
      ?
      zhuanlan.zhihu.com
      圖標
      老狼:WHEA原理和架構
      ?
      zhuanlan.zhihu.com
      圖標
      作為服務器必備的功能,WHEA會把錯誤向操作系統報告,操作系統可以選擇做出相應的動作。BIOS還可以設置poison位來標定出錯的范圍。

      CPU、內存和設備的熱插拔

      硬件發生了錯誤,即使已經通過各種手段(SDDC等)得到糾正,但隱患已經埋下。硬件一旦發生錯誤,可能會越來越嚴重,慢慢變得不能夠糾正而變成嚴重錯誤。為了避免發生這種情況,需要把出錯的設備移除和替換。

      那么操作系統報告給管理員錯誤后,該怎么辦呢?按照一般的想法就是關機換設備吧。但這種操作是嚴重影響x個9的可用性數據的。必須在操作系統還在持續提供服務的情況下更換設備、內存甚至CPU!

      也許你聽說過PCIe設備的熱插拔,但內存和CPU的熱插拔就比較高冷了。CPU和內存熱插拔和PCIe類似,有個attention開關。在按下后,BIOS、操作系統和硬件會合作把設備周邊電路隔離、內核對象移除和變更,在完成后會有狀態指示燈顯示準備工作結束,可以動手移除了。CPU和內存插入和這個相反,但都要BIOS、操作系統和硬件支持,十分復雜,但整個操作下來也十分炫酷。

      結論

      6個9甚至7個9是個系統工程,需要整體上考慮。除了這些RAS功能之外,服務器硬件如磁盤驅動器等等也與民用不同,十分昂貴。

      這些功能整體推高了服務器的價格,Google、FB、亞馬遜和阿里等等大型云服務公司決定另辟蹊徑,從操作系統級別的軟件冗余來解決系統X個9的可靠性問題,這樣一臺服務器出錯,直接整臺offline,而不是CPU或者內存的更換。于此同時另外2到3臺服務器還在持續提供服務,服務不會中斷。

      但是大型關鍵部門如銀行電信等,還在借助傳統的RAS來保證系統的可靠性。
      部分文章來源與網絡,若有侵權請聯系站長刪除!

      推薦產品