汪秀兵

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