Ceph
Ceph是一个大容量存软件定义的分布式统一对象存储方案,各组件都是实现充分解耦,为此提供廉价、开放、稳定、兼容、高性能、可扩展的解决方案
- 大容量:ceph是大容量PB级别的存储解决方案
- 存软件定义:也就意味着任何服务器系统上都可以部署(廉价、开放、稳定、兼容)
- 分布式:一个服务由多台后端服务器进程提供统一资源(可扩展)
- 对象存储:对比文件系统存储实现了去中心化管理(高性能)
- ceph已经完全被linux内核支持(kvm的发展也是基于此)
- ceph同时支持三种存储方式,块设备、文件系统、对象存储
- ceph引入了CRUSH算法,区别于传统的存储管理元数据的读取
- 对于数据的冗余采用副本和纠删码方案,大大加快了数据的恢复时间和允许更大的故障
- 对于开源云平台的稳定支持和高级功能的实现
Ceph架构组件
ceph集群由多个守护进程组成,每个守护进程负责特定的功能,进程之间是解耦独立存在
-
RADOS(reliable autonomic distrbuted object store)可靠、自由、分布式对象存储,ceph存储的基础核心管理集群的数据一致性和可靠性(类似虚拟化中hypervisor作用)
- 将文件映射到Objects后利用Cluster Map通过CRUSH计算而不是查找表方式定位文件数据在存储设备中的位置。省去了传统的File到Block的映射和BlockMap管理
- RADOS充分利用了OSDs的智能特点,将部分任务授权给OSDs,最大程度的实现可扩展
-
monitor(mon)组件通过一系列的map来跟踪整个集群的健康状态,集群中节点都向mon报告状态分析状态变化信息
-
osd,osd守护进程与集群中的一个物理磁盘进行一对一绑定(也可以是分区),完成真实数据的读写操作
-
librados,提供访问rados库,支持PHP、JAVA、PYTHON、C、C++语言,提供本地接口实现RBD、RGW服务,POSIX接口实现cephfs服务,librados api 实现直接访问rados
-
ceph块设备(RBD)提供系统级别的使用,可以被映射、格式化后挂载到服务器上使用,具备商业存储特殊精简置备和快照功能
-
ceph文件系统(CephFS)提供应用级别的使用,比如nfs、samba,前提是需要依赖元数据服务
-
ceph元数据服务(MDS)跟踪文件层次结构并存储只给CephFS使用的元数据,块设备和对象存储不需要元数据,因此不需要MDS守护进程
-
ceph对象网关(RGW)提供支持Amazon S3和openstack swift 的restful API接口,提供原生api接口,应用程序可以直接使用对象存储功能
API接口提供应用方法
库文件提供实现方法
ceph存储和传统存储
- ceph一切皆对象,计算存储信息
1、客户端通过Monitor的交互获取ClusterMap
2、本地直接CRUSH算法运算得到存储位置 - 传统存储一切皆文件,记录存储信息
1、查找文件的inode编号
2、根据inode编号,找到inode信息
3、根据inode信息找到文件对于所在的block,进行数据的读写
传统存储对于面对大容量就会出现性能的瓶颈,对于元数据的查找和依赖对于大容量环境下已经无法适用