歡迎user
數字經濟已成為推動經濟高質量發展的新引擎,並引領經濟社會的巨大變革。隨著信息技術的飛躍發展和經濟社會數字化轉型步伐的加快,全球數據量呈現爆發式增長,根據IDC預測,到2025年全球數據規模將突破175ZB。其中,我國將增至48.6ZB,占全球數據規模的27.8%。
數據資源是數字經濟發展的根基,而在這些數據中,超過80%的數據都將是處理難度較大的圖像、音頻、視頻等非結構化數據。
全球非結構化數據容量的60%將部署為分布式存儲,分布式存儲作為數據的載體在挖掘數據資產價值、助力產業數字化轉型中發揮著重大作用。
分布式存儲的興起與互聯網的發展密不可分,互聯網應用越來越豐富,覆蓋領域和場景越來越多,疊加龐大的用戶基數,產生的海量非結構化數據給存儲係統帶來了巨大的壓力,分布式存儲應運而生。
分布式存儲的概念
分布式存儲基於標準硬件和分布式架構,將數據分散存儲到多個存儲服務器上,通過網絡將分散存儲的資源構成一個虛擬的資源池,進行統一管理並向外提供服務。
分布式存儲包含了各種分布式文件係統、分布式塊存儲、分布式對象存儲、分布式數據庫和分布式緩存等。其特點是基於軟件實現,具有成本低、擴展性強、高性能、高可靠、生態開放等優點。
分布式存儲可以提供EB級以上的存儲空間,廣泛應用於bobty下载软件 、大數據分析、AI、HPC、工業互聯網等場景,成為當前處理海量、多源和異構數據最理想的架構。未來,對分布式存儲的應用仍將保持高速增長趨勢。
分布式存儲的原理
主流的分布式存儲技術有Ceph、GlusterFS、HDFS、GPFS、Lustre、Swift、VSAN等,每種都有其各自的特點,提供不同類型的存儲服務以及適合的使用場景。從分布式架構上來看,分布式存儲主要有中間控製節點架構和無中心架構兩大類。
Ceph是當前非常流行和出色的分布式存儲之一,被開源社區大量采用,部署在各類雲環境中,市場上也推出了很多基於Ceph的商業化產品,足見其受歡迎的程度。我們以典型的無中心架構Ceph為例來介紹一下分布式存儲的基本原理。
Ceph支持對象存儲、塊存儲、文件存儲三種存儲服務,所有的存儲功能都是基於底層RADOS實現的,並為上層應用提供Librados API來調用RADOS完成各自操作。RGW和RBD分別是基於librados的基礎上提供對象存儲和塊存儲的上層抽象接口,以便於應用的開發和使用。CephFS則通過POSIX接口對外提供文件係統服務,通過內核模塊與RADOS直接進行交互。
Ceph存儲集群係統主要由OSD(Object Storage Daemon)、Monitor、Manager、MDS(Metadata Server)組件構成。
OSD負責集群中的數據讀寫、複製、恢複、再平衡,與其它OSD進行心跳檢測並向Monitor和Manager上報。Monitor負責監控集群的狀態和維護集群映射Cluster map(包括Monitor map、OSD map、PG map、MDS map,CRUSH map)的主副本並保證其一致性(使用Paxos算法)。Manager負責對存儲利用率、性能指標和係統負載等運行狀態信息進行跟蹤。MDS負責為Ceph文件係統提供元數據的查詢代理和緩存功能,隻有在使用CephFS時才需要配置MDS。
這些組件可根據性能、可靠性等方麵的要求進行靈活部署,既可以部署在相同的物理服務器上,也可以部署在不同的物理服務器上。
Client首先連接到Monitor獲取Cluster map,通過CRUSH算法獲得集群中主OSD的位置並直接與其進行通信,因此並不需要集中式的主節點來計算和尋址。CRUSH算法也是Ceph的核心特性之一,使數據的讀寫負載能夠均勻、受控的分布到各個節點和磁盤上。
接下來我們看下Ceph數據的存儲過程:
首先,數據無論從哪一種接口寫入,通過Ceph存儲的數據都會被切分成對象(Objects),Objects Size可調(默認4M),每個對象都會有一個唯一的Object id即OID來標識,OID由ino(File ID)和ono(File分片編號)來組成。
其次,為了更均勻、穩定的分配數據和提高尋址定位數據的效率,將每個對象映射到一個歸置組(PG)中,方法是使用一個靜態Hash函數對OID做Hash,然後再與PG的數量取模得到所映射的PGID。
最後,根據設置的副本數量對PG進行複製,通過CRUSH算法(因子根據Cluster map和策略配置規則)最終受控地存儲到不同的OSD節點裏(第一個OSD節點為主節點,其餘為從節點),使得OSD可以分布在不同的主機、機架或機房等。
多個副本需要實現數據的一致性,我們以三副本為例來介紹其基本原理,如下:
獲取到OSD後,Client在寫入數據時,先向Object對應的Primary OSD發起寫入操作,Primary OSD收到寫請求後,再分別向Secondary OSD和Tertiary OSD發起寫入操作,當所有OSD節點都完成寫入操作後,Primary OSD向Client確認Object寫入操作完成,保證了數據的一致性。在讀取數據時,Client也隻會向主OSD節點發送讀請求。
分布式存儲就是采用這種多副本或者糾刪碼的冗餘方式,來最大限度的保證數據存儲的高可用性。
在集群係統節點擴容或失效時,Ceph能自動實現數據的再平衡並盡可能少的遷移數據。
如上圖,我們向集群中添加OSD時,集群映射關係(Cluster map)也會同時更新,大部分數據保留在原位置,隻會有小部分數據發生遷移(遷移數據量是新OSD與集群總量的比值)達到數據的再平衡。
分布式存儲節點的閃存加速與優化
采用分布式的目的在於追求高性能、高擴展和高可用。除了係統架構外,存儲集群的整體性能還取決於其它幾個因素,其中一個重要因素就是存儲節點本身的能力。
為了提高單節點的性能,存儲節點普遍采用SSD+HDD混合部署,通過各種SSD緩存加速技術去提升節點的讀寫性能,例如:
元數據加速,將元數據和寫日誌(journal)與文件數據分離,元數據和寫日誌部署到獨立的SSD上,減少了讀寫元數據和寫日誌對數據IO讀寫的影響,提升了整體數據讀寫的性能。
智能分級緩存,小IO數據優先寫入SSD,且寫入SSD的數據同時作為讀緩存,SSD在達到下刷水線時下刷數據到HDD(隨機寫轉化順序寫),達到淘汰水線時淘汰已下刷的數據,同時根據訪問熱度提升HDD數據至SSD,通過冷熱數據分層機製,可有效降低讀寫延遲提升熱點數據命中率。
隨著NAND Flash技術的進步、NVMe協議的迭代、SPDK框架的引入,結合小文件聚合、大文件智能預讀取、MDS多線程並行處理等優化手段的加持,存儲單節點的性能得到了顯著的提高。
在對性能有極高要求的應用場景,存儲節點甚至是全閃存部署,例如H3C X10828 G5,通過前部和中置硬盤槽位,能夠支持28塊NVMe SSD配置的全閃存節點。
未完待續,在後續兩篇報道中,我們將繼續沿著網絡創新和變革的步伐,帶你繼續領略RDMA與智能無損網絡的融合所釋放出的澎湃性能和創新力量,同時也將展示BOB登陆 集團無損以太網對分布式存儲網絡的優化,敬請期待!