Ceph的层次结构可以从逻辑上自下向上分为以下几个层次:
一、基础存储系统RADOS层
- 功能:RADOS(Reliable Autonomic Distributed Object Store)是Ceph的底层存储系统,提供了分布式存储的核心功能。它是一个完整的对象存储系统,所有存储在Ceph系统中的用户数据最终都是由RADOS层来存储的。Ceph的高可靠、高可扩展、高性能、高自动化等特性也是由RADOS层所提供的。
- 组件:RADOS层主要由OSD(Object Storage Daemon)和Monitor组成。OSD负责数据的读写操作,而Monitor则负责维护存储集群的当前状态信息,如OSD的故障情况等。
- 逻辑结构:RADOS集群的逻辑结构包括OSD节点和Monitor节点。OSD节点负责数据的存储和维护,而Monitor节点则负责系统状态的监测和维护。它们之间通过传输节点状态信息来共同得出系统的总体工作状态,并形成一个全局系统状态记录数据结构,即所谓的cluster map。
二、基础库librados层
- 功能:librados是对RADOS进行抽象和封装的库,它向上层提供API,以便直接基于RADOS(而不是整个Ceph)进行应用开发。由于RADOS是一个对象存储系统,因此librados实现的API也只是针对对象存储功能的。
- 特性:librados提供的API支持多种编程语言,如C、C++等。应用可以通过调用本机上的librados API,再通过socket与RADOS集群中的节点通信并完成各种操作。
三、高层接口层
-
功能:高层接口层在librados库的基础上提供了抽象层次更高、更便于应用或客户端使用的上层接口。它包括了RADOS GW、RBD(Reliable Block Device)和Ceph FS(Ceph File System)三个部分。
-
组件:
- RADOS GW:提供与Amazon S3和Swift兼容的RESTful API,以供相应的对象存储应用开发使用。RADOS GW提供的API抽象层次更高,但功能则不如librados强大。
- RBD:提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。Red Hat已经将RBD驱动集成在KVM/QEMU中,以提高虚拟机访问性能。
- Ceph FS:是一个POSIX兼容的分布式文件系统。由于还处在开发状态,因此Ceph官网并不推荐将其用于生产环境中。
四、应用层
- 功能:应用层是不同场景下对于Ceph各个应用接口的各种应用方式。例如,基于librados直接开发的对象存储应用、基于RADOS GW开发的对象存储应用、基于RBD实现的云硬盘等。
- 特性:应用层的选择取决于用户的需求和应用场景。基于librados的开发可能更适合于在私有Ceph系统上开发专用应用,或者为基于Ceph的公有存储系统开发后台数据管理、处理应用。而RADOS GW则更适合于常见的基于web的对象存储应用开发,例如公有云上的对象存储服务。
综上所述,Ceph的层次结构从逻辑上分为基础存储系统RADOS层、基础库librados层、高层接口层和应用层。每个层次都有其特定的功能和组件,共同构成了Ceph分布式存储系统的强大架构