基礎概念
-
什么是分布式存儲?
首先了解一下存儲的發展歷史。
- DAS:Direct Access Storage,直接連接存儲,將存儲設備通過SCSI接口或光纖通道連接到一台計算機上。特點:直接和存儲器連接,擴展性,靈活性比較差。
- SAN、NAS等。NAS:network attached storage,SAN:storage area network。特點:設備類型豐富,可以通過外部IP/FC網絡互連,具備一定的可擴展性;但是受控制器能力限制,擴展能力有限,PB級;設備到生命周期更換,需要進行數據遷移,耗時耗力。
- 分布式存儲。結構為:分布式軟件+標准服務器。特點:高擴展性,基於標准硬件和分布式架構,千節點/EB級擴展;易運維,塊、對象、文件等多種類型存儲統一管理。
分布式指明了一種獨特的系統架構類型,這種系統架構是由一組通過網絡進行通信,為了完成共同的任務而協調工作的計算機節點組成。
所謂分布式存儲,就是存儲設備分布在不同的地理位置,數據就近存儲,將數據分散在多個存儲節點上,各個節點通過網絡相連,對這些節點的資源進行統一的管理,從而大大緩解帶寬壓力,同時也解決了傳統的本地文件系統在文件大小、文件數量等方面的限制。
幾個問題:
- 客戶端(用戶側)是直接和某一個節點交互操作(操作包括增刪改查),還是和某些節點交互操作?如果是某些,則如何保證數據的准確可靠:數據多重寫入更改等是否會影響到數據的穩定可靠性?
- 客戶端讀取數據的時候,是從哪個節點上讀取數據的?
- 數據存儲備份是放到哪個節點上的?
-
Ceph是什么?
Ceph是當前非常流行的開源分布式存儲系統,具有高擴展性、高性能、高可靠性等優點,同時提供塊存儲服務(rbd)、對象存儲服務(rgw)以及文件系統存儲服務(cephfs)。對於三種基本存儲服務的介紹:
- 對象存儲(Object Storage),既可以通過使用Ceph的庫,利用C, C++, Java, Python, PHP代碼,也可以通過Restful網關以對象的形式訪問或存儲數據,兼容亞馬遜的S3和OpenStack的Swift。
- 塊存儲(Block Storage),作為塊設備像硬盤一樣直接掛載。
- 文件系統(File System) ,如同網絡文件系統一樣掛載,兼容POSIX接口。
Ceph的結構,對象存儲由LIBRADOS和RADOSGW提供,塊存儲由RBD提供,文件系統由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要調用LIBRADOS的接口,而最終都是以對象的形式存儲於RADOS里。
Ceph集群的節點有三種角色:
- Monitor,監控集群的健康狀況,向客戶端發送最新的CRUSH map(含有當前網絡的拓撲結構)。
- OSD,OSD全稱Object Storage Device,也就是負責響應客戶端請求返回具體數據的進程。一個Ceph集群一般都有很多個OSD。維護節點上的對象,響應客戶端請求,與其他OSD節點同步。
- MDS,MDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務。提供文件的Metadata,如果不使用CephFS可以不安裝。
Ceph是分布式的存儲,它將文件分割后均勻隨機地分散在各個節點上,Ceph采用了CRUSH算法來確定對象的存儲位置,只要有當前集群的拓撲結構,Ceph客戶端就能直接計算出文件的存儲位置,直接跟OSD節點通信獲取文件而不需要詢問中心節點獲得文件位置,這樣就避免了單點風險。
-
RGW是什么?RGW在Ceph架構中處於什么位置,其作用是什么?
RGW是Ceph中提供對象存儲的接口,兼容了S3和swift接口。全程為RadosGateWay,向下可以調用底層librados庫文件,操作底層的存儲數據;向上提供了與 OpenStack Swift 和 Amazon S3 兼容的接口。
名詞解釋
- RADOS(Reliable Autonomic Distributed Object Store, RADOS)RADOS是Ceph 存儲集群的基礎。Ceph 中的一切都以對象的形式存儲,而RADOS 就負責存儲這些對象,而不考慮它們的數據類型。RADOS 層確保數據一致性和可靠性。對於數據一致性,它執行數據復制、故障檢測和恢復。還包括數據在集群節點間的recovery。
- PG全稱Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配數據和定位數據。
- s3:Amazon Simple Storage Service (Amazon S3) 是一種對象存儲服務,提供行業領先的可擴展性、數據可用性、安全性和性能。S3介紹
- OSD,OSD全稱Object Storage Device,也就是負責響應客戶端請求返回具體數據的進程。
- RESTful:REST(英文:Representational State Transfer,簡稱REST)描述了一個架構樣式的網絡系統,比如 web 應用程序。它首次出現在 2000 年 Roy Fielding 的博士論文中,Roy Fielding是 HTTP 規范的主要編寫者之一。在目前主流的三種Web服務交互方案中,REST相比於SOAP(Simple Object Access protocol,簡單對象訪問協議)以及XML-RPC更加簡單明了,無論是對URL的處理還是對Payload的編碼,REST都傾向於用更加簡單輕量的方法設計和實現。值得注意的是REST並沒有一個明確的標准,而更像是一種設計的風格。REST介紹