摘要:?互聯(lián)網(wǎng)時(shí)代的數(shù)據(jù)重要性不言而喻,任何數(shù)據(jù)的丟失都會(huì)給企事業(yè)單位、政府機(jī)關(guān)等造成無法計(jì)算和無法彌補(bǔ)的損失,尤其隨著云計(jì)算和大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)中心的規(guī)模日益增大,環(huán)境更加復(fù)雜,云上客戶群體越來越龐大,從而造成硬件故障、軟件失效等錯(cuò)誤發(fā)生的頻率也在猛增,任何架構(gòu)和流程上的疏漏都可能會(huì)造成大面積的數(shù)據(jù)丟失。
作者:劉晨旭,阿里云技術(shù)專家。
1. 背景
互聯(lián)網(wǎng)時(shí)代的數(shù)據(jù)重要性不言而喻,任何數(shù)據(jù)的丟失都會(huì)給企事業(yè)單位、政府機(jī)關(guān)等造成無法計(jì)算和無法彌補(bǔ)的損失,尤其隨著云計(jì)算和大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)中心的規(guī)模日益增大,環(huán)境更加復(fù)雜,云上客戶群體越來越龐大,從而造成硬件故障、軟件失效等錯(cuò)誤發(fā)生的頻率也在猛增,任何架構(gòu)和流程上的疏漏都可能會(huì)造成大面積的數(shù)據(jù)丟失。由此可見,保證客戶的數(shù)據(jù)可靠性對(duì)云計(jì)算服務(wù)提供商有多重要。
阿里云自研的盤古作為一個(gè)已經(jīng)演進(jìn)了近10年的分布式存儲(chǔ)系統(tǒng),經(jīng)受了阿里巴巴內(nèi)部各種產(chǎn)品、各種硬件的磨煉,發(fā)布到公有云來普惠大眾,讓每個(gè)基于阿里云的用戶都可以享受到世界領(lǐng)先的數(shù)據(jù)可靠性服務(wù)。因此,在此分享一下阿里云自研的分布式存儲(chǔ)系統(tǒng)——盤古針對(duì)數(shù)據(jù)可靠性問題的保障。
2. 數(shù)據(jù)可靠性的威脅
說起云環(huán)境下的數(shù)據(jù)可靠性,相信更多的一般云用戶想到的是硬件錯(cuò)誤,這類錯(cuò)誤非常多,F(xiàn)irmware引起的靜默數(shù)據(jù)丟失只是非常罕見的一類錯(cuò)誤。但是,硬件錯(cuò)誤只是云環(huán)境下威脅數(shù)據(jù)可靠性的一小部分因素,導(dǎo)致數(shù)據(jù)丟失的可能會(huì)是軟件、運(yùn)維部分出現(xiàn)錯(cuò)誤。由此,可以看出在云環(huán)境下保證客戶數(shù)據(jù)可靠性,不單單是硬件或者某一方面的事情,其涉及到存儲(chǔ)系統(tǒng)的方方面面,是一個(gè)龐大的系統(tǒng)工程,這就要求云服務(wù)提供商在各方面都能提供穩(wěn)定的、可靠的、有效的措施來保障客戶的數(shù)據(jù)。
數(shù)據(jù)可靠性的威脅一般包括硬件、軟件、運(yùn)維等方面。
硬件威脅:
硬件錯(cuò)誤類型非常多,包括磁盤壞道、Firmware bug磁盤靜默錯(cuò)誤導(dǎo)致數(shù)據(jù)損壞無法及時(shí)發(fā)現(xiàn)、電壓不穩(wěn)定導(dǎo)致數(shù)據(jù)未寫入但返回寫入成功、SSD長時(shí)間下線導(dǎo)致數(shù)據(jù)丟失、網(wǎng)絡(luò)傳輸錯(cuò)誤導(dǎo)致數(shù)據(jù)通過網(wǎng)卡后產(chǎn)生bits反轉(zhuǎn)等,。
軟件威脅:
內(nèi)核bug導(dǎo)致的文件系統(tǒng)數(shù)據(jù)錯(cuò)亂、系統(tǒng)Page cache導(dǎo)致的機(jī)器重啟和機(jī)房掉電丟失數(shù)據(jù)、野指針、多線程競(jìng)爭、上層應(yīng)用程序指針錯(cuò)亂導(dǎo)致正在被寫入和讀取的數(shù)據(jù)污染、存儲(chǔ)層軟件在機(jī)制上有數(shù)據(jù)丟失的漏洞等。
運(yùn)維威脅:
運(yùn)維是當(dāng)前丟失數(shù)據(jù)概率最高的因素,包括客戶的誤操作、誤刪除等因素。
3. 數(shù)據(jù)可靠性的保障手段
對(duì)于數(shù)據(jù)可靠性來說,數(shù)據(jù)副本技術(shù)是目前大多數(shù)客戶最容易理解的容錯(cuò)技術(shù)了,也是提升分布式系統(tǒng)可靠性、可用性、可擴(kuò)展性的常用手段之一。目前,阿里云及各家廠商都提供了三副本技術(shù)保障數(shù)據(jù)的可靠,另外阿里云的三副本技術(shù)是支持跨可用區(qū)的,考慮到跨可用區(qū)的成本較高,現(xiàn)在還僅有少數(shù)廠商才能做到。但是,數(shù)據(jù)可靠性保障不是僅數(shù)據(jù)副本技術(shù)就能做到的,其是一個(gè)龐大的系統(tǒng)工程,并不是某一項(xiàng)或幾項(xiàng)技術(shù)手段就能夠保障的,必須從數(shù)據(jù)中心的基礎(chǔ)建設(shè)開始、一直到整個(gè)軟件棧的構(gòu)建以及多種技術(shù)手段共同來保障。下面將詳細(xì)分析阿里云在云環(huán)境下如何系統(tǒng)保障客戶數(shù)據(jù)的可靠性。
3.1. 數(shù)據(jù)中心基礎(chǔ)設(shè)施建設(shè)
基礎(chǔ)設(shè)施硬件一般會(huì)在不同時(shí)間分批次購買不同廠商的硬件設(shè)備,其中就包含各種類型的磁盤設(shè)備。之所以這樣做,除了從成本上考慮之外,還需要考慮影響范圍問題。單純一個(gè)廠商采購一旦出現(xiàn)類似Firmware的問題就出現(xiàn)大面積數(shù)據(jù)丟失,影響眾多用戶。另外硬件投入使用中也需要對(duì)使用情況進(jìn)行跟蹤,例如磁盤設(shè)備由于組裝、運(yùn)輸?shù)扔绊懀诔跗谕度肷a(chǎn)使用時(shí)出錯(cuò)率遠(yuǎn)遠(yuǎn)高于后期正常使用期間的出錯(cuò)率,所以剛投入使用的硬件應(yīng)該有一個(gè)烤機(jī)的過程,將出錯(cuò)率降低后再投入使用,買來就大面積使用的方式是非常不負(fù)責(zé)任的一種做法。投入使用后也絲毫不能松懈,需要跟蹤每個(gè)批次磁盤的Firmware版本更新通知,一旦發(fā)現(xiàn)高危風(fēng)險(xiǎn)更新,需要及時(shí)打布丁或者將數(shù)據(jù)遷移,把數(shù)據(jù)丟失風(fēng)險(xiǎn)降低到最低。
3.2. 數(shù)據(jù)可靠的軟件棧構(gòu)建
硬件錯(cuò)誤類型非常多,想要在數(shù)量眾多的硬件錯(cuò)誤中,預(yù)期未來會(huì)出現(xiàn)哪種錯(cuò)誤是非常困難的,所以需要在軟件設(shè)計(jì)上規(guī)避掉硬件問題,設(shè)計(jì)一套優(yōu)良的軟件棧來防御預(yù)期和非預(yù)期的錯(cuò)誤。
首先軟件需要清晰的劃分層次,層次間通過清晰的接口來協(xié)作,實(shí)現(xiàn)端到端的保證在每個(gè)環(huán)節(jié)都保證可靠性、無數(shù)據(jù)污染。
上層應(yīng)用系統(tǒng)在接收到客戶數(shù)據(jù)的第一刻起,首先做好數(shù)據(jù)防錯(cuò)準(zhǔn)備,所有后續(xù)操作都依賴于此步驟的準(zhǔn)備工作。數(shù)據(jù)防錯(cuò)最基本高效方法是對(duì)用戶數(shù)據(jù)產(chǎn)生Checksum數(shù)據(jù)并傳遞到之后每一個(gè)層次,更高可靠性可以利用對(duì)數(shù)據(jù)做MD5進(jìn)行保護(hù),在之后的說明中用Checksum為例來說明如何對(duì)數(shù)據(jù)進(jìn)行保護(hù)。
層次間傳遞數(shù)據(jù)的所有接口必須攜帶數(shù)據(jù)校驗(yàn)Checksum類型和數(shù)據(jù)的Checksum值。在本層次對(duì)數(shù)據(jù)加工的過程中,首先通過數(shù)據(jù)加工產(chǎn)生新數(shù)據(jù)和數(shù)據(jù)對(duì)應(yīng)的Checksum,之后對(duì)新數(shù)據(jù)運(yùn)行逆運(yùn)算來重新產(chǎn)生原始數(shù)據(jù)并做驗(yàn)證對(duì)比,保證加工過程并未損壞任何數(shù)據(jù),同時(shí)給下一個(gè)處理步驟提供數(shù)據(jù)檢查依據(jù),直到數(shù)據(jù)和對(duì)應(yīng)的Checksum值被存儲(chǔ)到底層盤古系統(tǒng)中。
當(dāng)系統(tǒng)終端用戶讀取數(shù)據(jù)時(shí),每個(gè)層次逐層檢查下層系統(tǒng)的數(shù)據(jù)正確性,并依照數(shù)據(jù)加工流程重新恢復(fù)出用戶需要的數(shù)據(jù)并返回,從而達(dá)到了整個(gè)阿里云系統(tǒng)對(duì)用戶數(shù)據(jù)的全程無漏洞保護(hù)。
3.3. 存儲(chǔ)系統(tǒng)設(shè)計(jì)要點(diǎn)
當(dāng)上層業(yè)務(wù)系統(tǒng)加工完成數(shù)據(jù)后存盤過程中,盤古需要利用三副本和Erasure Coding編碼存儲(chǔ)技術(shù)保證不會(huì)由于單點(diǎn)硬件/軟件異常導(dǎo)致數(shù)據(jù)損壞和不可用。
3.3.1. 跨多可用區(qū)的三副本技術(shù)
三副本技術(shù)
阿里云提供一個(gè)扁平的線性存儲(chǔ)空間,在內(nèi)部會(huì)對(duì)線性地址進(jìn)行切片,一個(gè)分片稱為一個(gè)Chunk。對(duì)于每一個(gè)Chunk,阿里云會(huì)復(fù)制出三個(gè)副本,并將這些副本按照一定的策略存放在集群中的不同節(jié)點(diǎn)上,保證數(shù)據(jù)的可靠性。
在阿里云數(shù)據(jù)存儲(chǔ)系統(tǒng)中,有三類角色,分別稱為Master、Chunk Server和Client。一個(gè)寫操作,經(jīng)過層層轉(zhuǎn)換,最終會(huì)交由Client來執(zhí)行,執(zhí)行過程簡要說明如下:
? Client計(jì)算出這個(gè)寫操作對(duì)應(yīng)的Chunk。
? Client向Master查詢?cè)揅hunk的三份副本的存放位置。
? Client根據(jù)Master返回的結(jié)果,向這3個(gè)Chunk Server發(fā)出寫請(qǐng)求。
? 如果三份都寫成功,Client向客戶返回成功;反之,Client向客戶返回失敗。
Master的分布策略會(huì)綜合考慮集群中所有Chunk Server的硬盤使用情況,在不同交換機(jī)機(jī)架下的分布情況、電源供電情況、機(jī)器負(fù)載情況,盡量保證一個(gè)Chunk的所有副本分布在不同機(jī)架下的不同Chunk Server上,有效防止由于一個(gè)Chunk Server或一個(gè)機(jī)架的故障導(dǎo)致的數(shù)據(jù)不可用。
數(shù)據(jù)保護(hù)機(jī)制
當(dāng)有數(shù)據(jù)節(jié)點(diǎn)損壞,或者某個(gè)數(shù)據(jù)節(jié)點(diǎn)上的部分硬盤發(fā)生故障時(shí),集群中部分Chunk的有效副本數(shù)就會(huì)小于3。一旦發(fā)生這種情況,Master就會(huì)發(fā)起復(fù)制機(jī)制,在Chunk Server之間復(fù)制數(shù)據(jù),使集群中所有Chunk的有效副本數(shù)達(dá)到3份。
支持跨多可用區(qū)的存儲(chǔ)系統(tǒng)
盤古文件系統(tǒng)在生產(chǎn)系統(tǒng)中采用跨多可用區(qū)部署的方式,目前還僅是少數(shù)能做到,經(jīng)典的模式是支持橫跨三個(gè)以上可用區(qū),每個(gè)可用區(qū)距離30公里到50公里。無論是三副本還是EC(糾刪碼)副本,都是均勻分布在三個(gè)可用區(qū)內(nèi)。任何一次寫入都在三個(gè)可用區(qū)數(shù)據(jù)落盤后才會(huì)返回客戶成功。由于各可用區(qū)的數(shù)據(jù)中心有獨(dú)立的供電,網(wǎng)絡(luò)和冷卻系統(tǒng)等,跨多可用區(qū)的存儲(chǔ)提供了數(shù)據(jù)中心級(jí)別的容災(zāi)能力,在任一可用區(qū)完全不服務(wù)的情況下,整體服務(wù)無縫切換,數(shù)據(jù)無任何丟失。跨多可用區(qū)對(duì)阿里云內(nèi)部核心骨干網(wǎng)絡(luò)的要求非常極高,端到端的延遲要求在穩(wěn)定1毫秒以內(nèi),并且有Tb級(jí)別帶寬能力。阿里云投入了大量的資源來建設(shè)高容錯(cuò)能力和高性能的多可用區(qū)互訪的內(nèi)部核心骨干網(wǎng)絡(luò)。
綜上所述,對(duì)云盤上的數(shù)據(jù)而言,所有用戶層面的操作都會(huì)同步到底層三份副本上。因此,無論遇到軟硬件的錯(cuò)誤,這種模式都能夠保障數(shù)據(jù)的可靠性和一致性。
3.3.2. 糾刪碼技術(shù)(Erasure Coding)
對(duì)于可靠性來說,數(shù)據(jù)副本技術(shù)是最容易理解的容錯(cuò)技術(shù),目前一般云環(huán)境下采用三副本技術(shù)。數(shù)據(jù)副本技術(shù)另一大優(yōu)勢(shì)在于數(shù)據(jù)恢復(fù)的過程中對(duì)計(jì)算資源的消耗極少。由于采用的是直接復(fù)制,除了數(shù)據(jù)的存放位置可能需要計(jì)算之外,其它過程對(duì)CPU的利用極少。但是,使用數(shù)據(jù)副本技術(shù)也會(huì)帶來兩大方面的問題,一個(gè)是數(shù)據(jù)副本所占用的空間太大,對(duì)于網(wǎng)絡(luò)以及磁盤空間都有著極大的負(fù)擔(dān);另一個(gè)問題在于維護(hù)副本間的數(shù)據(jù)一致性會(huì)帶來極大的資源消耗。
為了提高磁盤的利用率,阿里云的數(shù)據(jù)中心系統(tǒng)使用冗余糾刪碼的方法來降低所需要的磁盤,并保證相同的容錯(cuò)能力。Reed Solomon是目前在云存儲(chǔ)系統(tǒng)中最常用的糾刪碼算法。在這個(gè)編碼中,假設(shè)原始數(shù)據(jù)為k 個(gè)大小相同的塊,糾刪碼通過編碼產(chǎn)生m 個(gè)冗余塊,這n = k +m 個(gè)塊中如果損壞了不超過m 個(gè)塊,則利用剩下的至少k 個(gè)塊可以將全部的n 個(gè)塊恢復(fù)出來。如果采用k=8, m=4的情況下,需要150%存儲(chǔ)空間即可,并且可以容忍4個(gè)磁盤的錯(cuò)誤,糾刪碼技術(shù)對(duì)副本技術(shù)很大的改進(jìn)。因此,云存儲(chǔ)系統(tǒng)保證數(shù)據(jù)可靠性,研究糾刪碼極其重要。現(xiàn)在通常采用的副本技術(shù)并發(fā)讀性能好,數(shù)據(jù)恢復(fù)速度快,但成本較高,通常用于保存熱數(shù)據(jù);采用糾刪碼成本低,容錯(cuò)能力可以進(jìn)行選擇,但數(shù)據(jù)恢復(fù)代價(jià)高,恢復(fù)速度慢,通常用于保存冷數(shù)據(jù)。
傳統(tǒng)的盤古文件系統(tǒng)中的糾刪碼技術(shù)醞釀?dòng)?012年末,目標(biāo)旨在通過應(yīng)用Erasure Codes編碼,在保障數(shù)據(jù)安全的前提下節(jié)省盤古數(shù)據(jù)的存儲(chǔ)空間,通過使用某種Erasure Codes編碼來達(dá)到節(jié)省空間的目的,將數(shù)據(jù)存儲(chǔ)效率提升了100%甚至更多。然而,由于其潛在的網(wǎng)絡(luò)流量、空間利用率等方面的局限性,2017年新一代盤古2.0對(duì)糾刪碼進(jìn)行了優(yōu)化和升級(jí),除保持原有糾刪碼技術(shù)的基本功能之外,在設(shè)計(jì)上,讀寫場(chǎng)景、流量優(yōu)化、空間效率上都會(huì)有大幅提升。
目前盤古2.0的糾刪碼技術(shù)對(duì)外支持多種存儲(chǔ)業(yè)務(wù),被大量而廣泛的使用各種應(yīng)用場(chǎng)景。阿里云通過采用Cauchy Reed Solomon(CRS)算法編碼,該算法簡單,編解碼效率很高使得相對(duì)于盤古三副本模式下3倍的存儲(chǔ)效率提升到了約2倍,同時(shí)能保證略好的理論數(shù)據(jù)安全性。阿里云存儲(chǔ)的metadata需要設(shè)置數(shù)據(jù)塊的數(shù)目和校驗(yàn)塊的數(shù)目,以(3,2)配置為例,阿里云將一塊數(shù)據(jù)拆成3份相同大小的數(shù)據(jù)塊,并利用ErasureCode計(jì)算出2塊校驗(yàn)塊,將這五份數(shù)據(jù)分別寫到5塊機(jī)器上,如果其中任意2塊數(shù)據(jù)出現(xiàn)了錯(cuò)誤,都可以根據(jù)存活下來的塊進(jìn)行數(shù)據(jù)恢復(fù),從而保證了數(shù)據(jù)的可靠性。
另外,盤古將Erasure Codes的能力實(shí)現(xiàn)在盤古內(nèi)部而不是外部。HDFS Raid將Raid功能以contrib包的形式實(shí)現(xiàn),獨(dú)立于HDFS核心之外。好處是不會(huì)增加核心文件系統(tǒng)的復(fù)雜度,壞處是效率和靈活度不足。盤古將Raid功能實(shí)現(xiàn)在核心中,通過同各個(gè)子模塊的緊密結(jié)合實(shí)現(xiàn)了最高的效率和靈活度。同時(shí),支持實(shí)時(shí)編解碼及文件級(jí)別指定編碼方法和編碼參數(shù)。實(shí)時(shí)編碼直接寫入Raid文件,無需后臺(tái)轉(zhuǎn)換,能最大程度節(jié)省網(wǎng)絡(luò)和計(jì)算資源。文件級(jí)別編碼參數(shù)的指定使得盤古能同時(shí)適用于在線和離線應(yīng)用的獨(dú)特要求。
綜上所述,阿里云已將糾刪碼技術(shù)大量應(yīng)用在了云存儲(chǔ)環(huán)境和產(chǎn)品中,在保障客戶數(shù)據(jù)可靠性的前提下,提升存儲(chǔ)效率。未來阿里云將繼續(xù)深入研究糾刪碼技術(shù)的應(yīng)用,提升編碼速度和數(shù)據(jù)恢復(fù)速度,拓展應(yīng)用場(chǎng)景。目前,阿里云已和國內(nèi)外頂尖高校在糾刪碼技術(shù)領(lǐng)域開展了廣泛的科研合作,如清華大學(xué)、上海交通大學(xué)等,研究不同校驗(yàn)鏈融合的原理與策略和優(yōu)化方法,盡可能降低跨AZ數(shù)據(jù)遷移、恢復(fù)和校驗(yàn)修改的資源開銷,大大提高網(wǎng)絡(luò)效率,針對(duì)不同的應(yīng)用場(chǎng)景,在同時(shí)兼顧性能、成本、可靠性、可用性、可擴(kuò)展性和管理策略的基礎(chǔ)上進(jìn)行優(yōu)化。
3.3.3. 及時(shí)檢測(cè)和快速恢復(fù)技術(shù)
結(jié)合三副本和糾刪碼技術(shù)確實(shí)能夠保證數(shù)據(jù)一定程度的可靠性,但也需要充分考慮到數(shù)據(jù)檢測(cè)和恢復(fù),才能更大程度地保證客戶的數(shù)據(jù)可靠性和可用性。因此,阿里云的盤古提供了及時(shí)檢測(cè)和快速恢復(fù)技術(shù),其設(shè)計(jì)要點(diǎn):
在選擇存儲(chǔ)參數(shù)時(shí)需要根據(jù)不同可靠性需求進(jìn)行定制化。例如元數(shù)據(jù)的可靠性一定高于數(shù)據(jù)的可靠性,否則會(huì)導(dǎo)致雖然有數(shù)據(jù)但是數(shù)據(jù)不知道如何訪問,雖然知道丟失了數(shù)據(jù),但是說不清楚給用戶丟了哪些數(shù)據(jù)等情況出現(xiàn)。所以元數(shù)據(jù)應(yīng)該能夠容忍更多的硬件/軟件失效情況,一般類似Firmware磁盤靜默等錯(cuò)誤不會(huì)威脅到元數(shù)據(jù)的安全。
在數(shù)據(jù)存儲(chǔ)位置、介質(zhì)類型等選擇方面也需要做到精細(xì)控制,例如為了數(shù)據(jù)安全性考慮,多個(gè)副本需要盡量多的放置在多種介質(zhì)類型上,防止某個(gè)類型的硬件出現(xiàn)錯(cuò)誤導(dǎo)致多個(gè)副本受到威脅,同時(shí)也可以實(shí)現(xiàn)數(shù)據(jù)訪問加速和節(jié)約成本的目的,一箭雙雕。
磁盤存儲(chǔ)完成后還需要防止類似Firmware bug、SSD長期不加電、磁盤壞道等導(dǎo)致的靜默錯(cuò)誤,所以需要存儲(chǔ)產(chǎn)品定期運(yùn)行數(shù)據(jù)全量掃描、高頻次的篩檢等維護(hù)任務(wù),防止數(shù)據(jù)靜默錯(cuò)誤后不能及時(shí)發(fā)現(xiàn)的問題。
及時(shí)發(fā)現(xiàn)數(shù)據(jù)損壞后,需要對(duì)不同丟失風(fēng)險(xiǎn)的數(shù)據(jù)做優(yōu)先級(jí)精確控制,保證高風(fēng)險(xiǎn)的數(shù)據(jù)被優(yōu)先恢復(fù)。
上面的策略中,及時(shí)發(fā)現(xiàn)錯(cuò)誤、快速數(shù)據(jù)恢復(fù)和數(shù)據(jù)原有的容錯(cuò)能力配置共同決定的數(shù)據(jù)可靠性有多高。
在數(shù)據(jù)存儲(chǔ)格式上也需要非常縝密的設(shè)計(jì),需要保證:
出現(xiàn)數(shù)據(jù)損壞可以高效發(fā)現(xiàn),發(fā)現(xiàn)過程可以是在用戶觸發(fā)的讀操作,也可能是存儲(chǔ)產(chǎn)品的后臺(tái)掃描等過程;
如果出現(xiàn)了元數(shù)據(jù)丟失、文件系統(tǒng)損壞、運(yùn)維誤操作等情況或者Firmware導(dǎo)致的文件系統(tǒng)元數(shù)據(jù)損壞,可以使用掃描落盤數(shù)據(jù)方式來快速重建元數(shù)據(jù),將數(shù)據(jù)丟失風(fēng)險(xiǎn)降低到最低。這種縝密的設(shè)計(jì)是盤古系統(tǒng)接近10年的生命期內(nèi)能保證無數(shù)據(jù)丟失的安身立命的基本功。
3.3.4. 端到端CRC保護(hù)
盤古系統(tǒng)提供端到端的數(shù)據(jù)校驗(yàn),上層的云存儲(chǔ)產(chǎn)品提供數(shù)據(jù)的CRC,盤古在落盤的時(shí)候進(jìn)行校驗(yàn),并且把CRC和數(shù)據(jù)一起寫入磁盤。后臺(tái)任務(wù)也一直巡檢,檢查存儲(chǔ)介質(zhì)可能出現(xiàn)的位跳變(bit rot)錯(cuò)誤,一旦發(fā)現(xiàn)和寫入的CRC不符,找到正確的副本,重新復(fù)制一份新的副本。
任何對(duì)數(shù)據(jù)轉(zhuǎn)換的操作前后遵循檢查步驟:
? 數(shù)據(jù)D轉(zhuǎn)換為D’,計(jì)算CRC C’
? 逆轉(zhuǎn)換D’到D,計(jì)算C’’,檢查C ?= C’’
? 進(jìn)行后續(xù)數(shù)據(jù)傳輸或存儲(chǔ)
防御能力:
? 代碼野指針導(dǎo)致的內(nèi)存數(shù)據(jù)污染
? 網(wǎng)絡(luò)bits翻轉(zhuǎn)導(dǎo)致的數(shù)據(jù)錯(cuò)誤
? 磁盤靜默錯(cuò)誤導(dǎo)致的數(shù)據(jù)損壞
數(shù)據(jù)塊唯一性特征作為落盤前CRC的初始值:
? 防止內(nèi)核文件系統(tǒng)錯(cuò)亂
? 數(shù)據(jù)丟失后裸盤掃描特征識(shí)別
數(shù)據(jù)節(jié)點(diǎn)定期全盤CRC檢查
? 防止數(shù)據(jù)靜默錯(cuò)誤
3.3.5. 灰度變更
灰度變更是另外一項(xiàng)保障客戶數(shù)據(jù)可靠性的關(guān)鍵技術(shù)。顧名思義,灰度變更是指在黑與白之間,能夠平滑過渡的一種變更方式。這種變更方式類似于A/B test,讓需要變更內(nèi)容一部分先變更到目標(biāo)內(nèi)容,一部分保留,如果變更后的內(nèi)容在運(yùn)行一段時(shí)間內(nèi)沒有發(fā)生錯(cuò)誤,再逐漸擴(kuò)大范圍,把全部內(nèi)容變更為目標(biāo)內(nèi)容。灰度變更可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。灰度變更的優(yōu)勢(shì)在于:
? 云服務(wù)數(shù)據(jù)可靠性及可用性優(yōu)先保障。
? 灰度變更能降低云操作風(fēng)險(xiǎn),減少影響范圍,并且范圍可控。
? 方便集中監(jiān)控日志,全量變更由于負(fù)載均衡的作用,需要整體跟蹤,效率較低。
? 方便數(shù)據(jù)回滾。
? 避免出現(xiàn)錯(cuò)誤給用戶帶來壞的體驗(yàn)。
阿里云將灰度變更用于硬件、軟件及備份容災(zāi)等方面,具體如下:
軟件灰度:
? 操作系統(tǒng)升級(jí)
? 軟件版本灰度
硬件灰度:
? 新機(jī)型適配
? 新存儲(chǔ)介質(zhì)適配
跨地域容災(zāi)備份
? 防止自然災(zāi)害、戰(zhàn)爭引起的數(shù)據(jù)丟失
? 增加系統(tǒng)可用性
3.3.6. 防御運(yùn)維誤操作
? 盤古Pin
支持哪些頂級(jí)目錄是不允許刪除的,可以有效防止命令行中的空格導(dǎo)致的頂級(jí)目錄被誤刪除的問題。
? 回收站
目錄樹回收站:保證文件刪除后可以在目錄樹的回收站中保留一個(gè)可配置時(shí)間。
數(shù)據(jù)節(jié)點(diǎn)回收站:在磁盤空間富裕時(shí),盡量保留刪除的數(shù)據(jù)不被覆蓋,給誤刪除數(shù)據(jù)恢復(fù)留余地。
? 元數(shù)據(jù)備份
專有云中,定期調(diào)用盤古功能對(duì)元數(shù)據(jù)的增量日志進(jìn)行存儲(chǔ)備份,防止數(shù)據(jù)被誤刪后恢復(fù)時(shí)間過長的問題。
? 盤古集群唯一標(biāo)識(shí)
防止運(yùn)維操作數(shù)據(jù)節(jié)點(diǎn)從一個(gè)集群下線后重新上線到其他集群后數(shù)據(jù)被清空的問題。
? 格式化審批
所有數(shù)據(jù)盤格式化都必須經(jīng)過盤古管控模塊確認(rèn)數(shù)據(jù)安全的前提下才允許進(jìn)行下線格式化。
? 下線審批
機(jī)器和磁盤下線前需要經(jīng)過全盤掃描后,保證上面的數(shù)據(jù)在其他機(jī)器上有足后的副本數(shù)后才允許下線,防止誤操作導(dǎo)致服務(wù)停止。
4. 總結(jié)
綜上所述,阿里云非常重視客戶數(shù)據(jù)的可靠性,將其作為一個(gè)龐大的系統(tǒng)工程進(jìn)行設(shè)計(jì)和保障,久經(jīng)磨練的盤古在經(jīng)歷了多次軟件重構(gòu)、架構(gòu)迭代之后,最終作為統(tǒng)一的存儲(chǔ)平臺(tái)支撐各種云產(chǎn)品并推向公共云、專有云,利用跨多可用區(qū)的三副本技術(shù)、糾刪碼技術(shù)、糾刪碼和多副本融合技術(shù)、及時(shí)檢測(cè)、快速恢復(fù)、端到端CRC保護(hù)、灰度變更、防止運(yùn)維誤操作等一系列的技術(shù)手段,為客戶的數(shù)據(jù)提供了一套系統(tǒng)的保障方案,保障客戶能夠抵御涉及到硬件、軟件及運(yùn)維等多方面的錯(cuò)誤,也保證了阿里云為用戶提供世界領(lǐng)先的數(shù)據(jù)可靠性。
了解更多云服務(wù)器ECS詳細(xì)信息請(qǐng)戳:https://www.aliyun.com/product/ecs?spm=5176.8142029.388261.286.43676d3e8MRr2W
了解更多對(duì)象存儲(chǔ)OSS相信信息請(qǐng)戳:https://www.aliyun.com/product/oss?spm=5176.8789780.search.1.544857a87i47o3
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
電子發(fā)燒友App










































評(píng)論