隨著現代社會信息技術的發展以及人類生活的智能化,全球數據量正在無限制地擴展和增加。傳統存儲雖然有技術成熟、性能良好、可用性高等優點,但面對海量數據,其缺點也越來越明顯:如擴展性差、成本高等。
為了克服上述缺點,滿足海量數據的存儲需求,市場上出現了分布式存儲技術。分布式存儲的興起與互聯網的發展密不可分,互聯網公司由于其大數據、輕資產的特點,通常使用大規模分布式存儲系統。
本篇文章會和讀者朋友們聊一聊,目前市場上一些主流的分布式存儲存儲框架。
分布式存儲技術
1.什么是分布式存儲
在了解什么是分布式存儲之前,我們先來了解一下存儲幾十年來的大概歷程。
直連存儲(DAS):存儲和數據直連,拓展性、靈活性差。
中心化存儲(SAN、NAS):設備類型豐富,通過IP/FC網絡互連,具有一定的拓展性,但是受到控制器能力限制,拓展能力有限。同時,設備到了生命周期要進行更換,數據遷移需要耗費大量的時間和精力。
分布式存儲:基于標準硬件和分布式架構,實現千節點/EB級擴展,同時可以對塊、對象、文件等多種類型存儲統一管理。
分布式存儲就是將數據分散存儲到多個存儲服務器上,并將這些分散的存儲資源構成一個虛擬的存儲設備,實際上數據分散的存儲在企業的各個角落。
打個簡單的比方,將數據比作成貨物,存儲比作成貨車,直連存儲就相當于用普通貨車拉貨;為了提升拉貨的效率,改用大型的貨車拉貨,這就相當于中心化存儲;現在,由于貨物太多,大型的貨車已經不足以拉動全部貨物,改用一節一節連接起來的火車拉貨,這就是分布式存儲。分布式系統的出現是為了用普通的機器完成單個計算機無法完成的計算、存儲任務,目的是利用更多的機器,處理更多的數據。
2.分布式存儲的優勢
可擴展:分布式存儲系統可以擴展到數百甚至數千個這樣的集群大小,并且系統的整體性能可以線性增長。
低成本:分布式存儲系統的自動容錯和自動負載平衡允許在低成本服務器上構建分布式存儲系統。此外,線性可擴展性還能夠增加和降低服務器的成本,并實現分布式存儲系統的自動操作和維護。
高性能:無論是針對單個服務器還是針對分布式存儲群集,分布式存儲系統都需要高性能。
分布式存儲框架
分布式存儲技術的實現,往往離不開底層的分布式存儲框架。根據其存儲的類型,可分為塊存儲,對象存儲和文件存儲。在主流的分布式存儲技術中,HDFS屬于文件存儲,Swift屬于對象存儲,而Ceph可支持塊存儲、對象存儲和文件存儲,故稱為統一存儲。
1.HDFS
HDFS是Hadoop核心組成之一,是分布式計算中數據存儲管理的基礎,被設計成適合運行在通用硬件上的分布式文件系統。
1.1 HDFS的功能模塊
Client
Client是用戶與HDFS交互的手段,當文件上傳 HDFS 的時候,Client 將文件切分成一個一個的 Block,然后進行上傳;Client通過與NameNode 交互,來獲取文件的位置信息;與 DataNode 交互,讀取或者寫入數據;Client還可以提供NameNode格式化等一些命令來管理HDFS;同時,Client可以通過對HDFS的增刪改查等操作來訪問HDFS。
NameNode
NameNode就是HDFS的Master架構,它維護著文件系統樹及整棵樹內所有的文件和目錄,HDFS文件系統中處理客服端讀寫請求、管理數據塊(Block)的映射信息、配置副本策略等管理工作由NameNode來完成。
DataNode
NameNode 下達命令,DataNode 執行實際操作。DataNode表示實際存儲的數據塊,同時可以執行數據塊的讀寫操作。
Secondary NameNode
Secondary NameNode的功能主要是輔助NameNode,分擔其工作量;在緊急情況下可以輔助恢復NameNode,但是它不能替換NameNode并提供服務。
1.2 HDFS的優勢
1.容錯性:數據自動保存多個副本。通過增加副本的形式,提高容錯性。其中一個副本丟失以后,可以自動恢復。
2.可以處理大數據:能夠處理數據規模達到GB、TB甚至PB級別的數據;能夠處理百萬規模以上的文件數量。
3.可以構建在廉價的機器上,通過多副本機制,提高可靠性。
1.3 HDFS的缺點
1.不適合低延時數據訪問:比如毫秒級的存儲數據,是做不到的。
2.無法高效對大量小文件進行存儲:存儲大量小文件的話,它會占用 NameNode 大量的內存來存儲文件目錄和塊信息。這樣是不可取的,因為 NameNode的內存總是有限的。同時,小文件存儲的尋址時間會超過讀取時間,它違反了HDFS的設計目標。
3.不支持并發寫入、文件隨機修改:一個文件只能有一個寫,不允許多個線程同時寫。僅支持數據 append(追加),不支持文件的隨機修改。
2.Swift
swift于2008年起步,最初是由Rackspace公司開發的分布式對象存儲服務, 2010 年貢獻給 OpenStack 開源社區。現如今已部署到大規模公有云的生產環境中使用。
2.1 Swift的功能模塊
Swift 采用完全對稱、面向資源的分布式系統架構設計,所有組件都可擴展,避免因單點失效而影響整個系統的可用性。
Proxy Server(代理服務):對外提供對象服務 API,Proxy Server首先會通過Ring查找被操作實體的物理位置,隨后將請求轉發至相應的賬戶、容器或對象服務。
Authentication Server(認證服務):驗證用戶的身份信息,并獲得一個訪問令牌(Token)。
Cache Server(緩存服務):緩存令牌,賬戶和容器信息,但不會緩存對象本身的數據。
Account Server(賬戶服務):Account Server是存儲節點中負責處理Account的get、head、put、delete、relication請求的服務進程。提供賬戶元數據和統計信息,并維護所含容器列表的服務。
Container Server(容器服務):Container Server是存儲節點中負責處理Container的get、head、put、delete、relication請求的服務進程。提供容器元數據和統計信息,并維護所含對象列表的服務。
Object Server(對象服務):Object Server就是一個簡單的BLOB存儲服務器,可以存儲、檢索和刪除保存再本地設備的對象。提供對象元數據和內容服務,每個對象會以文件存儲在文件系統中。
Replicator(復制服務):檢測本地副本和遠程副本是否一致,采用推式(Push)更新遠程副本。
Updater(更新服務):對象內容的更新。
Auditor(審計服務):檢查對象、容器和賬戶的完整性,如果發現錯誤,文件將被隔離。
Account Reaper(賬戶清理服務):移除被標記為刪除的賬戶,刪除其所包含的所有容器和對象。
2.2 Swift的技術特點
1.Swift的數據模型采用層次結構,共設三層:Account/Container/Object(即賬戶/容器/對象),每層節點數均沒有限制,可以任意擴展。
2.Swift是基于一致性散列技術,通過計算將對象均勻分布在虛擬空間的虛擬節點上,在增加、刪除節點時可以大大減少需移動的數據量;通過獨特的數據結構 Ring(環),再將虛擬節點映射到實際的物理存儲設備上,完成尋址過程。
3.Swift為賬戶、容器和對象分別定義了的環。環是為了將虛擬節點(分區)映射到一組物理存儲設備上,并提供一定的冗余度而設計的,環的數據信息包括存儲設備列表和設備信息、分區到設備的映射關系、計算分區號的位移。
2.3 Swift的優點
1.極高的數據持久性
2.完全對稱的系統架構
3.無限的可擴展性
4.無單點故障
5.是OpenStack的子項目之一,適合云環境的部署
2.4 Swift的缺點
原生的對象存儲,不支持實時的文件讀寫、編輯功能
3.Ceph
Ceph最早起源于Sage就讀博士期間的工作、成果于2004年發表,并隨后貢獻給開源社區。經過十幾年的發展,已成為應用最廣泛的開源分布式存儲平臺。
3.1 Ceph的主要架構
基礎存儲系統RADOS
Ceph的最底層是RADOS(分布式對象存儲系統),它具有可靠、智能、分布式等特性,實現高可靠、高可拓展、高性能、高自動化等功能,并最終存儲用戶數據。RADOS系統主要由Ceph OSD、Ceph Monitors兩部分組成,Ceph OSD 的功能是存儲數據,處理數據的復制、恢復、回填、再均衡,并通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。Ceph Monitor維護著展示集群狀態的各種圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。
基礎庫LIBRADOS
LIBRADOS層的功能是對RADOS進行抽象和封裝,并向上層提供API,以便直接基于RADOS進行應用開發。RADOS是一個對象存儲系統,因此,LIBRADOS實現的API是針對對象存儲功能的。物理上,LIBRADOS和基于其上開發的應用位于同一臺機器,因而也被稱為本地API。應用調用本機上的LIBRADOS API,再由后者通過socket與RADOS集群中的節點通信并完成各種操作。
上層應用接口
Ceph上層應用接口涵蓋了RADOSGW(RADOS Gateway)、RBD(Reliable Block Device)和Ceph FS(Ceph File System),其中,RADOSGW和RBD是在LIBRADOS庫的基礎上提供抽象層次更高、更便于應用或客戶端使用的上層接口。
應用層
應用層就是不同場景下對于Ceph各個應用接口的各種應用方式,例如基于LIBRADOS直接開發的對象存儲應用,基于RADOSGW開發的對象存儲應用,基于RBD實現的云主機硬盤等。
3.2 Ceph的功能模塊
Client客戶端:負責存儲協議的接入,節點負載均衡。
MON監控服務:負責監控整個集群,維護集群的健康狀態,維護展示集群狀態的各種圖表,如OSD Map、Monitor Map、PG Map和CRUSH Map。
MDS元數據服務:負責保存文件系統的元數據,管理目錄結構。
OSD存儲服務:主要功能是存儲數據、復制數據、平衡數據、恢復數據,以及與其它OSD間進行心跳檢查等。一般情況下一塊硬盤對應一個OSD。
3.3 Ceph的優點
1.CRUSH算法
CRUSH算法是ceph的兩大創新之一,簡單來說,ceph摒棄了傳統的集中式存儲元數據尋址的方案,轉而使用CRUSH算法完成數據的尋址操作。采用CRUSH算法,數據分布均衡,并行度高,不需要維護固定的元數據結構。
2.高可用
Ceph中的數據副本數量可以由管理員自行定義,并可以通過CRUSH算法指定副本的物理存儲位置以分隔故障域,支持數據強一致性,適合讀多寫少場景;ceph可以忍受多種故障場景并自動嘗試并行修復。
3.高擴展性
Ceph本身并沒有主控節點,擴展起來比較容易,并且理論上,它的性能會隨著磁盤數量的增加而線性增長。
4.特性豐富
Ceph支持對象存儲、塊存儲和文件存儲服務,故稱為統一存儲
3.4 Ceph的缺點
1.去中心化的分布式解決方案,需要提前做好規劃設計,對技術團隊的要求能力比較高。
2.Ceph擴容時,由于其數據分布均衡的特性,會導致整個存儲系統性能的下降。
BMJ分布式存儲
BMJ是一個高速、安全、可拓展的區塊鏈基礎設施項目。面向5G,對IPFS底層技術深度開發及優化,通過切片技術對節點的P2P傳輸,實現數百兆文件的秒傳。從全新的角度出發,BMJ基于區塊鏈的分布式云存儲系統設計思想提出新的方案,在數據傳輸方面引入數據交換機制和秒傳機制來提高數據傳輸速度;在數據存儲方面,通過采用一種高效的數據存儲架構來提高數據存儲效率。
作為分布式存儲的領航者,BMJ目前正在快速布局,未來形成包括云存儲、云計算、大數據的產業集群,可以更好的引領傳統企業升級轉型,推動整個新經濟的發展。
為存儲而來,為服務而生,BMJ正在悄然地改變著整個世界,改變你我的生活。
?責任編輯人:CC
評論
查看更多