Ceph是一个开源的分布式软件平台12。它主要关注扩展文件系统,包括存储分布和可用性。
Ceph Cluster Overview. [Source]
Ceph Cluster Overview. [Source]
Ceph Cluster Overview. [Source]
ceph存储集群大致由三个组件组成:
- Ceph存储节点:配备物理存储介质,Ceph对象存储守护程序(osd,或Ceph-osd)、Ceph监视器(Ceph-mon)和Ceph管理器(Ceph-mgr)管理它们。更多详细信息请参阅Ceph存储集群体系结构部分。
- Ceph客户端:一开始我不知道上图中的“客户端服务器”是什么意思;我认为客户端服务器是Ceph存储集群的网关,但事实并非如此。这些是客户端,运行Ceph库的一部分来访问Ceph存储集群。Ceph提供了三个访问集群的接口:RADOSGW(对象存储)、RBD(块存储)和CephFS(文件存储)。更多详细信息请参阅Ceph客户端架构部分。
- Ceph协议:节点和客户端之间的通信协议。
Ceph客户端架构#
Ceph client library architecture. [Source]
Ceph客户端可分为三种类型(应用程序、主机/VM和客户端),并提供了四种访问Ceph存储集群的方式:libRADOS、RADOSGW(对象存储)、RBD(块存储)或CephFS(文件存储)。
对象存储与块存储与文件存储#
我不清楚如何区分这些术语,所以这里是我总结的想法和参考资料,以供理解。
Explaining three different storage interface type. [Source]
- 文件存储:客户端通过网络装载远程存储并访问存储的文件。存储已使用正确的网络文件系统进行格式化。
- 块存储:虚拟机使用通过的块设备并使用它。与文件存储不同,它不需要使用网络文件系统进行格式化。
- 对象存储:数据存储为对象。我认为ext文件系统中的inode也是它所指的对象类型之一,但它与文件存储的区别似乎是使用网络进行数据查询,而没有内核对文件系统(例如VFS)的帮助。
因此,Ceph中的三种访问方法可以解释为:
- RADOSGW(RADOS Rest Gateway,或Ceph对象网关)(src/rgw):它为Ceph存储集群提供了一个RESTful网关。它支持两个接口:兼容Amazon S3 API或兼容OpenStack Swift API。客户端发送RESTful请求(例如GET/path/to/object),RADOSGW将返回文件对象结果。
- RBD(RADOS块设备)(src/RBD_fuse,src/librbd?):它提供了一个Ceph存储集群作为块设备,因此客户端可以在访问/dev/sda*设备时访问集群。
- CephFS(src/libcephfs.cc?):与现有的文件系统类似,客户端可以通过POSIX接口访问集群,就像访问本地文件系统一样(例如使用open())。
- libRADOS(src/libRADOS)
2.Ceph存储集群体系结构#
节点由两种类型的守护程序管理:(1)Ceph对象存储守护程序(Ceph-osd)、(2)Ceph监视器(Ceph-mon)和(3)Ceph管理器(Ceph-mgr)。
Ceph对象存储守护程序(OSD)(/src/osd)#
OSD负责代表Ceph客户端在本地文件系统上存储对象。此外,Ceph操作系统使用Ceph集群节点的CPU、内存和网络来实现数据复制、擦除编码、恢复、监控和报告功能3。
Ceph read-write flow. RADOS layer in the client nodes sends data to the primary OSD. [Source]
因此,它的主要职责是处理客户端的读/写请求。用户数据作为对象存储在后端对象存储中(这似乎与前端对象存储RADOSGW不同)。
后端对象存储:Filestore与Bluestore#
最初Ceph使用Filestore,但现在它已被更高效的对象存储Bluestore所取代。
Two types of Ceph object stores. [Source]
在文件存储中,对象被写入文件系统(xfs、ext4、btrfs)。与文件存储不同,Bluestore将对象直接存储在块设备上,不需要任何文件系统接口,并使用RocksDB管理元数据。对块设备的直接访问减少了来自Linux内核文件系统软件堆栈的软件开销,从而提高了性能。详细的基准测试结果见[此处]。
BlueStore(/src/os/bluestore)4#
为了在当前实现的基础上更进一步,我进一步研究了bluestore。术语BlueStore是指Block+NewStore。
- 对象可以被称为一组字节流数据加上元数据。BlueStore不是通过文件系统存储信息,而是将数据直接存储到原始块设备,并将元数据存储到RocksDB密钥/值存储和BlueFS。
- BlueFS实现了一个最小的文件系统,允许RocksDB在其上存储文件,并与BlueStore5共享原始设备。
Ceph监测仪(/src/mon)#
ceph-mon是集群监控器守护进程,形成了一个Paxos兼职议会集群。它维护集群状态的映射,包括监视器映射、管理器映射、OSD映射和CRUSH映射6。
总结
- Ceph是一个用于分布式存储集群的框架。它包括前端客户端框架,包括几个基于RADOS的文件访问接口,后端存储框架,包括守护进程(操作系统、MON、管理器)和后端对象存储。
- 前端客户端框架基于RADOS(Reliable Autonomic Distributed Object Store)。客户端可以使用librados直接访问Ceph存储集群,也可以使用RADOSGW(对象存储)、RBD(块存储)和CephFS(文件存储)。
- 后端服务器框架由几个管理节点的守护进程和存储用户实际数据的后端对象存储组成。
在接下来的帖子中,我想探索每个部分的更多细节。
- 登录 发表评论
- 35 次浏览
最新内容
- 3 days 2 hours ago
- 3 days 2 hours ago
- 3 days 2 hours ago
- 3 days 2 hours ago
- 4 days 7 hours ago
- 1 week 5 days ago
- 1 week 5 days ago
- 1 week 5 days ago
- 2 weeks 1 day ago
- 2 weeks 1 day ago