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集群。

posted @ 2020-07-02 16:38  elon_wang  阅读(1661)  评论(0编辑  收藏  举报