Ceph系统架构概述

时间:2024-03-27 07:50:20

Ceph的系统架构如下图所示(来源于Ceph.com):

Ceph系统架构概述

根据架构图,Ceph系统大致可以分为两个层次:

  • 用于实现存储资源整合的RADOS。
    该层次是一个完整的分布式存储系统,对外以libRADOS的方式提供基于对象协议的访问服务。
  • 用于对外提供各类协议的协议转换组件:CephFS、RBD和RGW。
    这一层次的三个组件之间是相互独立的,且都通过libRADOS将数据存放在RADOS中,因此都可以视为是RADOS的客户端。

RADOS

RADOS是Ceph的负责实现存储资源整合的子系统,该系统将多个存储设备(磁盘)上的空间整合为一个统一的命名空间,这一命名空间通过对象的方式来组织数据。

对象可以视为一个完整而独立的数据,例如一个视频、一个文档、一段语音等。每一个对象通过其对象id(Object ID/oid)进行标示,对象id是全局唯一的(确切说,在一个存储池内是唯一的)。对象的内容包含数据和扩展属性两部分,其中数据即为一段连续的二进制流,而扩展属性即为键值对的集合。

对象之间相互独立的,每一个对象不知道其他对象的存在。另一方面,对象也没有层次概念,所有的对象位于同一个存储池中,只能通过对象id定位该对象。

RADOS以对象为单位提供数据访问服务,即可以通过对象id从RADOS(的一个存储池中)查询对象并获取其内容;也可以修改对象的内容或者删除该对象。对应的API形式类似于:

  • 创建/写入:rados_write(对象名称 , 对象内容, 写入长度,起始偏移量)
  • 读取/访问:rados_read(对象名称, 缓存区, 读取长度, 起始偏移量)
  • 删除/销毁:rados_remove(对象名称)

libRADOS中定义了所有对象操作的API。

RADOS除了提供对象协议的访问方式外,还负责对其内部存储的对象数据实现数据的冗余、容灾和负载平衡这些对于所有的协议都需要的统一功能。

协议转换组件

libRADOS是Ceph内部的非标准协议,为了满足各类实际应用,需要提供各类标准协议。

Ceph中的各协议转换组件实现了RADOS对象协议到各标准协议的转换,目前已经实现的协议包括:

  • CephFS:兼容POSIX的标准文件系统
  • RBD:兼容Linux块协议vBlock的块设备协议
  • RGW:兼容Amazon S3和OpenStack Swfit的HTTP/REST协议

协议转换组件通过libRADOS访问RADOS,并将所有的数据全部存放到RADOS中,进而通过RADOS完成了数据冗余、容灾和负载平衡。这样协议转换组件不需要考虑以上问题,大幅度简化了其设计。

转载于:https://my.oschina.net/guyson/blog/324505