汪秀兵
摘要:隨著大數(shù)據(jù)、云計算、物聯(lián)網(wǎng)技術(shù)以及短視頻直播技術(shù)的迅速發(fā)展,傳統(tǒng)的集中式存儲系統(tǒng)存在數(shù)據(jù)規(guī)模有限、存儲和處理能力瓶頸、單點(diǎn)故障等問題,已經(jīng)難以滿足現(xiàn)階段的業(yè)務(wù)需求。基于此,本文從非結(jié)構(gòu)化數(shù)據(jù)增長、容器化技術(shù)發(fā)展、異地多活災(zāi)備等業(yè)務(wù)需求對存儲技術(shù)的新要求進(jìn)行分析,總結(jié)了自研存儲待解決的三個問題,即技術(shù)選型、技術(shù)路線、架構(gòu)設(shè)計,探究了自研存儲部署架構(gòu)、多集群管理、小文件合并等關(guān)鍵技術(shù)問題,并提出相應(yīng)的解決思路。
關(guān)鍵詞:分布式存儲;Ceph;高可用;高性能
一、業(yè)務(wù)需求對存儲技術(shù)的新要求
(一)非結(jié)構(gòu)化數(shù)據(jù)高速增長及對象存儲的興起
隨著大數(shù)據(jù)、云計算和物聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,手機(jī)短視頻、基于攝像頭的視頻監(jiān)控業(yè)務(wù)也隨之迅猛發(fā)展,帶來流量爆炸式增長,企業(yè)也面臨著加密越來越多的大規(guī)模、非結(jié)構(gòu)化的數(shù)據(jù)存儲、敏感信息和隱私數(shù)據(jù)以及AI識別等處理需求。由于傳統(tǒng)的集中式存儲系統(tǒng)存在數(shù)據(jù)規(guī)模有限、存儲和處理能力瓶頸、單點(diǎn)故障等問題,已經(jīng)難以滿足現(xiàn)階段的業(yè)務(wù)需求。為了更好地滿足大規(guī)模數(shù)據(jù)存儲和處理的需求,從成本考慮,分布式存儲系統(tǒng)的軟硬件投資成本相比公有云具有明顯優(yōu)勢;從國產(chǎn)化考慮,分布式存儲系統(tǒng)自主可控,適配龍芯CPU、麒麟V10和統(tǒng)信UOS操作系統(tǒng),能夠根據(jù)業(yè)務(wù)的個性化需求定制需求支撐。分布式存儲系統(tǒng)將數(shù)據(jù)分散存儲在多個節(jié)點(diǎn)上,通過網(wǎng)絡(luò)進(jìn)行通信和協(xié)作,實(shí)現(xiàn)高可用性、高擴(kuò)展性和高性能的存儲和處理。目前,對自研分布式存儲系統(tǒng)的要求進(jìn)一步提高,應(yīng)當(dāng)具備數(shù)據(jù)迅速增長、多樣化存儲類型支持、自主可控及成本效益考量等方面的能力,并能夠根據(jù)具體需求進(jìn)行設(shè)計和優(yōu)化,以滿足企業(yè)或組織特定的數(shù)據(jù)存儲和處理需求。
(二)存儲虛擬化和容器化的發(fā)展
存儲虛擬化技術(shù)和容器化技術(shù)的發(fā)展使得分布式存儲系統(tǒng)能夠更高效地在虛擬化環(huán)境或容器化環(huán)境中部署和管理。容器化有兩個重點(diǎn),一是控制平面,能夠調(diào)度服務(wù)器資源來運(yùn)行企業(yè)不同類型的應(yīng)用;二是數(shù)據(jù)平臺,無狀態(tài)應(yīng)用的數(shù)據(jù)要想落到統(tǒng)一存儲上,開源Ceph提供的塊存儲是很好的解決方案,為企業(yè)提供了低成本、高可用性和可擴(kuò)展性,并已經(jīng)在業(yè)界取得了廣泛應(yīng)用。
(三)異地多活災(zāi)備和數(shù)據(jù)復(fù)制新要求
隨著企業(yè)全球化業(yè)務(wù)的增長,異地多活災(zāi)備和數(shù)據(jù)復(fù)制成為迫切需求。分布式存儲系統(tǒng)能夠跨多個地理位置復(fù)制數(shù)據(jù),以增加數(shù)據(jù)的可用性和容災(zāi)能力。對于異地多活,集群在不同的地理位置部署多個存儲集群,通過復(fù)制數(shù)據(jù)和具有自動故障轉(zhuǎn)移功能的Monitor來實(shí)現(xiàn)數(shù)據(jù)的跨地理位置訪問與同步,即使一個地點(diǎn)的存儲集群發(fā)生故障,其他地點(diǎn)的集群仍然可以提供服務(wù)。此外,集群需要提供靈活的數(shù)據(jù)遷移功能,能夠在存儲集群中的不同存儲池或不同對象存儲設(shè)備之間進(jìn)行數(shù)據(jù)復(fù)制和搬遷。
二、自研存儲需要解決的問題
(一)自研存儲技術(shù)選型
分布式存儲主要有兩種方法一是開源路線,二是自研路線。國內(nèi)分布式存儲SDS產(chǎn)品以開源路線為主,Ceph占絕對多數(shù),其他的有Gluster和BeeGFS。隨著大文件、小文件、視頻、文本等不同場景的代碼沉淀逐漸增加,自研程度持續(xù)提升,以滿足自主可控的訴求。巨頭企業(yè)華為、浪潮、新華三、曙光參考Ceph架構(gòu)以及初創(chuàng)企業(yè)星辰天合、杉巖SDS系列產(chǎn)品均基于開源Ceph的二次開發(fā)。
(二)自研存儲技術(shù)路線
開源Ceph是一個高性能、可靠性、可擴(kuò)展性、統(tǒng)一的、分布式文件系統(tǒng),能夠提供對象存儲、塊存儲和文件存儲。因此提出基于開源Ceph自研存儲“三步走”路線如下:
(1)掌握開源系統(tǒng)實(shí)現(xiàn)系統(tǒng)穩(wěn)定運(yùn)行
研發(fā)數(shù)據(jù)模塊,實(shí)現(xiàn)集群中數(shù)據(jù)復(fù)制、恢復(fù)、回填、再均衡;研發(fā)元數(shù)據(jù)模塊,實(shí)現(xiàn)集群狀態(tài)維護(hù)、存儲位置映射、集群數(shù)據(jù)一致性;研發(fā)高速存儲緩存模塊,實(shí)現(xiàn)數(shù)據(jù)高速讀寫;研發(fā)面向客戶端的開放API及SDK。
(2)集群高性能/高可用深度改造
研發(fā)軟硬件使用情況、帶寬、網(wǎng)絡(luò)質(zhì)量、存儲使用量等的多維度數(shù)據(jù)采集子系統(tǒng);根據(jù)業(yè)務(wù)場景配置、監(jiān)控數(shù)據(jù)、調(diào)度算法,研發(fā)統(tǒng)一智能調(diào)度子系統(tǒng);研發(fā)性能、容量趨勢的多維度監(jiān)控模塊、短信、郵件、企業(yè)微信告警通知模塊、日志統(tǒng)一管理模塊。
(3)多應(yīng)用場景支撐
研發(fā)豐富的API,支持不同場景下數(shù)據(jù)存儲的管理和分析要求;研發(fā)數(shù)據(jù)分級存儲,基于策略控制實(shí)現(xiàn)冷熱數(shù)據(jù)分介質(zhì)存儲;研發(fā)對象網(wǎng)關(guān)負(fù)載均衡功能,提供輪詢、權(quán)重等多種負(fù)載均衡策略。
(三)自研存儲架構(gòu)設(shè)計
為了實(shí)現(xiàn)分布式存儲自主可控,應(yīng)當(dāng)避免采購的存儲服務(wù)源碼少或不全。廠商自研產(chǎn)品存在知識產(chǎn)權(quán)風(fēng)險,針對云盤用戶小文件占比高,攝像頭音視頻數(shù)據(jù)量大,但是CDN大文件熱數(shù)據(jù)分發(fā)等不同類型的需求能按需定制,并支持高性能需求,如百億級海量文件存儲、SSD加速、低成本存儲歸檔、異步復(fù)制容災(zāi)、秒級快照、數(shù)據(jù)安全等。本文研究內(nèi)容如下:
(1)存儲引擎子系統(tǒng)
該系統(tǒng)由數(shù)據(jù)存儲、元數(shù)據(jù)管理、API&SDK幾部分組成,核心目標(biāo)是實(shí)現(xiàn)分布式、數(shù)據(jù)可靠性保護(hù)(副本或者糾刪碼)、分布式一致性和故障檢測與恢復(fù),以此為上層提供統(tǒng)一高可靠的存儲引擎。
(2)數(shù)據(jù)采集子系統(tǒng)研究
收集研發(fā)軟硬件使用情況、帶寬、網(wǎng)絡(luò)質(zhì)量、存儲使用量等指標(biāo)數(shù)據(jù),輔助用戶快速直觀地了解集群、節(jié)點(diǎn)池、硬盤池、Pool信息、存儲卷以及主機(jī)和硬盤的運(yùn)行狀態(tài),以此為智能調(diào)度提供決策數(shù)據(jù)來源。
(3)智能調(diào)度子系統(tǒng)
根據(jù)業(yè)務(wù)場景配置、監(jiān)控數(shù)據(jù)、調(diào)度算法,研發(fā)統(tǒng)一智能調(diào)度子系統(tǒng),對分布式核心存儲集群進(jìn)行實(shí)時監(jiān)控,通過靈活配置約束條件以及大規(guī)模計算的算法優(yōu)勢,為不同業(yè)務(wù)場景提供高效的智能調(diào)度服務(wù)。
(4)運(yùn)維管理子系統(tǒng)
為了使得硬件設(shè)備、網(wǎng)絡(luò)資產(chǎn)、存儲服務(wù)在成本、穩(wěn)定性和運(yùn)行效率上達(dá)成理想狀態(tài),建立存儲運(yùn)維管理子系統(tǒng),包括設(shè)備管理,網(wǎng)絡(luò)管理、智能巡檢和事件管理,讓整體軟硬件系統(tǒng)實(shí)現(xiàn)全生命周期安全可靠、穩(wěn)定高效地運(yùn)行。
(5)集群協(xié)同子系統(tǒng)
研發(fā)數(shù)據(jù)遷移工具,實(shí)現(xiàn)第三方云存儲、集群間等各類數(shù)據(jù)在線遷移。
(6)存儲管理子系統(tǒng)
建設(shè)統(tǒng)一的存儲管理門戶,面向運(yùn)維、運(yùn)營等人員,提供軟硬件資源的在線管理。資源申請的多節(jié)點(diǎn)審批、在線擴(kuò)縮容、自動化部署,以實(shí)現(xiàn)多集群的獨(dú)立部署、門戶統(tǒng)一納管。
三、自研存儲關(guān)鍵技術(shù)研究
(一)軟硬件網(wǎng)絡(luò)部署架構(gòu)分析
1.存儲節(jié)點(diǎn)架構(gòu)及介質(zhì)選型
硬盤介質(zhì)通常有HDD、SATA SSD和nvme SSD,SATA SSD的讀寫速度比HDD快,而NVMe的讀寫速度又比SATA SSD快,SATA SSD比普通HDD快5倍,其成本是HDD的1.5倍,不同類型的設(shè)備性能與成本不同,通常有以下4種模式可供選擇。
(1)分層存儲:緩存節(jié)點(diǎn)+存儲節(jié)點(diǎn)
通過cache tier技術(shù)將ssd設(shè)備編排在一起,承接用戶的讀寫請求,先寫緩存,達(dá)到緩存閾值后,再轉(zhuǎn)存到hdd設(shè)備中去。
(2)主副本分優(yōu)先級:主本在SSD,其余副本在HDD
通過osd primary-affinity特性。通過降低Ceph OSD的主要親和力值,實(shí)現(xiàn)控制SSD設(shè)備為主OSD、HDD設(shè)備為Replica OSD,以此實(shí)現(xiàn)讀寫數(shù)據(jù)流程的轉(zhuǎn)變。
(3)存儲池分優(yōu)先級
當(dāng)同一個集群需要應(yīng)對不同的需求時,通常對存儲池進(jìn)行分級,SSD池和HDD池在RGW中;Index池存儲的元數(shù)據(jù)對讀寫速度要求高,可以使用SSD池;Data池是存客戶端的數(shù)據(jù),可以使用HDD池。
(4)OSD組件分優(yōu)先級
OSD分為WAL、DB、BLOCK三個部分,其中WAL存讀寫過程的日志,DB存OSD的Omap等數(shù)據(jù),BLOCK存實(shí)際數(shù)據(jù)。WAL、DB的速度對于OSD的性能影響至關(guān)重要,所以通常使用SSD設(shè)備,以提高讀寫能力。
在集群建設(shè)規(guī)劃時,存儲節(jié)點(diǎn)架構(gòu)應(yīng)當(dāng)根據(jù)不同需求分為三種場景,即成本優(yōu)先、吞吐量優(yōu)先、IOPS優(yōu)先,再對照四種模式進(jìn)行組合,調(diào)整相應(yīng)的OSD硬盤介質(zhì)、緩存節(jié)點(diǎn)以及存儲節(jié)點(diǎn)的配置比例。
2.存儲集群網(wǎng)絡(luò)設(shè)備選型
在Ceph存儲的設(shè)備選型方面,應(yīng)該根據(jù)實(shí)際業(yè)務(wù)需求和數(shù)據(jù)量來選擇合適的網(wǎng)卡和交換機(jī),以確保數(shù)據(jù)的穩(wěn)定性、可靠性和性能。同時,還應(yīng)該注意網(wǎng)絡(luò)安全和管理方面的問題,采取相應(yīng)的措施以確保網(wǎng)絡(luò)安全可靠。以下是關(guān)于業(yè)務(wù)網(wǎng)絡(luò)、存儲網(wǎng)絡(luò)和管理網(wǎng)絡(luò)的說明。
(1)業(yè)務(wù)網(wǎng)絡(luò)。對于業(yè)務(wù)網(wǎng)絡(luò),生產(chǎn)環(huán)境建議選擇2個萬兆網(wǎng)卡,用于連接前端和后端的集群網(wǎng)絡(luò)。使用萬兆網(wǎng)卡可以確保足夠的帶寬和低延遲,以支持高并發(fā)訪問和數(shù)據(jù)傳輸。如果需要支持更大的數(shù)據(jù)流量或者需要更高的性能,則可以考慮使用25G萬兆網(wǎng)卡。
(2)存儲網(wǎng)絡(luò)。存儲網(wǎng)絡(luò)建議使用獨(dú)立的網(wǎng)卡和交換機(jī)來連接Ceph集群和服務(wù)器之間的數(shù)據(jù)傳輸,以避免與其他網(wǎng)絡(luò)流量的競爭,并確保數(shù)據(jù)的穩(wěn)定性和可靠性。如果需要支持更大的數(shù)據(jù)流量或者需要更高的性能,可以考慮使用更高級別的交換機(jī)和網(wǎng)卡,或者使用分布式存儲系統(tǒng)來擴(kuò)展Ceph集群的容量和性能。
(3)管理網(wǎng)絡(luò)。對于管理網(wǎng)絡(luò),建議使用獨(dú)立的網(wǎng)卡和交換機(jī)來連接Ceph集群和服務(wù)器之間的管理流量,不僅可以確保Ceph集群和服務(wù)器之間的通信安全可靠,還能夠避免與其他網(wǎng)絡(luò)流量的競爭。此外,為了方便管理和監(jiān)控Ceph集群,可以使用開源工具,如Ansible、SaltStack等來自動化管理配置和部署Ceph集群。
(二)多集群存儲管理及監(jiān)控告警設(shè)計
通過設(shè)計一個集中管理和監(jiān)控多個存儲集群的系統(tǒng),管理員可以更好地管理存儲環(huán)境,從而提高存儲系統(tǒng)的可靠性、性能和效率。多集群存儲管理及監(jiān)控告警系統(tǒng)的設(shè)計需要結(jié)合多集群管理、存儲監(jiān)控、告警管理、可視化界面和自動化運(yùn)維等方面,以滿足管理員對存儲集群的管理和監(jiān)控需求。
1.多集群管理
建立一個集中的管理控制平臺,該平臺可以管理和監(jiān)控多個存儲集群,并提供集群的注冊、配置、擴(kuò)展和刪除等功能,使得集群管理變得更加便捷和靈活。
2.存儲監(jiān)控
為每個集群配置監(jiān)控代理,用于定期收集和報告集群的存儲指標(biāo),如可用空間、IOPS、吞吐量等。監(jiān)控代理可以將監(jiān)控數(shù)據(jù)發(fā)送到存儲監(jiān)控系統(tǒng)。存儲監(jiān)控系統(tǒng)則可以實(shí)時監(jiān)控存儲集群的狀態(tài),分析存儲的性能和健康狀況,并提供儀表盤和報告。
3.告警管理
存儲監(jiān)控系統(tǒng)應(yīng)該提供靈活的告警規(guī)則配置和管理功能,管理人員可以設(shè)定閾值,當(dāng)存儲集群的某個指標(biāo)超過或低于設(shè)定的閾值時,系統(tǒng)會觸發(fā)告警。告警可以通過郵件、短信或即時通知等方式發(fā)送給管理員,以便及時采取措施解決問題。
4.可視化界面
為了方便管理員查看和操作,技術(shù)人員可以設(shè)計一個直觀的圖形界面,顯示存儲集群的拓?fù)浣Y(jié)構(gòu)和詳細(xì)信息,以便管理員可以通過界面來查看存儲集群的健康狀況、性能指標(biāo)和告警信息。此外,界面還可以提供存儲資源的使用情況和預(yù)測,幫助管理員進(jìn)行容量規(guī)劃和優(yōu)化。
5.自動化運(yùn)維
在設(shè)計系統(tǒng)時,技術(shù)人員可以考慮引入自動化運(yùn)維功能,如自動擴(kuò)展、負(fù)載均衡和故障轉(zhuǎn)移等,以此最大程度地減少管理員的手動操作,提高存儲管理的效率和穩(wěn)定性。
(三)基于元數(shù)據(jù)的小文件合并讀寫分析
通過基于元數(shù)據(jù)的小文件合并讀寫,可以將多個小文件合并為一個更大的文件,以此減少磁盤索引的開銷,并且可以對這個大文件進(jìn)行更高效地讀寫操作。這種技術(shù)可以通過以下步驟來實(shí)現(xiàn):
1.文件合并
將多個小文件按照一定的規(guī)則(例如文件名的前綴、后綴或文件夾結(jié)構(gòu)等)進(jìn)行合并,生成一個較大的文件。合并后的文件可以是一個普通的二進(jìn)制文件,也可以是一種特定的格式,例如壓縮文件或歸檔文件。
2.元數(shù)據(jù)管理
為了能夠正確地讀取和修改合并后的文件,需要維護(hù)一些額外的元數(shù)據(jù)信息。元數(shù)據(jù)包括記錄文件名、起始位置以及每個小文件的偏移量和長度等信息,可以存儲在文件的頭部、文件路徑、獨(dú)立KV數(shù)據(jù)庫,并在讀寫操作時被使用。
3.讀寫操作
當(dāng)需要讀取或修改某個小文件時,可以通過查找元數(shù)據(jù)信息,確定文件在合并后的文件中的位置。讀取操作可以根據(jù)元數(shù)據(jù)信息來定位文件的起始位置,并讀取相應(yīng)的數(shù)據(jù)。修改操作則可以通過讀取相應(yīng)的數(shù)據(jù),并更新后再寫回合并后的文件。使用基于元數(shù)據(jù)的小文件合并讀寫可以有效地減少小文件帶來的存儲和管理開銷,并提高存儲效率和讀寫性能。
四、結(jié)束語
本文從業(yè)務(wù)需求、技術(shù)選型、技術(shù)架構(gòu)、關(guān)鍵技術(shù)等四個方面進(jìn)行闡述,提出企業(yè)自研存儲“三步走”路線,首先,基于開源Ceph搭建的分布式存儲集群通過對部署架構(gòu)設(shè)計、參數(shù)調(diào)優(yōu),使得企業(yè)快速構(gòu)建實(shí)現(xiàn)數(shù)據(jù)在不同的機(jī)架、主機(jī)、磁盤的數(shù)據(jù)均衡分布存儲,同時兼顧多級故障域及海量數(shù)據(jù)的均衡分布的分布式存儲能力;其次,通過使用多集群管理、監(jiān)控告警、自動化運(yùn)維、多副本以及EC等特性,實(shí)現(xiàn)集群的高可用性以及數(shù)據(jù)的高可靠性,兼顧低成本與高性能,并實(shí)現(xiàn)數(shù)據(jù)容災(zāi)能力;最后,針對多種場景需求,例如小文件IOPS要求高進(jìn)行元數(shù)據(jù)改造、大文件帶寬要求高進(jìn)行增加op線程、EC模式等方式優(yōu)化,實(shí)現(xiàn)開源Ceph存儲的集群穩(wěn)定可控、代碼可改以及功能可擴(kuò)展。