存储基石RADOS
分布式对象存储系统RADOS是Ceph最为关键的技术,它是一个支持海量存储对象的分布式对象存储系统。RADOS层本身就是一个完整的对象存储系统,事实上,所有存储在Ceph系统中的用户数据最终都是由这一层来存储的。而Ceph的高可靠、高可扩展、高性能、高自动化等特性,本质上也是由这一层所提供的。因此,理解RADOS是理解Ceph的基础与关键。
Ceph的设计哲学如下。
每个组件必须可扩展。
不存在单点故障。
解决方案必须是基于软件的。
可摆脱专属硬件的束缚即可运行在常规硬件上。
推崇自我管理。
由第1章的讲解可以知道,Ceph包含以下组件。
分布式对象存储系统RADOS库,即LIBRADOS。
基于LIBRADOS实现的兼容Swift和S3的存储网关系统RADOSGW。
基于LIBRADOS实现的块设备驱动RBD。
兼容POSIX的分布式文件Ceph FS。
最底层的分布式对象存储系统RADOS。
2.1 Ceph功能模块与RADOS
Ceph中的这些组件与RADOS有什么关系呢,笔者手绘了一张简单的Ceph架构图,我们结合图2-1来分析这些组件与RADOS的关系。
图2-1 Ceph架构图
Ceph存储系统的逻辑层次结构大致划分为4部分:基础存储系统RADOS、基于RADOS实现的Ceph FS,基于RADOS的LIBRADOS层应用接口、基于LIBRADOS的应用接口RBD、RADOSGW。Ceph架构(见图1-1)我们在第1章有过初步的了解,这里详细看一下各个模块的功能,以此了解RADOS在整个Ceph起到的作用。
(1)基础存储系统RADOS
RADOS这一层本身就是一个完整的对象存储系统,事实上,所有存储在Ceph系统中的用户数据最终都是由这一层来存储的。Ceph的很多优秀特性本质上也是借由这一层设计提供。理解RADOS是理解Ceph的基础与关键。物理上,RADOS由大量的存储设备节点组成,每个节点拥有自己的硬件资源(CPU、内存、硬盘、网络),并运行着操作系统和文件系统。本书后续章节将对RADOS进行深入介绍。
(2)基础库LIBRADOS
LIBRADOS层的功能是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS进行应用开发。需要指明的是,RADOS是一个对象存储系统,因此,LIBRADOS实现的API是针对对象存储功能的。RADOS采用C++开发,所提供的原生LIBRADOS API包括C和C++两种。物理上,LIBRADOS和基于其上开发的应用位于同一台机器,因而也被称为本地API。应用调用本机上的LIBRADOS API,再由后者通过socket与RADOS集群中的节点通信并完成各种操作。
(3)上层应用接口
Ceph上层应用接口涵盖了RADOSGW(RADOS Gateway)、RBD(Reliable Block Device)和Ceph FS(Ceph File System),其中,RADOSGW和RBD是在LIBRADOS库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。
其中,RADOSGW是一个提供与Amazon S3和Swift兼容的RESTful API的网关,以供相应的对象存储应用开发使用。RADOSGW提供的API抽象层次更高,但在类S3或Swift LIBRADOS的管理比便捷,因此,开发者应针对自己的需求选择使用。RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成在KVM/QEMU中,以提高虚拟机访问性能。
(4)应用层
应用层就是不同场景下对于Ceph各个应用接口的各种应用方式,例如基于LIBRADOS直接开发的对象存储应用,基于RADOSGW开发的对象存储应用,基于RBD实现的云主机硬盘等。
下面就来看看RADOS的架构。