Ceph——Ceph架構和組件


Ceph存儲集群由幾個不同的軟件守護進程組成,每個守護進程負責Ceph的一個獨特功能並將值添加到相應的組件中。每個守護進程彼此獨立。

Ceph的組件

  • RADOS(Reliable Autonomic Object Store,可靠、自動、分布式對象存儲)

    RADOS是Ceph存儲集群的基礎。Ceph中的一切都以對象的形式存儲,RADOS就負責存儲這些對象,而不用考慮它們的數據類型。RADOS層確保數據一致性和可靠性。對於數據一致性,它執行數據復制、故障檢測和恢復,還包括數據在集群節點間的遷移和再平衡。

    RADOS是Ceph存儲系統的核心,Ceph所有優秀特性都是有RADOS提供。Ceph的數據訪問方法(RBD、RGW、CephFS和librados)的所有操作都在RADOS層之上構建的。

    • 跨集群存儲

      當Ceph集群收到來自客戶端的寫請求時,CRUSH算法首先計算出存儲位置,以此決定將數據寫入什么地方,然后將這些信息傳遞到RADOS層進一步處理。基於CRUSH規則集,RADOS以小對象的形式將數據分發到集群內的所有節點。最后將這些對象存儲在OSD中。

    • 可靠性

      當配置的復制數大於1時,RADOS復制數據的可靠性。同時,他復制對象,創建副本,並將它們存儲在不同的故障區域中,同一個對象的副本不會存放在同一個故障區域。只要有足夠的設備,RADOS能夠保證一個RADOS集群中的對象副本不少於一個。

    • 一致性

      在對象不一致的情況下,RADOS將會利用剩下的副本執行恢復操作。

  • OSD(對象存儲設備)

    應用程序訪問Ceph集群執行寫操作,數據將會以對象的形式存儲在OSD中。OSD是存儲實際用戶數據並響應客戶端讀操作的唯一組件。通常,一個OSD守護進程與集群的一個物理磁盤綁定,所以一般來說,OSD守護進程的個數和物理磁盤的個數是相等的。

    • 讀寫操作

    對於任何讀或者寫的操作,客戶端首先向monitor請求集群的map,然后,他們就可以直接與OSD進行I/O操作,不需要monitor的干預。正應為如此,Ceph的數據處理速度非常快。

    • Ceph的核心特性(可靠性、自平衡、自恢復和一致性)始於OSD

    Ceph通過跨集群節點復制每個對象多次來提供可靠性。OSD上的每個對象都有一個主副本和幾個輔副本,輔副本分散在其他OSD上。存放輔副本的OSD受主副本OSD控制。

    當磁盤發生故障時,Ceph的OSD守護進程會自動與其他OSD通信,開始執行恢復操作。這時候,存放故障磁盤對象的輔OSD會被提升為主OSD,同時,在恢復期間為對象生成新的輔副本。

    • Ceph OSD的文件系統

    OSD由一個已經存在的Linux文件系統的物理磁盤驅動器和OSD服務組成。Linux文件系統決定它支持哪些擴展屬性。ext4文件系統限制了XTTRA的存儲容量,所以它不能給OSD文件系統提供足夠的XATTR信息的能力,Btrfs和XFS文件系統的XATTR存儲容量上的限額比較大。

    • Ceph OSD日志

    在將數據提交的到備用存儲之前,Ceph先將數據寫入一個稱為日志的獨立存儲區域,日志是相同的磁盤或分區上的一小塊緩沖區大小的分區,甚至可以是一個文件。這種機制下,Ceph的所有寫都是先寫日志,再寫到備用存儲。

    • OSD命令
      • 檢查單個節點上OSD的狀態
      service ceph status osd
      
      • 檢查整個集群的OSD的狀態,ceph.conf文件必須有所有OSD的所有信息(包括主機名)
      service ceph -a status osd
      
      • 檢查所有OSD的ID
      ceph osd ls
      
      • 檢查OSD map的狀態
      ceph osd stat
      
      • 檢查OSD樹形圖
      ceph osd tree
      
  • MON(Ceph monitor)

    MON組件通過一系列的map來跟蹤整個集群的健康狀態,有這幾個組件的map:OSD、MON、PG、MDS和CRUSH。所有的集群節點都向monitor節點報告狀態,並分享每一個狀態變化的信息。一個monitor為每一個組件維護一個獨立的map。monitor不存儲實際數據。

    • monitor map:他維護着monitor節點間端到端的信息,其中包括Ceph集群ID、monitor主機名、IP地址和端口號。他還存儲當前map的創建版本和最后一次修改的信息。可以通過下面命令檢查集群的monitor map:
    ceph mon dump
    
    • OSD map:存儲集群ID、OSD map創建版本和最后一個次修改信息,以及與池有關的信息(如池名字、池ID、類型、副本數和歸置組)。還存儲着OSD的一些信息,如數目、狀態、權重、最近處於clean狀態的間隔以及OSD主機等信息。可以通過下面命令獲取集群的OSD map:
    ceph osd dump
    
    • PG map:存儲歸置組的版本、時間戳、最新的OSD版本、容量充滿的比例以及容量接近充滿的比例等信息。同事跟蹤每個歸置組的ID、對象數、狀態時間戳、OSD的up集合、OSD的acting集合和清洗等信息。執行下面命令檢查集群的PG map:
    ceph pg dump
    
    • CRUSH map:存儲集群的存儲設備信息。故障域層次結構和在故障域中定義如何存儲數據的規則。執行下面命令檢查集群的CRUSH map:
    ceph osd crush dump
    
    • MDS map:存儲當前MDS map版本、map的創建和修改時間、數據和元素池的ID、集群中MDS的數目以及MDS的狀態。執行下面命令檢查MDS map:
    ceph mds dump
    

    monitor是輕量級的守護進程,通常不需要大量的系統資源。擁有一般性能的CPU、內存和千兆網卡的便宜的入門級服務器足以滿足大多數的場景。monitor節點要有足夠的磁盤空間來存儲集群日志,包括OSD、MDS和monitor日志。

    一個典型的Ceph集群通常包括多個monitor節點,生產環境下集群必須至少有三個monitor節點來提供高可用性。

    • monitor相關命令:

      • 檢查monitor服務的狀態:
      service ceph status mon	或
      ceph mon stat 或
      ceph mon_status	或
      ceph mon dump
      
  • librados

    librados庫目前支持PHP、Ruby、Java、Python、C和C++語言。它提供了Ceph存儲集群的一個本地接口RADOS,並且是RBD、RGW等服務的基礎,以及為CephFS提供POSIX接口。librados API支持直接訪問RADOS。

  • RBD(RADOS塊設備、Ceph塊設備)

    RBD對外提供塊存儲,可以被映射、格式化進而像其他磁盤一樣掛載到服務器。

    Linux支持內核RBD並通過librados映射Ceph塊設備,然后RADOS將Ceph塊設備的對象以分布式模式存儲在集群中。一旦Ceph塊設備映射到Linux主機,它可以當做裸分區或標記為文件系統,然后進行掛載。

    RBD通過librbd庫來獲取RADOS的好處並提供高可靠、完全分布式和基於對象的塊存儲。當客戶想RBD寫入數據時,librbd庫將數據映射到對象進而存儲在Ceph集群中,刪除這些數據對象,並跨集群復制這些對象,從而提供更好的性能和可靠性。RADOS層之上的RBD層支持高效地更新對象。

  • RGW(RADOS網關、Ceph對象網關)

    RGW提供了一個兼容Amazon S3和OpenStack對象存儲API(Swift)的restful API接口。RGW還支持多租戶和OpenStack的Keystone身份驗證服務。

    RGW是一個代理,將HTTP請求轉換成RADOS,同時也可以將RADOS請求轉換為HTTP請求,從而提供RESTful對象存儲,兼容S3和Swift。Ceph對象存儲使用Ceph對象網關守護進程(radosgw)和(librgw)、librados交互。

  • MDS(Ceph元數據服務器)

    MDS跟蹤文件層次結構並存儲只供CephFS使用的元數據。RBD和RGW不需要元數據,所以它們不需要MDS守護進程。MDS不直接給客戶端提供數據,數據通過OSD提供。

    MDS作為一個守護進程運行,它允許客戶端掛載一個任意大小的POSIX文件系統。

  • CephFS(Ceph文件系統)

    CephFS提供了一個任意大小並且兼容POSIX的分布式文件系統。CephFS依賴MDS來跟蹤文件層次結構。

Linux內核驅動程序支持libcephfs,因此用戶可以使用mount命令實現掛載。ceph-fuse支持在用戶空間文件系統。CephFS還允許直接與應用程序交互,使用libcephfs庫直接訪問RADOS集群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM