ceph學習筆記

參考博客:https://www.jianshu.com/p/2246464306b2

Ceph有了塊設備接口,在塊設備上完全可以構建一個文件系統,那麼Ceph爲什麼還需要文件系統接口呢?

主要是因爲應用場景的不同,Ceph的塊設備具有優異的讀寫性能,但不能多處掛載同時讀寫,目前主要用在OpenStack上作爲虛擬磁盤,而Ceph的文件系統接口讀寫性能較塊設備接口差,但具有優異的共享性。PS:想了解更多?快去查查SAN和NAS

爲什麼Ceph的塊設備接口不具有共享性,而Ceph的文件系統接口具有呢?

對於Ceph的塊設備接口,如圖2,文件系統的結構狀態是維護在各用戶機內存中的,假設Ceph塊設備同時掛載到了用戶機1和用戶機2,當在用戶機1上的文件系統中寫入數據後,更新了用戶機1的內存中文件系統狀態,最終數據存儲到了Ceph集羣中,但是此時用戶機2內存中的文件系統並不能得知底層Ceph集羣數據已經變化而維持數據結構不變,因此用戶無法從用戶機2上讀取用戶機1上新寫入的數據。

對於Ceph的文件系統接口,如圖3,文件系統的結構狀態是維護在遠端Ceph集羣中的,Ceph文件系統同時掛載到了用戶機1和用戶機2,當往用戶機1的掛載點寫入數據後,遠端Ceph集羣中的文件系統狀態結構隨之更新,當從用戶機2的掛載點訪問數據時會去遠端Ceph集羣取數據,由於遠端Ceph集羣已更新,所有用戶機2能夠獲取最新的數據

ceph塊設備接口共享性
ceph文件系統共享性
爲了讓ceph集羣中數據更加均衡,通常可以將數據以小粒度進行打散,然後分佈在不同的集羣節點上,進一步的,因爲任何數據(可以是文件、塊設備等)都被打散成爲多個碎片寫入不同的底層存儲設備,從而使得在大型分佈式存儲系統中獲得儘可能高的I/O併發和匯聚帶寬成爲可能

ceph的CRUSH算法可以解決兩個問題:一是如果系統中存儲設備數量發生變化,如何最小化數據遷移量從而使得系統儘快恢復平衡;二是在大型分佈式存儲系統中,數據一般包含多個備份,如何合理分佈這些備份從而儘可能地使得數據具有較高的可靠性
顧名思義,CRUSH是一種基於哈希的數據分佈算法,以數據唯一標識符、當前存儲集羣的拓撲結構以及數據備份策略作爲CRUSH輸入,可以隨時隨地地通過計算獲取數據所在的底層存儲設備位置並直接與其通信,從而避免查表操作,實現去中心化和高度併發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章