Ceph学习笔记(1)- 架构概述
简介
Ceph的目标是采用商业硬件来构建大规模的、具有高可用、高扩展、高性能的分布式存储系统,ceph具有如下特点:
- 软件定义存储:Ceph不需要特定的硬件,在主流的Linux发行版等类Unix操作系统上均可运行
- 分布式存储:得意与计算寻址让Ceph客户端可以直接与服务端任意节点通信,避免因存在访问热点产生的性能瓶颈,这也是他可以轻易管理PB级以上规模集群的重要原因
- 统一存储:Ceph支持传统的块存储(RBD)、文件系统存储(Ceph fs)与新兴的对象存储协议(RADOSGW)
架构
Ceph采用存储应用与存储服务完全分离(Client/Server)的模式,基于Rados对外提供服务。客户端可以直接通过LIBRADOS访问RADOS系统,也可以调用在LIBRADOS上封装的Radosgw、librbd、libcephfs这些接口访问存储。
-
RADOS网关接口(RGW):如图1,RGW提供对象存储服务,通过librados允许APP直接与Ceph对象存储建立连接,基于librados封装的librgw也提供了与Amazon S3协议和OpenStack Swift协议兼容的RESTful API。可以将它理解为对文件(对象)进行上传、下载、查询、删除等。
- 对象存储采用扁平化目录结构,利于进行大规模的扩容。
- S3/Swift接口均分三级:Account/Bucket/Object(账户/桶/对象)
-
RADOS块设备(RBD)接口:如图1,Ceph块设备,提供持久块存储,并将数据分散到不同OSD上,是一个分布式的块设备。与传统的SAN存储类似,RBD可以通过SCSI或FC给应用提供一个独立的LUN或者卷。
- 在用户态,通过QEMU Driver供虚拟机作为磁盘使用
- 在操作系统内核态将块设备映射给物理主机,供物理主机使用
-
Ceph文件系统(CephFS)接口:在rados基础上增加了元数据服务器(MDS),它只为CephFS文件系统跟踪文件的层次结构和存储元数据,(RBD与RADOS不需要MDS,MDS不直接提供数据给客户端)。CephFS类似于传统的NAS,通过NFS和CIFS协议提供文件目录服务。
-
RADOS(Reliable Autonomic Distributed Object Store):如图1,Ceph的底层实现为RADOS。在Ceph中数据以对象的形式存储,RADOS层保存这些对象,并确保数据始终保持一致,进行数据复制、故障检测和恢复、数据迁移、集群各节点的数据平衡等工作,RADOS是Ceph的核心,包括以下功能:
-
Monitor为整个集群提供全局配置和系统信息(几数个Monitor组成小型的强一致性分布式)
-
CRUSH算法实现对象寻址过程(Ceph对象落在哪里由CRUSH计算得出)
-
对数据进行读写操作
-
集群数据均衡
-
保证集群副本之间数据一致性
-
数据自动恢复
-
克隆和快照
-
对象分层存储
-
典型的Rados集群如图2:
学习自:
《Ceph源码分析》 常涛
《Ceph Cookbook》 Karan Singh
《Ceph之RADOS设计原理与实现》 谢型果 严军
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· DeepSeek V3 两周使用总结
· 回顾我的软件开发经历(1)
· C# WebAPI 插件热插拔
· .NET9 AOT部署
· .NET 9 new features-C#13新的锁类型和语义