Ceph是一种存储行业最热门的软件定义存储技术,它为块存储、文件存储、对象存储提供了系统的软件定义解决方案。下面我们来了解Ceph的逻辑架构:


   Ceph monitor:Ceph monitor 通过保存一份集群状态映射来维护整个集群的健康状态。他分别为每个组件维护映射关系信息,包括osp map(保存一些常用信息包括集群ID、OSD map自创的最新版本号以及最后修改的时间以及存储池的信息,包括存储池的名称、ID、类型、副本级别和PG。它还保存着OSD的信息,比如:数量、状态、权重、最后清理间隔以及OSD节点的信息)、mon map (监控节点端到端的信息,包括Ceph集群ID、monitor节点名 称、IP地址和端口号等。它还保存着monitor map被创建出来的最新版本号以及最后修改的时间)、PG map (保存的信息包括PG的版本号、时间戳、OSD map的最新版本号、容量几满的百分百 full_ratio 、容量将满百分比 nearfull_ratio、他还记录了每个PG的ID号(格式为pool-num.pg-id)、对象数量、状态、状态时间戳state_stamp、up OSD sets (第一个为主OSD、第二个为从OSD)、acting OSD sets以及清理的时间信息scrub_stamp)和CRUSH map(保存的信息包括集群设备列表、bucket列表、故障域分层结构、保存数据时用到的为谷故障域定义的规则等。)

    

  补充:查看osd map的命令:ceph osd dump

      查看mon map的命令:ceph mon dump

      查看PG map的命令:ceph pg dump 

      查看CRUSH map的命令:ceph osd crush dump


wKiom1YrQ4DQQOOeAAFVoJqXC-E308.jpg

    

   Ceph 对象存储设备(OSD):只要应用程序向Ceph集群发出写的操作,数据就会被以对象形式存储在OSD中。这是Ceph集群中唯一能存储用户数据的组件,同时用户也可以发送命令来读取数据。通常一个OSD守护进程会捆绑到集群中的一块物理盘上,所以在通常情况下Ceph集群中物理盘的总数与磁盘运行的存储用户的数据的OSD守护进程数量是相同的。


  Ceph 元数据(MDS):MDS只为CephFS文件存储系统跟踪文件的层次机构和存储元数据。Ceph块设备和RADOS 并不需要元数据,因此也不需要Ceph MDS守护进程。MDS不直接提供数据客户端,从而消除了系统中的单点故障。


  RADOS:RADOS是ceph存储集群的基础。在Ceph中所有的数据都以对象形式存在的,并且无论哪种数据类型RADOS对象存储都将负责保存这些对象。RAODS层可以确保数据始终保持一致性。要做到这一点必须执行数据复制、故障检测和恢复,以及数据迁移和所在集群节点实现在平衡。


  Librados:libRADOS库为PHP、RUBY、Java、Python、C++等语言提供 了方便的访问RADOS接口的方式。同时还为RBD、RGW、和CephFS这些组件提供了远生的接口。Librados还支持直接访问RADOS来节省HTTP开销。


  RBD(块设备):原名RADOS块设备,提供可靠的分布式和高性能块存储磁盘给客户端。RADOS块设备使用librbd库,把一个数据以顺序化带化的形式存放在Ceph集群的多个OSD中。RBD建立在Ceph的RADOS层之上,每块设备都会分布在多个Ceph节点上,以提供高性能和出色的可靠性。RBD驱动已经完美的集成在Linux的内核中。除了高性能和可靠性外还提供了完整和增量快照、自动精简配置、写时复制克隆、动态调整大小以及内存缓存等。


   RADOS网关接口(RGW):RGW提供对象存储服务,它使用librgw和librados允许应用程序和Ceph对象存储建立连接,RGW提供了与Amazon S3和openstack Swift兼容的RUSTFUL API


   CephFS:Ceph文件系统提供了一个使用Ceph存储集群存储用户数据的与POSIX兼容的文件系统。


                                                                                                                  参考文献:Ceph Cookbook中文版