分布式存儲的Fail-in-place高容錯技術(shù)探討
序:飛機對飛行安全系數(shù)要求非常苛刻,要求能夠抵御任何故障或失效,具備Fail-in-place(FIP)高容錯特性,即能夠做到包容故障、隔離故障、延遲故障修復,直到安全著陸,否則會出現(xiàn)機毀人亡的災難性事故。分布式存儲承擔保障數(shù)據(jù)絕對安全與業(yè)務連續(xù)的重任,同樣需要具備FIP高容錯特性,否則可能出現(xiàn)數(shù)據(jù)丟失及業(yè)務中斷等災難性事件。 如何打造具備FIP高容錯特性的分布式存儲?
存儲、計算和網(wǎng)絡(luò)是構(gòu)成現(xiàn)代化信息系統(tǒng)的三大部件。在2021年3月中央發(fā)布的“十四五”規(guī)劃中,“大規(guī)模分布式存儲”被列為明確的發(fā)展重點。所謂分布式存儲,是相對于傳統(tǒng)集中式共享存儲的一種新技術(shù)概念。在過去30年里,中國企業(yè)普遍采用IBM、EMC、NetApp等國外知名廠商的磁盤陣列,其架構(gòu)體系主要是以RAID控制器為技術(shù)核心的集中式共享存儲架構(gòu)。分布式存儲是通過軟件定義存儲技術(shù),把多臺x86服務器的CPU、內(nèi)存、固態(tài)硬盤(SSD)、機械硬盤(HDD)等存儲資源,進行統(tǒng)一資源管理,通過高速網(wǎng)絡(luò)將數(shù)據(jù)分散存儲在各臺服務器中。
自云計算誕生以來,企業(yè)井噴式的數(shù)據(jù)處理業(yè)務量對IT的系統(tǒng)計算與存儲能力都提出了非常高的要求。傳統(tǒng)集中式存儲面臨數(shù)據(jù)孤島、擴展困難、成本高昂等挑戰(zhàn),與此同時,分布式存儲由于其易于擴展和管理、成本低、硬件靈活度高、可快速集成等明顯優(yōu)勢,逐漸成為全球的技術(shù)發(fā)展趨勢,也將作為中國企業(yè)數(shù)字化轉(zhuǎn)型的重要基石。
分布式存儲是一個技術(shù)難度被顯著低估的技術(shù)領(lǐng)域。隨著HDFS、Lustre、GlusterFS、Ceph等開源分布式軟件項目的興起,一個中等程度的軟件工程師可以在一天或一周時間內(nèi)搭建一個分布式存儲系統(tǒng)。包括華為、新華三、BAT、以及一些初創(chuàng)公司,在這些開源項目基礎(chǔ)上通過魔改,推出分布式存儲相關(guān)產(chǎn)品和服務,給行業(yè)帶來嚴重假象,似乎存儲沒有什么技術(shù)門檻。然而,無論是互聯(lián)網(wǎng)公司,還是在企事業(yè)單位,由于使用分布式存儲導致的業(yè)務中斷、甚至數(shù)據(jù)丟失的報導屢見不鮮。
為什么(分布式)存儲是一個技術(shù)壁壘很高的行業(yè)?這是由于存儲最基本的核心訴求是數(shù)據(jù)不丟失、業(yè)務不中斷。一個典型的存儲系統(tǒng)包含上百萬個電子元器件、上億行軟件代碼,里面任何一個元器件老化失效、電子信號干擾、軟件Bug、系統(tǒng)意外掉電,都有可能導致數(shù)據(jù)丟失。由此可見,要打造一個高可靠、高性能的分布式存儲系統(tǒng)絕非易事。
一個合格的存儲系統(tǒng)須具備高度容錯能力,是能夠在線更換故障或老舊部件的軟硬件系統(tǒng),需要同時滿足幾個方面的要求:高可靠性的數(shù)據(jù)存儲基礎(chǔ)、對數(shù)據(jù)錯誤具有自愈能力、正常運行和自愈過程均對前端應用無性能影響、以及較高的存儲效率。存儲系統(tǒng)的數(shù)據(jù)安全性就好比飛機的安全性,業(yè)務中斷就好比重大飛行事故,數(shù)據(jù)丟失對于一個存儲系統(tǒng)而言,就好比飛機失事,帶來災難性的破壞和難以估量的重大影響。
飛機是一個典型的具有高度冗余、高容錯性的機電系統(tǒng),其安全性依賴于Fail-in-place(FIP)高容錯技術(shù),即在飛行過程中,飛機任何零部件發(fā)生故障或失效故障時,飛機仍然可以安全返回機場并平安著陸,然后才進行必要的維修。FIP容錯的一個重要特征是,允許故障延遲修復,而不是必須立即解決或以最快的速度修復故障,否則可能會發(fā)生災難性事故。要實現(xiàn)FIP容錯,飛機采用了高度冗余設(shè)計,具備極強的故障告警、自動診斷、故障隔離,甚至自我修護的能力。
基于三副本架構(gòu)的分布式存儲是否具備FIP容錯能力呢?答案是否定的。
三副本分布式存儲通過將數(shù)據(jù)的三個副本分散保存在三個不同節(jié)點上。這種純粹的網(wǎng)絡(luò)副本保護機制雖然實現(xiàn)簡單,但其數(shù)據(jù)可靠性嚴重依賴數(shù)據(jù)修復的速度和系統(tǒng)規(guī)模。隨著硬盤數(shù)量增加,系統(tǒng)可靠性隨之降低,尤其是當磁盤老化、硬件故障率上升,再加上網(wǎng)絡(luò)可能出現(xiàn)的不穩(wěn)定狀況,以及磁盤可能出現(xiàn)的隱形數(shù)據(jù)失真等,三副本架構(gòu)容易出現(xiàn)不穩(wěn)定,甚至數(shù)據(jù)丟失的情況。當出現(xiàn)硬盤或節(jié)點故障時,三副本架構(gòu)需要盡快進行數(shù)據(jù)重建恢復,以免出現(xiàn)多個硬盤同時出現(xiàn)損壞而導致數(shù)據(jù)丟失的情況。
三副本分布式存儲多節(jié)點硬盤損壞導致數(shù)據(jù)丟失
和三副本分布式存儲相比,雙重RAID架構(gòu)的分布式存儲則具有顯著的FIP高容錯特性。雙重RAID架構(gòu),采用節(jié)點內(nèi)RAID數(shù)據(jù)保護與節(jié)點間副本保護相結(jié)合的方式。每個節(jié)點采用RAID10或RAID50/60 實現(xiàn)節(jié)點內(nèi)數(shù)據(jù)保護,可實現(xiàn)硬件故障隔離和本地數(shù)據(jù)修護。每個節(jié)點相當于一個小型的“磁盤陣列”,可抵御節(jié)點內(nèi)單個、甚至多個硬盤故障。在這些“磁盤陣列”之間,還有另外一層基于網(wǎng)絡(luò)副本的數(shù)據(jù)保護層,保證在極端情況下,即當故障突破磁盤陣列的保護能力時,還可利用網(wǎng)絡(luò)副本技術(shù)來修復數(shù)據(jù)。
正因為這種雙層RAID保護機制,當節(jié)點硬件出現(xiàn)故障時,可以通過本地RAID對故障進行隔離,不影響業(yè)務正常運行。故障修復可以采用延遲修復的策略,并且能自動避讓業(yè)務,即當業(yè)務繁忙時,數(shù)據(jù)修復減慢數(shù)據(jù);當業(yè)務空閑時,數(shù)據(jù)修復可以適當加快速度。
雙重RAID容忍多節(jié)點磁盤損壞
對比之下,三副本架構(gòu)的分布式存儲存在嚴重的數(shù)據(jù)安全隱患以及網(wǎng)絡(luò)導致的穩(wěn)定性問題。雙重RAID架構(gòu)的分布式存儲,作為南京道熵的核心技術(shù),因其具備獨特的FIP高容錯特性,代表著未來分布式存儲的發(fā)展方向,也標志著中國存儲企業(yè)已經(jīng)具備挑戰(zhàn)世界一流存儲企業(yè)的技術(shù)實力。