文章插圖

文章插圖
一、認識分布式存儲
分布式存儲系統,就是通過網絡將數據分散存儲在多臺獨立的設備上二、分布式存儲的特性可擴展性1)節點擴展后,舊數據會自動遷移到新節點上,實現負載均衡,避免單點過熱的情況出現2)水平擴展只需要將新節點和原有集群連接到同一網絡,整個過程不會對集群業務造成影響3)當節點添加到集群,集群系統的整體容量和性能也會隨之線性擴展,此后新節點的資源就會被管理平臺接管,被用于分配或者回收低成本高性能易用分布式存儲系統需要能提供易用的對外接口,另外也需要完整的監控,運維工具,并能夠與其他系統集成易管理分布式存儲系統的挑戰主要在于數據,狀態信息的持久化,要求在自動遷移,自動容錯,并發讀寫的過程中保證數據的一致性 。分布式存儲系統涉及的技術主要在兩個領域: 分布式系統以及數據庫三、Ceph簡介優勢及架構簡介:Ceph是一個統一的分布式存儲系統,涉及初衷是提供較好的性能,可靠性和可擴展性優勢:高擴展性: 使用普通x86服務器,支持10~1000臺服務器,支持TB到EB級別的擴展高可靠性: 沒有單點故障,多數據副本,自動管理,自動修復高性能:數據分布均衡可用于對象存儲,塊設備存儲和文件系統存儲基礎存儲系統rados:基礎存儲系統RADOS(Reliable Autonomic,Distributed Object Store,即可靠的,自動化的,分布式的對象存儲) 。所有存儲在Ceph系統中的用戶數據事實上最終都是由這一層來存儲的 。Ceph的高可靠,高擴展性,高性能,高自動化等等特性本質上都是由這一層完成的基礎庫LIBEADOSlibrados:這一層的功能是對RADOS進行抽象和封裝,并向上層提供API,以便于基于基礎DADOS(而不是整個Ceph)進行應用開發 。特別注意的是是RAOCS是一個對象存儲,因此,librados實現的API也是針對對象存儲功能的 。高層應用接口radosgw:對象網關接口(對象存儲)rdb:塊存儲cephfs: 文件系統存儲其作用是在librados庫的基礎上提供抽象層次更高,更便于應用或客戶端使用的上層接口 。【ceph是什么樣的分布式存儲 ceph存儲空間利用率與性能關系】四、Ceph的基本組件如上圖,Ceph主要有三個基本進程OSD用于集群中所有數據及對象的存儲 。處理數據的復制,恢復,回填,在均衡 。并向其他osd守護進程發送心跳,然后想Mon發送一些信息 。當Ceph存儲集群設定有兩個副本時(一共存兩份),則至少需要兩個OSD守護集成即兩個OSD節點,集群才能達到actice+clean狀態MDS(可選)為Ceph文件系統提供元數據計算,緩存與同步(也就是說Ceph塊設備和Ceph對象存儲不需要MDS) 。在Ceph中,元數據也是存儲在osd節點中的 。mds類似于元數據的代理服務器 。MDS進程并不是必須的,只有需要使用Cephfs時候,才需要配置MDS節點 。Monitor監控整個集群的狀態,維護集群的cluster MAP二進制表,保證集群數據的一致性 。ClusterMAP描述了對象塊存儲的物理位置,以及一個將設備聚合到物理位置的桶列表Manager(ceph-mgr)用于收集ceph集群狀態,運行指標,比如存儲利用率,當前性能指標,和系統負載 。對外提供ceph dashboard(ceph ui)和restful api 。Manage開啟高可用時,至少2個Ceph結構包含兩部分ceph client: 訪問ceph底層服務或組件,對外提供各種接口 。對象存儲接口,塊存儲接口,文件級存儲接口ceph node:ceph底層服務提供端,也就是ceph存儲集群五、Ceph的工作原理無論使用哪種存儲方式(對象,塊,文件),存儲的數據都會被切割成對象(object),Object Size大小可以有管理員進行調整,通常為2M或4M 。每個對象存儲都會有一個唯一的OID,由ino和ono生產,ino即是文件的File ID,用于在全局唯一標識的一個文件,而ono則是分片的編號 。如一個文件FILE ID 為A,它被切割成兩個對象,一個對象編號為0,一個對象編號為1,那么這兩個文件的oid則為A0和A1 。OID的好處則是可以唯一標識每個不通的對象,并且存儲了對象與文件的關系 。由于ceph的所有數據都虛擬成立整齊劃一的對象,所以在讀寫時效率都會比較高 。但是對象并不會直接存儲進OSD中,因為對象的size很小,在一個大規模的集群中可能有幾百到幾千萬個對象 。這么多對象光是遍歷尋址,速度都是很緩慢的;并且如果將對象直接通過某種固定映射的哈希算法映射到osd上,當這個osd損壞時,對象無法自動遷移到其他osd上面(因為映射函數不允許),為了解決這些問題,ceph引入了歸置組的概念,即PGPG是一個邏輯概念,我們linux系統中可以直接看到對象,但是無法直接看到PG 。他在數據尋址時類似于數據庫中的索引;每個對象都會固定映射進一個PG中,所以當我們要尋找一個對象時,只需要先找到這個對象所屬的PG,然后再遍歷這個PG就可以了,無需遍歷所有的對象 。而且在數據遷移時,也是以PG作為基本單位進行遷移,ceph不會直接操作對象 。對象是如何映射到PG的? 還記得OID么? 首先使用靜態hash函數對OID做hash取出特征碼,用特征碼與PG的數量取模,得到的序號則是PGID 。由于這種設計方式,PG的數量多寡直接決定了數據分布的特性,所以合理設置PG數量可以很好的提升Ceph集群的性能并使數據均勻分布 。最后PG會根據管理員設置的副本數量進行復制,然后通過crush算法存儲到不同的OSD節點上(其實就是把PG中的所有對象存儲到節點上),第一個OSD接地那即為主節點,其余均為從節點 。Ceph名詞介紹ceph核心組件及概念介紹
Monitor監控整個集群的狀態,維護集群的clusterMAP二進制表,保證集群數據的一致性OSDOSD全稱 Object Storage Device,也就是負責響應客戶端請求返回數據的進程 。一個ceph集群一般都有很多個OSD節點MDSMDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務ObjectCeph最底層的存儲單元是Obect對象,每個Object包含了元數據和原始數據PGPG全稱 Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD 。引入PG這一層其實是為了更好地分配數據和定位數據RADOSRADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集群的精華,用戶實現數據分配、Failover等集群操作LibraydiosLibrados是Rados的提供庫,因為RADOS是協議很難直接訪問,因此在上層的RBD,RGW,CephFS都是通過librados訪問的 。CRUSHCRUSH是ceph使用的數據分布算法,類似一致性哈希,讓數據分配到預期的地方RDBRDB全稱RADOS block device,是ceph對外提供的塊設備服務 。RGWRGW全稱RADOS gateway,是ceph對外提供的對象存儲服務,接口與S3和Swift兼容CephFSCephFS全稱Ceph File System,是Ceph對外提供的文件系統服務
- 古代海上絲綢之路進入鼎盛時期是在:明朝為什么不發展海洋貿易?
- 和前任第一次見面應該怎么做 分手后第一次見面應該是什么狀態
- 臺式電腦chkdsk工具怎么運行 電腦chkdsk工具是什么
- 網站設計的意義是什么? 視頻設計網站有哪些
- 想加盟一個服裝店需要了解什么 加盟什么樣的服裝店好
- 如何設置wifi漫游 設置wifi漫游是什么意思
- iPhone4 分辨率 蘋果4分辨率是多少
- 不愧是迪奧 迪奧與中國
- 為什么戀愛時你總是沒有安全感 在戀愛中為什么會沒有安全感
- 巨蟹座的性格你知道多長 巨蟹座的性格特點是什么
