Ceph的架构图:
简略图:
从下到上,逻辑上可以分为四个层次:
基础存储系统 RADOS(Reliable Autonomic Distributed Object Store,可靠、自动、分布式对象存储):
RADOS是ceph存储集群的基础,这一层本身就是一个完整的对象存储系统。Ceph的高可靠、高可扩展、高性能、高自动化等等特性本质上也都是由这一层所提供的,在ceph中,所有数据都以对象的形式存储,并且无论什么数据类型,RADOS对象存储都将负责保存这些对象,确保了数据一致性和可靠性。
RADOS系统主要由两部分组成,分别是OSD
和Monitor
。
基础库 LIBRADOS:
LIBRADOS基于RADOS之上,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C
、C++
、Java
、Python
等。
上层接口 RADOSGW、RBD 和 CEPHFS
基于LIBRADOS层开发的三个接口,其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。
RGW(RADOS Gateway 简称)
提供对象存储
服务,是一套基于RESTFUL协议的网关,支持对象存储,兼容S3和SwiftRBD(RADOS Block Device 的简称)
,提供分布式的块存储
设备接口,主要面向虚拟机提供虚拟磁盘,可以被映射、格式化,像磁盘一样挂载到服务器使用。CephFS(File System)
是一个POSIX兼容的分布式文件系统
,依赖MDS来跟踪文件层次结构,基于librados封装原生接口,它跟传统的文件系统如 Ext4 是一个类型的,但区别在于分布式存储提供了并行化的能力,像NFS等也是属于文件系统存储。
注意:两个对象的区分,需要说明下,这里提到两个对象的概念:
一个是RGW中的对象存储;一个是Ceph的后端存储的对象,这两个需要区分:
- 第一个对象面向用户的,是用户接口能访问到的对象;
- 第二个对象是ceph服务端操作的对象;
比如:
- 使用RGW接口,存放一个1G的文件,在用户接口看到的就是存放了一个对象;
- 在下层,Ceph将这个1G的文件,分片成多个对象后最终存储到磁盘上;