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