深度解析:從數(shù)據(jù)切分到容災(zāi)機(jī)制,構(gòu)建PB級可靠存儲底座)
1. 內(nèi)容整體設(shè)計與思路拆解1.1 “海納數(shù)據(jù)”背后的存儲困境拿到“霄云碧海分布式存儲”這個名字的時候我第一反應(yīng)是這家團(tuán)隊對存儲的理解確實(shí)有點(diǎn)東西。“霄云”對應(yīng)的是云上資源強(qiáng)調(diào)的是存儲系統(tǒng)在云環(huán)境中的適應(yīng)能力“碧?!睂?yīng)的是數(shù)據(jù)本身的體量和流動性海納百川。但真正讓我覺得值得拆解的是后面那句“海納數(shù)據(jù)釋放價值”。過去幾年我接觸過不少企業(yè)級存儲項(xiàng)目有一個感受特別深大多數(shù)企業(yè)的數(shù)據(jù)不是不夠多而是散。生產(chǎn)線上的工業(yè)數(shù)據(jù)在A系統(tǒng)里ERP里的結(jié)構(gòu)化數(shù)據(jù)在B數(shù)據(jù)庫里監(jiān)控視頻在C設(shè)備的本地硬盤里研發(fā)文檔在D同事的筆記本電腦里。數(shù)據(jù)一旦散落就談不上分析、談不上挖掘、談不上合規(guī)留存甚至連“備份”兩個字都是奢望。某次我陪一家制造企業(yè)做過一次存儲現(xiàn)狀摸底光是梳理數(shù)據(jù)資產(chǎn)就花了三周最后發(fā)現(xiàn)真正被有效利用的數(shù)據(jù)不到12%。這就是“海納”二字的痛點(diǎn)所在——先把散落的數(shù)據(jù)裝進(jìn)同一個池子里才有后續(xù)的一切。分布式存儲在這條鏈路上的位置非常微妙。往下要兼容各種硬件往上要支撐各種應(yīng)用中間還要把數(shù)據(jù)可靠性、性能、擴(kuò)展性三者平衡好。這不是堆幾塊硬盤、裝個開源軟件就能解決的事。霄云碧海這類產(chǎn)品真正要回答的問題是當(dāng)數(shù)據(jù)量從TB級漲到PB級應(yīng)用從單一業(yè)務(wù)擴(kuò)展到幾十個并發(fā)業(yè)務(wù)存儲系統(tǒng)能不能做到不推倒重來、不遷移傷筋動骨、不性能斷崖。1.2 為什么分布式存儲成了必選項(xiàng)我可以直接說結(jié)論單機(jī)存儲的天花板太低了而且低得越來越明顯。傳統(tǒng)存儲陣列不管是SAN還是NAS擴(kuò)展方式基本就是換更大的柜子或者再買一臺新設(shè)備。這個模式在數(shù)據(jù)量小的時候問題不大但一旦數(shù)據(jù)量上去兩個問題馬上暴露。第一是性能瓶頸控制器就那么多CPU和緩存后端磁盤數(shù)量再多也要排隊。第二是管理復(fù)雜度一堆獨(dú)立的存儲設(shè)備各自建池、各自管理、各自運(yùn)維數(shù)據(jù)在這臺設(shè)備上還是在那一臺上沒有人能說清楚。分布式存儲的核心思路是“把雞蛋分到多個籃子里但讓每個籃子看起來像一個籃子”。通過把數(shù)據(jù)切分到多臺服務(wù)器上同時保存多份冗余配合分布式元數(shù)據(jù)服務(wù)協(xié)調(diào)讀寫從邏輯上對外呈現(xiàn)一個統(tǒng)一的、無限的存儲空間。這就繞開了單機(jī)存儲的物理天花板你缺容量就加服務(wù)器缺性能就加SSD或加節(jié)點(diǎn)整個系統(tǒng)在線擴(kuò)容業(yè)務(wù)不中斷。“霄云碧?!边@類產(chǎn)品在架構(gòu)上走的是當(dāng)前主流的分布式路徑但據(jù)我了解它在幾個細(xì)節(jié)上做得比較有特色。比如小文件處理在視頻監(jiān)控、AI訓(xùn)練數(shù)據(jù)、海量日志這類場景里幾億個小文件會讓很多存儲系統(tǒng)直接崩潰它通過內(nèi)存索引合并、熱點(diǎn)數(shù)據(jù)識別等手段來處理這恰恰是很多開源方案的重災(zāi)區(qū)。再比如多協(xié)議互通同一個存儲池同時撐起文件、塊、對象三種訪問方式業(yè)務(wù)側(cè)不需要關(guān)心數(shù)據(jù)到底放在哪個協(xié)議層下面這在實(shí)際交付中能省非常多事。1.3 這個產(chǎn)品適合誰來用從落地場景倒推的話我接觸過的典型用戶大概分三類。第一類是數(shù)據(jù)量巨大且有持續(xù)增長壓力的企業(yè)典型如視頻監(jiān)控平臺、智能交通、平安城市這類項(xiàng)目動輒上千路攝像頭每天產(chǎn)生幾十TB數(shù)據(jù)要求存儲系統(tǒng)至少能穩(wěn)定跑五年以上。第二類是需要海量存儲同時不能停機(jī)的關(guān)鍵業(yè)務(wù)比如醫(yī)療PACS影像、金融票據(jù)影像、政務(wù)電子檔案數(shù)據(jù)不能丟、訪問不能停容量要隨業(yè)務(wù)增長平滑擴(kuò)展。第三類是大數(shù)據(jù)與AI基礎(chǔ)平臺這類用戶要的是存儲池直接對接計算集群數(shù)據(jù)讀寫的吞吐要跟得上GPU集群的“胃口”同時成本和運(yùn)維復(fù)雜度要可控。如果你只是個人或小團(tuán)隊數(shù)據(jù)量在幾十TB以內(nèi)坦白說沒有必要上分布式存儲一臺NAS加兩塊大容量硬盤就夠了。但如果你已經(jīng)感覺到“數(shù)據(jù)堆不下了”“擴(kuò)容太痛苦了”“機(jī)房里的設(shè)備越來越多但存儲空間還是不夠”那就應(yīng)該認(rèn)真考慮分布式存儲方案了。2. 核心技術(shù)原理與數(shù)據(jù)可靠性機(jī)制2.1 數(shù)據(jù)是怎么“切”開存放的分布式存儲的第一個核心動作就是“切”。一個文件進(jìn)入系統(tǒng)后會被切成固定大小的數(shù)據(jù)塊散落到不同的存儲節(jié)點(diǎn)上。切塊的大小是個學(xué)問切得太小元數(shù)據(jù)量會爆炸找一塊數(shù)據(jù)要問很多次元數(shù)據(jù)服務(wù)切得太大數(shù)據(jù)分布不夠均勻某些節(jié)點(diǎn)容易過熱。我見過不少方案把條帶大小定在4MB到64MB之間實(shí)踐中4MB在混合負(fù)載下表現(xiàn)比較平衡但也要看具體的文件大小分布。切完之后每個數(shù)據(jù)塊還要經(jīng)過哈希算法確定它落在哪些節(jié)點(diǎn)上。這里有個關(guān)鍵點(diǎn)不是簡單地把塊N放到節(jié)點(diǎn)N上而是通過一致性哈希的機(jī)制讓數(shù)據(jù)分布與節(jié)點(diǎn)位置解耦。好處很明顯——集群中某個節(jié)點(diǎn)掛掉或被移除時只有該節(jié)點(diǎn)負(fù)責(zé)的數(shù)據(jù)塊需要重新定位其他大部分?jǐn)?shù)據(jù)不動。這就把故障恢復(fù)的影響范圍控制到了最小。關(guān)于副本存放位置稍有經(jīng)驗(yàn)的設(shè)計會要求副本跨機(jī)柜或跨電源域分布。我見過一個實(shí)際事故案例某客戶的副本策略是默認(rèn)的簡單散列結(jié)果恰好兩塊副本落在了同一臺物理服務(wù)器的兩塊不同硬盤上。硬盤故障時數(shù)據(jù)還在但服務(wù)器主板故障時兩塊副本同時丟失數(shù)據(jù)永久損壞。這類教訓(xùn)我在這篇博文后面的故障排查章節(jié)還會細(xì)講這里先提醒一句買存儲可靠性策略一定要手工確認(rèn)別用默認(rèn)值。2.2 副本與糾刪碼魚與熊掌怎么選數(shù)據(jù)可靠性最直接的手段是多副本。當(dāng)前主流方案里三副本是默認(rèn)配置意思是一個數(shù)據(jù)塊同時存在三份拷貝任意壞掉兩份數(shù)據(jù)都還在。三副本的優(yōu)點(diǎn)是邏輯簡單、恢復(fù)快、讀性能好但代價是硬盤利用率只有三分之一——你買了90TB的硬盤實(shí)際可用只有30TB這在PB級場景下成本壓力非常大。于是有了糾刪碼Erasure Coding。它的思路類似于數(shù)學(xué)上的校驗(yàn)方程把數(shù)據(jù)拆成K份再根據(jù)這K份算出M份校驗(yàn)數(shù)據(jù)總共KM份散落在不同節(jié)點(diǎn)上只要壞掉的數(shù)據(jù)不超過M份就能完整恢復(fù)原始數(shù)據(jù)。最常見的配置是42或82前者允許任意2個數(shù)據(jù)塊損壞利用率仍然有66.7%比三副本省一半以上的空間。但糾刪碼不是免費(fèi)的午餐。它在寫入時要做額外的編碼計算讀取時如果命中的副本不可用需要從多個分片中重組數(shù)據(jù)性能開銷明顯高于多副本。所以我給你的建議是熱數(shù)據(jù)、核心生產(chǎn)數(shù)據(jù)用三副本保證讀性能和數(shù)據(jù)安全溫冷數(shù)據(jù)、備份數(shù)據(jù)、歸檔數(shù)據(jù)用糾刪碼追求空間利用率。霄云碧海的存儲池設(shè)計里對不同數(shù)據(jù)可以設(shè)置不同的冗余策略這一點(diǎn)在同類產(chǎn)品中做得比較靈活實(shí)際交付時非常有用。2.3 一致性哈希與數(shù)據(jù)均衡的靈魂分布式存儲的“靈魂”是數(shù)據(jù)均衡。均衡得好集群里每個節(jié)點(diǎn)的負(fù)載差不多磁盤壽命穩(wěn)定熱點(diǎn)不會輕易出現(xiàn)均衡得不好哪怕整個集群平均利用率只有60%某些節(jié)點(diǎn)已經(jīng)跑滿性能就開始抖動。一致性哈希是解決這個問題的經(jīng)典方案它的核心邏輯是把整個哈??臻g想象成一個環(huán)每個節(jié)點(diǎn)在環(huán)上占據(jù)若干位置每個數(shù)據(jù)塊根據(jù)哈希值落在環(huán)上對應(yīng)的節(jié)點(diǎn)上。這個機(jī)制優(yōu)秀的地方在于節(jié)點(diǎn)增減時只有少部分?jǐn)?shù)據(jù)需要遷移不會像簡單取模那樣幾乎全部數(shù)據(jù)都要搬家。但光有基礎(chǔ)的一致性哈希還不夠?qū)嶋H存儲系統(tǒng)里還要配合“虛擬節(jié)點(diǎn)”機(jī)制。具體做法是每臺物理服務(wù)器在哈希環(huán)上不是只放一個點(diǎn)而是放幾百個虛擬節(jié)點(diǎn)讓數(shù)據(jù)分布更均勻。同時后臺還要有均衡任務(wù)持續(xù)掃描發(fā)現(xiàn)某些虛擬節(jié)點(diǎn)的數(shù)據(jù)量偏離平均值超過閾值就自動觸發(fā)數(shù)據(jù)遷移把熱點(diǎn)數(shù)據(jù)搬到空閑節(jié)點(diǎn)上。這是需要長期打磨的活不是上線配置一下就完事了。我負(fù)責(zé)過的一個項(xiàng)目里存儲上線三個月后我還專門統(tǒng)計過各節(jié)點(diǎn)的磁盤占用率最大偏差不到3%分布式設(shè)計在數(shù)據(jù)均衡上做得好的系統(tǒng)確實(shí)能讓你少操很多心。2.4 數(shù)據(jù)中心容錯從單節(jié)點(diǎn)故障到機(jī)房級故障數(shù)據(jù)可靠性不能只在單個節(jié)點(diǎn)層面考慮必須層層往上推。單盤故障是最常見的說白了就是硬盤的機(jī)械結(jié)構(gòu)或電子元件損壞。這個層級靠RAID或者分布式副本就能扛住。節(jié)點(diǎn)故障比如服務(wù)器主板燒了、電源壞了、系統(tǒng)盤掛了這時候靠跨節(jié)點(diǎn)的副本或糾刪碼塊來恢復(fù)。機(jī)柜故障相對少見但一旦發(fā)生就是災(zāi)難級的比如機(jī)柜斷電、交換機(jī)整柜掛掉。機(jī)柜級的容錯要求副本策略設(shè)置時考慮機(jī)柜維度確保同一份數(shù)據(jù)的多個副本不會落在同一個機(jī)柜里。真正高規(guī)格的場景還要考慮機(jī)房級容錯。兩地三中心是比較經(jīng)典的配置生產(chǎn)中心和同城災(zāi)備中心再加異地災(zāi)備中心。霄云碧海這類產(chǎn)品通常也支持跨站點(diǎn)部署兩個或多個站點(diǎn)間的數(shù)據(jù)保持同步復(fù)制某個站點(diǎn)整體不可用時業(yè)務(wù)可以通過另一個站點(diǎn)繼續(xù)運(yùn)行。我可以很負(fù)責(zé)任地告訴你很多團(tuán)隊在存儲選型時數(shù)據(jù)可靠性的討論止步于“三副本夠不夠”但我見過的重大數(shù)據(jù)事故里真正出問題的往往不是副本數(shù)量不夠而是副本擺放位置不對、恢復(fù)時間太長、或者跨站點(diǎn)容災(zāi)配置不當(dāng)??煽啃栽O(shè)計是一個完整的鏈路任何一個環(huán)節(jié)掉鏈子其他的配置都白搭。3. 產(chǎn)品核心功能拆解與關(guān)鍵參數(shù)解析3.1 存儲資源池從“物理硬盤”到“邏輯空間”對一個存儲系統(tǒng)來說最核心的操作入口是存儲池。傳統(tǒng)存儲里你需要手動規(guī)劃RAID組、手動分配LUN、手動掛載文件系統(tǒng)每一層都要精確配置出錯了還要手動調(diào)整。分布式存儲把這一套簡化成了“資源池”的概念你把這批節(jié)點(diǎn)的磁盤全部交給存儲系統(tǒng)它自動把分散的物理空間聚合成一個統(tǒng)一的大池子你再從這個池子里切出若干邏輯卷或共享目錄分配給不同的業(yè)務(wù)使用。這里有個很關(guān)鍵的參數(shù)條帶寬度。它是每個邏輯卷的數(shù)據(jù)塊分散到多少個節(jié)點(diǎn)上的度量。條帶寬度越大單個文件的并發(fā)讀寫能調(diào)用的節(jié)點(diǎn)越多大文件性能越好但相應(yīng)地小文件場景下元數(shù)據(jù)開銷會上升。霄云碧海的默認(rèn)設(shè)置在通用場景下表現(xiàn)均衡如果你的業(yè)務(wù)是典型的視頻文件寫入可以調(diào)高條帶寬度來換取更高的大文件順序?qū)懲掏?。存儲池的配額管理也是實(shí)際使用中的高頻功能。生產(chǎn)環(huán)境里不同部門、不同業(yè)務(wù)共享同一個存儲池配額可以在邏輯層面做好隔離防止某個業(yè)務(wù)“吃”掉整個集群的容量。3.2 多協(xié)議互通文件、塊、對象的統(tǒng)一存儲傳統(tǒng)的企業(yè)存儲環(huán)境里每種數(shù)據(jù)都有自己專門的設(shè)備和協(xié)議文件數(shù)據(jù)用NFS/CIFS的文件存儲數(shù)據(jù)庫數(shù)據(jù)用iSCSI/FC的塊存儲海量非結(jié)構(gòu)化數(shù)據(jù)可能再單獨(dú)上一套對象存儲。結(jié)果是每種業(yè)務(wù)各搞一套存儲物理設(shè)備林立運(yùn)維成本居高不下。霄云碧海這個產(chǎn)品的設(shè)計思路是“一池多協(xié)議”。同一個存儲池你可以同時掛載NFS/SMB共享給文件工作負(fù)載通過iSCSI提供塊設(shè)備給虛擬化和數(shù)據(jù)庫通過S3接口提供對象存儲給互聯(lián)網(wǎng)應(yīng)用和備份軟件。數(shù)據(jù)在底層是同一個池子里的數(shù)據(jù)只是對外暴露的訪問接口不同。這種設(shè)計帶來一個很實(shí)際的價值不同協(xié)議的數(shù)據(jù)之間可以互相流動。比如某應(yīng)用通過S3接口寫入的數(shù)據(jù)另一套業(yè)務(wù)可以通過NFS直接讀取備份軟件通過iSCSI把虛擬機(jī)磁盤鏡像備份到對象存儲區(qū)域。數(shù)據(jù)不需要在不同系統(tǒng)之間拷貝來拷貝去一份數(shù)據(jù)多種用途省下的存儲空間和管理精力非??捎^。3.3 智能QoS與數(shù)據(jù)分級在多業(yè)務(wù)間找平衡多業(yè)務(wù)共享一個存儲池最怕的是“一顆老鼠屎壞了一鍋湯”——某個業(yè)務(wù)突然發(fā)起大量并發(fā)寫帶寬被占滿其他業(yè)務(wù)的延遲瞬間飆升。這時候就需要QoS服務(wù)質(zhì)量控制來約束不同業(yè)務(wù)的資源占用。QoS的本質(zhì)是給每個業(yè)務(wù)限定流量上限和優(yōu)先級。比如視頻監(jiān)控業(yè)務(wù)可以設(shè)置寫入帶寬不超過500MB/s數(shù)據(jù)庫業(yè)務(wù)設(shè)置高優(yōu)先級確保延遲穩(wěn)定測試環(huán)境設(shè)置低優(yōu)先級高峰期主動讓路。這個功能在分布式存儲里很重要因?yàn)橛卸鄠€業(yè)務(wù)共享底層資源沒有任何保護(hù)機(jī)制的話熱點(diǎn)應(yīng)用一上來整個存儲集群都會受影響。數(shù)據(jù)分級也是實(shí)際部署中的剛需。全閃存的性能好但價格高SATA大容量盤性價比高但延遲不行。霄云碧海支持在一個集群里同時管理SSD、SAS、SATA不同類型的磁盤并通過自動分層策略將熱點(diǎn)數(shù)據(jù)自動遷移到SSD性能層冷數(shù)據(jù)自動沉降到大容量層。對用戶來說業(yè)務(wù)訪問的始終是同一個邏輯空間感受不到分層的存在但成本和性能的平衡天然達(dá)成了。3.4 快照、克隆與遠(yuǎn)程復(fù)制數(shù)據(jù)保護(hù)的完整閉環(huán)數(shù)據(jù)保護(hù)和數(shù)據(jù)備份不是一回事。備份是把數(shù)據(jù)復(fù)制一份放到另一個地方快照是給某一個時間點(diǎn)的數(shù)據(jù)做一份“瞬間凍結(jié)的視圖”它幾乎不占用額外空間創(chuàng)建速度極快。一個典型的應(yīng)用場景是每晚定時給數(shù)據(jù)庫卷做快照然后備份軟件基于這個快照執(zhí)行備份業(yè)務(wù)不用停備份也不會把生產(chǎn)卷的性能拖垮??寺∈强煺盏难由焖鼊?chuàng)建一個獨(dú)立的、可讀寫的邏輯卷副本創(chuàng)建時同樣幾乎不占空間只有在后續(xù)寫入新數(shù)據(jù)時才逐步分配空間。測試環(huán)境需要一份生產(chǎn)數(shù)據(jù)的“復(fù)制品”時克隆是最省空間的方案。遠(yuǎn)程復(fù)制用于跨站點(diǎn)容災(zāi)。同城災(zāi)備的場景里數(shù)據(jù)同步復(fù)制的延遲通常在毫秒級別跨地域容災(zāi)場景里延遲會高很多一般會選擇異步復(fù)制業(yè)務(wù)數(shù)據(jù)先寫入本地再由系統(tǒng)異步同步到遠(yuǎn)端。這里有個容易被忽略的坑異步復(fù)制的RPO恢復(fù)點(diǎn)目標(biāo)不是零意味著極端故障下會丟失最后幾秒到幾十秒的數(shù)據(jù)。業(yè)務(wù)對數(shù)據(jù)丟失的容忍度直接決定你該用同步還是異步。3.5 監(jiān)控與告警體系別等故障照亮你的臉存儲系統(tǒng)最容易出現(xiàn)的一個狀態(tài)是“看起來一切正常實(shí)際上某個磁盤已經(jīng)悄悄報錯很久了”。我見過太多案例系統(tǒng)運(yùn)行緩慢業(yè)務(wù)投訴運(yùn)維排查一周最后發(fā)現(xiàn)是某塊磁盤的壞道率持續(xù)上升存儲系統(tǒng)一直在嘗試數(shù)據(jù)重建性能被拖垮。好的存儲產(chǎn)品必須提供足夠細(xì)粒度的監(jiān)控指標(biāo)。節(jié)點(diǎn)CPU、內(nèi)存、網(wǎng)絡(luò)吞吐、磁盤IOPS、延遲、隊列深度、每塊磁盤的健康狀態(tài)都應(yīng)該有實(shí)時曲線。霄云碧海在交付時通常會在管理界面預(yù)置一套常用的監(jiān)控看板但我覺得真正專業(yè)的做法是根據(jù)自己的業(yè)務(wù)特點(diǎn)再定制幾塊看板高峰期看延遲趨勢業(yè)務(wù)發(fā)布期間關(guān)注IOPS變化定期查看磁盤健康狀態(tài)。告警閾值也要因地制宜比如常規(guī)環(huán)境里磁盤延遲超過20ms才告警但如果是全閃存環(huán)境這個閾值就應(yīng)該壓到5ms以下。4. 實(shí)操部署與配置指南4.1 部署前的硬件規(guī)劃與網(wǎng)絡(luò)設(shè)計部署分布式存儲之前硬件規(guī)劃是最不能省的一步。節(jié)點(diǎn)數(shù)量建議至少3臺起步這是數(shù)據(jù)可靠性的底線。3節(jié)點(diǎn)環(huán)境下即使采用三副本策略任意一臺節(jié)點(diǎn)故障另外兩臺還能保留完整的副本數(shù)據(jù)不會丟失。如果只有2節(jié)點(diǎn)無論怎么設(shè)計總有一類故障會導(dǎo)致數(shù)據(jù)不可用——而“集群過半可用”的選舉機(jī)制也會因?yàn)橹挥?個節(jié)點(diǎn)而變得非常脆弱。每臺節(jié)點(diǎn)建議配置2塊系統(tǒng)盤做RAID1用來安裝操作系統(tǒng)和存儲軟件數(shù)據(jù)盤根據(jù)容量需求配置。網(wǎng)絡(luò)方面生產(chǎn)環(huán)境強(qiáng)烈建議部署獨(dú)立的存儲網(wǎng)絡(luò)與業(yè)務(wù)網(wǎng)絡(luò)物理隔離。IP地址規(guī)劃要預(yù)留充足管理網(wǎng)、業(yè)務(wù)網(wǎng)、存儲內(nèi)網(wǎng)、集群通信網(wǎng)至少規(guī)劃4個網(wǎng)段。我見過一個真實(shí)案例某項(xiàng)目圖省事沒有隔離存儲網(wǎng)絡(luò)存儲內(nèi)網(wǎng)和辦公網(wǎng)混在一起結(jié)果辦公網(wǎng)內(nèi)一臺中了病毒的機(jī)器瘋狂發(fā)包把二層網(wǎng)絡(luò)打滿存儲集群內(nèi)部通信超時、節(jié)點(diǎn)被頻繁判定為故障整個存儲癱瘓了兩個小時。這類問題一旦發(fā)生排障成本極高。規(guī)劃階段多花一天工后期能少熬半個月的夜。4.2 存儲池創(chuàng)建與冗余策略選擇部署完成后第一件事是創(chuàng)建存儲池。這里涉及幾個關(guān)鍵參數(shù)池名稱建議帶上業(yè)務(wù)標(biāo)識方便后續(xù)管理。冗余策略要根據(jù)數(shù)據(jù)重要性和未來數(shù)據(jù)量來權(quán)衡核心數(shù)據(jù)庫、虛擬化平臺建議選擇三副本機(jī)制備份歸檔、日志類冷數(shù)據(jù)建議選擇糾刪碼機(jī)制進(jìn)行空間優(yōu)化。條帶寬度和熱備策略一般保持默認(rèn)即可但我會建議把自動數(shù)據(jù)重建的并發(fā)數(shù)調(diào)低一點(diǎn)尤其當(dāng)磁盤數(shù)量和業(yè)務(wù)負(fù)載都比較高時重建并發(fā)過高會搶占正常IO。存儲池創(chuàng)建時可以指定允許的節(jié)點(diǎn)范圍。比如把SSD節(jié)點(diǎn)單獨(dú)劃為高性能池大容量SATA節(jié)點(diǎn)劃為歸檔池兩者物理隔離避免性能互相影響。對象存儲桶、文件共享目錄、塊設(shè)備卷的創(chuàng)建都是在池的基礎(chǔ)上繼續(xù)細(xì)分每一步的命名和配額規(guī)劃建議在創(chuàng)建前就確定好。4.3 QoS與性能調(diào)優(yōu)的平衡策略QoS配置的核心是根據(jù)業(yè)務(wù)優(yōu)先級和負(fù)載畫像來確定參數(shù)。視頻監(jiān)控業(yè)務(wù)的特點(diǎn)是持續(xù)寫入、帶寬占用高、允許一定延遲典型配置可以設(shè)置帶寬上限在500MB/s左右避免它在高峰期搶占整個集群的寫入能力。數(shù)據(jù)庫業(yè)務(wù)的特點(diǎn)是IOPS要求高、延遲敏感配置時應(yīng)該把優(yōu)先級設(shè)為最高并限定并發(fā)隊列深度保證延遲穩(wěn)定。測試環(huán)境這類非關(guān)鍵業(yè)務(wù)設(shè)置較低的優(yōu)先級和帶寬上限即可。性能調(diào)優(yōu)方面網(wǎng)絡(luò)參數(shù)的調(diào)整影響最直接。存儲內(nèi)網(wǎng)建議開啟巨幀MTU 9000可以顯著降低大塊數(shù)據(jù)寫入時的CPU開銷。塊設(shè)備隊列深度默認(rèn)值為128在高并發(fā)場景下可以適當(dāng)調(diào)高到256甚至512但要注意觀察底層磁盤的延遲曲線不要盲目調(diào)高導(dǎo)致延遲飆升。文件寫入緩存建議根據(jù)業(yè)務(wù)類型開啟或關(guān)閉數(shù)據(jù)庫類業(yè)務(wù)通常建議關(guān)閉寫入緩存避免極端情況下的數(shù)據(jù)丟失視頻寫入這類順序?qū)憳I(yè)務(wù)則建議開啟寫入緩存性能提升非常明顯。4.4 上線驗(yàn)證清單系統(tǒng)性檢查與長期巡檢上線前的驗(yàn)證不能只是跑一遍性能測試就完事。我自己常用的驗(yàn)證清單包括節(jié)點(diǎn)故障模擬測試是必選項(xiàng)拔掉一臺節(jié)點(diǎn)的網(wǎng)線或直接斷電觀察集群是否按預(yù)期觸發(fā)數(shù)據(jù)重建業(yè)務(wù)讀寫是否中斷。磁盤故障測試是在拔掉一塊數(shù)據(jù)盤后查看數(shù)據(jù)是否自動從其他副本恢復(fù)以及告警是否及時觸發(fā)。性能基線測試建議工具組合使用順序?qū)?、隨機(jī)讀、混合讀寫都要覆蓋記錄下基線數(shù)據(jù)方便后續(xù)做對比。上線后的巡檢同樣重要“日看健康、周看容量、月看性能、季看報告”是我的個人習(xí)慣。每日檢查節(jié)點(diǎn)健康狀態(tài)、磁盤告警、網(wǎng)絡(luò)丟包每周查看容量增長趨勢估算可支撐天數(shù)每月對比性能基線確認(rèn)是否有明顯劣化每季度做一次整體狀態(tài)報告檢查是否有節(jié)點(diǎn)負(fù)載失衡、數(shù)據(jù)分布不均等問題。這個節(jié)奏不一定適合所有團(tuán)隊但“定期巡檢、數(shù)據(jù)留痕”這個思路本身建議每個存儲運(yùn)維團(tuán)隊都建立起來。5. 典型應(yīng)用場景與選型建議5.1 視頻監(jiān)控與智能安防海量小文件與大流量的雙重考驗(yàn)視頻監(jiān)控領(lǐng)域是分布式存儲最典型的落地場景之一。一個中等規(guī)模的智慧城市項(xiàng)目上千路高清攝像頭每路每小時產(chǎn)生大約4GB的視頻數(shù)據(jù)一天的增量就是幾十TB。更麻煩的是視頻文件不僅大還切得非常碎——以5分鐘為一個文件段的話一天產(chǎn)生幾十萬個文件一個月就是上千萬個。這種文件畫像對傳統(tǒng)存儲是災(zāi)難。大量小文件的元數(shù)據(jù)操作會讓傳統(tǒng)NAS的性能斷崖式下降單目錄下的文件數(shù)量過多也會讓傳統(tǒng)文件系統(tǒng)的inode耗盡。霄云碧海這種分布式存儲通過內(nèi)存索引合并、目錄分片等技術(shù)處理億級小文件場景要輕松得多。再加上糾刪碼帶來的空間優(yōu)勢同樣是100TB裸容量分布式方案可用的有效空間比傳統(tǒng)三副本方案多出一倍綜合成本優(yōu)勢非常明顯。5.2 虛擬化與私有云底座塊存儲的穩(wěn)定性挑戰(zhàn)虛擬化平臺的存儲需求核心是“穩(wěn)”。虛擬機(jī)磁盤文件是隨機(jī)讀寫密集的負(fù)載存儲延遲稍微波動業(yè)務(wù)系統(tǒng)就會卡頓。虛擬機(jī)的創(chuàng)建、克隆、遷移都要依賴存儲的快照和克隆能力沒有這些功能虛擬化運(yùn)維效率會大打折扣。分布式存儲作為虛擬化底座的價值在于它天然支持橫向擴(kuò)展虛擬機(jī)數(shù)量增加、存儲壓力增大時加節(jié)點(diǎn)就可以了不像傳統(tǒng)存儲那樣提前糾結(jié)容量規(guī)劃。iSCSI是最常見的接入方式配合快照功能實(shí)現(xiàn)虛擬機(jī)備份配合克隆功能實(shí)現(xiàn)測試環(huán)境的快速復(fù)制。如果你在部署私有云存儲層面的靈活性和彈性建議作為一個核心考察項(xiàng)來評估。5.3 大數(shù)據(jù)與AI訓(xùn)練吞吐量與穩(wěn)定性的極限拉扯AI訓(xùn)練場景對存儲有兩層要求第一層是海量數(shù)據(jù)集接入時的寫入吞吐動不動就是TB級數(shù)據(jù)灌入訓(xùn)練集群第二層是訓(xùn)練過程中頻繁讀取樣本數(shù)據(jù)時的IOPS和低延遲。訓(xùn)練任務(wù)跑起來之后存儲IO稍有波動GPU的利用率就掉下來訓(xùn)練時長被拉長平臺成本直接上升。霄云碧海在AI場景的適配主要靠三件事一是多協(xié)議互通同一個存儲池可以同時通過S3對象接口向大數(shù)據(jù)平臺供數(shù)、通過NFS向訓(xùn)練集群掛載數(shù)據(jù)集二是QoS保障訓(xùn)練任務(wù)的存儲吞吐可以被優(yōu)先保障三是與計算集群的協(xié)同規(guī)劃通過合理的條帶寬度配置讓訓(xùn)練數(shù)據(jù)分布到更多節(jié)點(diǎn)上提升并發(fā)讀取能力。5.4 數(shù)據(jù)歸檔與備份大容量與低TCO的綜合考量歸檔和備份場景的特點(diǎn)是訪問頻率低、數(shù)據(jù)總量大、增長速度快。傳統(tǒng)方案通常是用磁帶庫或物理硬盤冷備管理復(fù)雜、存取不便。分布式存儲在這個場景下的優(yōu)勢是容量彈性大、協(xié)議兼容好備份軟件可以通過S3接口直接把備份數(shù)據(jù)寫入對象存儲桶到期后自動分層到歸檔池整個過程全自動。如果以TCO總體擁有成本來衡量這個場景建議重點(diǎn)關(guān)注糾刪碼配比和硬件選型。大容量SATA盤配合82糾刪碼能實(shí)現(xiàn)非常可觀的空間利用率。數(shù)據(jù)分級功能把近期備份保留在高性能層、歷史備份沉降到歸檔層性能和成本的平衡能達(dá)到比較理想的狀態(tài)。5.5 場景選型對照哪種需求最適合上分布式存儲場景數(shù)據(jù)特征分布式存儲優(yōu)勢推薦配置視頻監(jiān)控流式寫入、億級小文件元數(shù)據(jù)處理能力強(qiáng)、糾刪碼省空間三副本或42糾刪碼開啟寫緩存虛擬化/私有云隨機(jī)讀寫、延遲敏感多節(jié)點(diǎn)并行IO、快照/克隆齊全三副本高優(yōu)先級QoS大數(shù)據(jù)/AI大文件吞吐、并發(fā)讀取高吞吐、多協(xié)議互通三副本調(diào)大條帶寬度歸檔/備份低頻訪問、海量數(shù)據(jù)靈活分層、S3兼容82糾刪碼自動分層6. 常見問題與故障排查實(shí)錄6.1 節(jié)點(diǎn)故障后數(shù)據(jù)重建慢業(yè)務(wù)被拖垮有次做POC測試模擬了一塊磁盤故障數(shù)據(jù)開始自動重建。結(jié)果發(fā)現(xiàn)重建過程占滿了幾乎所有磁盤IO業(yè)務(wù)讀寫延遲從3毫秒飆升到200毫秒以上。問題出在重建參數(shù)的默認(rèn)配置上——重建并發(fā)和帶寬限制設(shè)得太高沒有給業(yè)務(wù)IO留空間。解法很簡單把重建速度限制調(diào)低比如將重建帶寬設(shè)為總帶寬的20%到30%并設(shè)置重建任務(wù)只在業(yè)務(wù)低峰期加速執(zhí)行。磁盤數(shù)量比較多的集群可以設(shè)置“故障域內(nèi)并行重建”但如果是小規(guī)模集群還是建議保守一點(diǎn)犧牲一點(diǎn)重建速度保住業(yè)務(wù)平穩(wěn)。這個原則在分布式存儲的運(yùn)維里非常重要任何后臺任務(wù)都必須考慮對前臺業(yè)務(wù)的影響。6.2 同一塊數(shù)據(jù)的兩份副本落在同一臺機(jī)器上這是我在某個客戶的集群里發(fā)現(xiàn)的嚴(yán)重隱患。表面上看集群配置了3副本策略數(shù)據(jù)應(yīng)該相當(dāng)安全。但深度檢查數(shù)據(jù)分布后發(fā)現(xiàn)大約有5%的數(shù)據(jù)塊有三份副本中的至少兩份落在了同一個物理節(jié)點(diǎn)上。也就是說一旦這臺節(jié)點(diǎn)整體宕機(jī)這些數(shù)據(jù)塊會同時丟失兩份安全性完全依賴于剩余的那份。排查下來發(fā)現(xiàn)是初始化部署時節(jié)點(diǎn)尚未全部加入集群早期寫入的數(shù)據(jù)按照當(dāng)時的節(jié)點(diǎn)拓?fù)渥隽烁北痉植己笃诠?jié)點(diǎn)擴(kuò)容后后臺數(shù)據(jù)重建和遷移并沒有主動糾正歷史副本分布問題。這個案例給我們的教訓(xùn)是容量和健康度之外副本分布也是巡檢時的重要檢查項(xiàng)。建議每季度做一次副本分布分析確認(rèn)所有數(shù)據(jù)塊的副本都均勻分布在不同的故障域內(nèi)。6.3 數(shù)據(jù)不均衡導(dǎo)致熱點(diǎn)節(jié)點(diǎn)性能時好時壞某客戶反饋存儲性能不穩(wěn)定業(yè)務(wù)高峰期延遲時高時低。排查后發(fā)現(xiàn)負(fù)載集中在一臺節(jié)點(diǎn)上這臺節(jié)點(diǎn)的磁盤IOPS接近飽和其他節(jié)點(diǎn)的利用率還不到40%。原因是業(yè)務(wù)側(cè)創(chuàng)建了一個巨大的存儲池池內(nèi)只分配了一個文件共享目錄所有業(yè)務(wù)數(shù)據(jù)都往這個目錄里寫數(shù)據(jù)塊的分配集中在部分節(jié)點(diǎn)上。解決思路是拆池和分散目錄結(jié)構(gòu)。我把已有的共享目錄按業(yè)務(wù)類型拆分成多個目錄掛載點(diǎn)同時把不同業(yè)務(wù)的數(shù)據(jù)目錄分散到不同的頂層前綴下讓數(shù)據(jù)塊的哈希分布更均勻熱點(diǎn)逐步被打散。分布式存儲雖然號稱自動均衡但業(yè)務(wù)側(cè)的目錄組織方式、邏輯卷規(guī)劃方式對最終的數(shù)據(jù)分布影響巨大。合理規(guī)劃目錄層級和掛載點(diǎn)數(shù)量是做好分布式存儲日常運(yùn)維的重要環(huán)節(jié)。6.4 網(wǎng)絡(luò)抖動導(dǎo)致節(jié)點(diǎn)被誤判為故障存儲內(nèi)網(wǎng)發(fā)生一個短暫的廣播風(fēng)暴某個節(jié)點(diǎn)跟集群其他節(jié)點(diǎn)之間的通信斷開大約10秒鐘。結(jié)果這個節(jié)點(diǎn)被集群判定為心跳超時觸發(fā)了數(shù)據(jù)重建流程大量額外IO瞬間涌入集群造成嚴(yán)重的性能波動。這類問題在分布式系統(tǒng)里很常見網(wǎng)絡(luò)質(zhì)量不穩(wěn)定集群就會頻繁觸發(fā)故障檢測和數(shù)據(jù)重建而每次重建都是額外的負(fù)載可能讓集群進(jìn)入惡性循環(huán)——節(jié)點(diǎn)被迫下線重建引發(fā)性能下降性能下降導(dǎo)致更多節(jié)點(diǎn)心跳超時。根本解法是網(wǎng)絡(luò)層面保證質(zhì)量存儲內(nèi)網(wǎng)務(wù)必使用交換機(jī)獨(dú)立VLAN并關(guān)閉不必要的廣播協(xié)議集群層面的心跳超時時間和重試次數(shù)也可以適度調(diào)大提高對短暫網(wǎng)絡(luò)抖動的容忍度。6.5 容災(zāi)演練中發(fā)現(xiàn)“備份”其實(shí)沒有生效我參與過某項(xiàng)目的容災(zāi)演練原計劃是把生產(chǎn)數(shù)據(jù)從主站點(diǎn)切換到災(zāi)備站點(diǎn)。結(jié)果演練一開始就發(fā)現(xiàn)問題災(zāi)備站點(diǎn)的數(shù)據(jù)落后主站點(diǎn)超過四個小時而且部分目錄根本沒有同步過去。排查發(fā)現(xiàn)遠(yuǎn)程復(fù)制策略只配置在了少數(shù)幾個核心卷上其他卷的復(fù)制策略要么沒配置要么配置后一直沒有觸發(fā)過完整同步。這類問題最好的解決方式是容災(zāi)配置完成后做一次全量校驗(yàn)確認(rèn)所有需要保護(hù)的數(shù)據(jù)都納入了復(fù)制策略每個月做一次增量校驗(yàn)確認(rèn)復(fù)制鏈路的延遲在可接受范圍內(nèi)。但最有效的還是每年至少做一次正式的容災(zāi)演練演練過程中才能真正發(fā)現(xiàn)配置是否生效、業(yè)務(wù)流程是否依賴了未被保護(hù)的數(shù)據(jù)路徑。7. 從TCO角度看分布式存儲是否值得投采購成本只是存儲總成本的一部分甚至不是最大的一部分。一個存儲系統(tǒng)五年內(nèi)的總擁有成本基本由采購成本、機(jī)房成本、運(yùn)維成本、業(yè)務(wù)中斷成本和數(shù)據(jù)丟失風(fēng)險五個部分組成。分布式存儲的優(yōu)勢在采購成本之外非常明顯機(jī)房成本方面同樣的有效容量分布式存儲加上糾刪碼之后需要的物理機(jī)架空間和功耗通常只有傳統(tǒng)三副本方案的三分之二。運(yùn)維成本方面分布式存儲的管理界面通??梢越y(tǒng)一管理幾百個節(jié)點(diǎn)相比管理同等容量的多套傳統(tǒng)存儲設(shè)備人力投入的差距是數(shù)量級的。業(yè)務(wù)中斷成本方面在線擴(kuò)容、節(jié)點(diǎn)替換不影響業(yè)務(wù)的能力在7×24小時運(yùn)行的環(huán)境里價值巨大。但分布式存儲也不是萬能解藥。小規(guī)模場景、超低延遲需求單次IO低于100微秒、強(qiáng)一致性要求極高的核心交易系統(tǒng)仍然需要認(rèn)真評估??傮w來說如果你的數(shù)據(jù)量在50TB以上且每年有30%以上的增長打算改造或新建私有云或者正在為某一個數(shù)據(jù)大類的存儲方案發(fā)愁我建議你把分布式存儲作為重點(diǎn)候選之一。回到“霄云碧?!边@個產(chǎn)品本身我有個直觀感受它能在這個競爭激烈的存儲市場站住腳靠的不是某一個炫技的功能而是把數(shù)據(jù)可靠、容量可擴(kuò)展、多業(yè)務(wù)共享、運(yùn)維簡單這幾件“基本功”都做得比較扎實(shí)。名字里說的“海納數(shù)據(jù)釋放價值”在真正生產(chǎn)環(huán)境中其實(shí)是靠每一個細(xì)節(jié)打磨出來的。別管名字多響亮到了機(jī)房最終看的還是那塊壞了盤能不能自動補(bǔ)上、業(yè)務(wù)高峰時延遲穩(wěn)不穩(wěn)定、五年后數(shù)據(jù)還在不在。最后分享一個小經(jīng)驗(yàn)評估任何存儲產(chǎn)品別只看廠商提供的性能測試報告一定要自己在真實(shí)業(yè)務(wù)環(huán)境里做POC把你們最具代表性的負(fù)載跑上去把節(jié)點(diǎn)拔了測試故障恢復(fù)把容量寫到40%以上再看性能表現(xiàn)。分布式存儲最大的特點(diǎn)是“分布式”——不同產(chǎn)品的分區(qū)、均衡、故障處理機(jī)制各不相同紙上談兵完全看不出來只有真實(shí)環(huán)境的測試數(shù)據(jù)才靠譜。這也是我作為長期跟存儲打交道的人能給同行最實(shí)在的一條經(jīng)驗(yàn)。