關鍵業務服務器對可靠性要求非常嚴格,調研機構曾調查過不同行業,關鍵業務中斷服務帶來的金錢損失:服務器宕機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來保證系統的可靠性。
部分文章來源與網絡,若有侵權請聯系站長刪除!