《Ceph源码分析》——第1章,第4节Ceph客户端接口

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
简介:

本节书摘来自华章出版社《Ceph源码分析》一书中的第1章,第1.4节Ceph客户端接口,作者常涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.4 Ceph客户端接口
Ceph的设计初衷是成为一个分布式文件系统,但随着云计算的大量应用,最终变成支持三种形式的存储:块存储、对象存储、文件系统,下面介绍它们之间的区别。

1.4.1 RBD
RBD(rados block device)是通过librbd库对应用提供块存储,主要面向云平台的虚拟机提供虚拟磁盘。传统SAN就是块存储,通过SCSI或者FC接口给应用提供一个独立的LUN或者卷。RBD类似于传统的SAN存储,都提供数据块级别的访问。
目前RBD提供了两个接口,一种是直接在用户态实现,通过QEMU Driver供KVM虚拟机使用。另一种是在操作系统内核态实现了一个内核模块。通过该模块可以把块设备映射给物理主机,由物理主机直接访问。
块存储用作虚拟机的硬盘,其对I/O的要求和传统的物理硬盘类似。一个硬盘应该是能面向通用需求的,既能应付大文件读写,也能处理好小文件读写。也就是说,块存储既需要有较好的随机I/O,又要求有较好的顺序I/O,而且对延迟有比较严格的要求。

1.4.2 CephFS
CephFS通过在RADOS基础之上增加了MDS(Metadata Server)来提供文件存储。它提供了libcephfs库和标准的POSIX文件接口。CephFS类似于传统的NAS存储,通过NFS或者CIFS协议提供文件系统或者文件目录服务。
Ceph最初的设计为分布式文件系统,其通过动态子树的算法实现了多元数据服务器,但是由于实现复杂,目前还远远不能使用。目前可用于生产环境的是最新Jewel版本的CephFS为主从模式(Master-Slave)的元数据服务器。

1.4.3 RadosGW
RadosGW基于librados提供了和Amazon S3接口以及OpenStack Swift接口兼容的对象存储接口。可将其简单地理解为提供基本文件(或者对象)的上传和下载的需求,它有两个特点:
提供RESTful Web API接口。
它采用扁平的数据组织形式。

  1. RESTful的存储接口
    其接口值提供了简单的GET、PUT、DEL等其他接口,对应对象文件的上传、下载、删除、查询等操作。可以看出,对象存储的I/O接口相对比较简单,其I/O访问模型都是顺序I/O访问。
  2. 扁平的数据组织形式
    NAS存储提供给应用的是一个文件系统或者是一个文件夹,其实质就是一个层级化的树状存储组织模式,其嵌套层级和规模在理论上都不受限制。

这种树状的目录结构为早期本地存储系统设计的信息组织形式,比较直观,容易理解。但是随着存储系统规模的不断扩大,特别是到了云存储时代,其难以大规模扩展的缺点就暴露了出来。相比于NAS存储,对象存储放弃了目录树结构,采用了扁平化组织形式(一般为三级组织结构),这有利于实现近乎无限的容量扩展。它使用业界标准互联网协议,更加符合面向云服务的存储、归档和备份需求。
图1-3 Amazon S3的对象存储结构


9d84cd6c4f34cde505edbb3534841ebe3946627a

由于Amazon在云存储领域的影响力,Amazon的S3接口已经成为事实上的对象存储的标准接口。如图1-3所示,其接口分三级存储:Account/Bucket/Object(账户/桶/对象)。一个Account可以看作一个用户(租户),其下可以包含若干个的Bucket,一个Bucket可以拥有若干对象,其数量在理论上都不受限制。
在云计算领域,OpenStack已经成为广泛采用的云计算管理系统,OpenStack的对象存储接口Swift也成为广泛采用的接口,如图1-4所示,其也采用分三级存储:Account/Container/Object(账户/容器/对象),每层节点数均没有限制。可以看出,Swift接口和S3类似,Swift的Container对应S3的Bucket概念。Swift接口和S3接口没有太大的区别,但是一些管理接口会有一些差别。
图1-4 OpenStack Swift对象存储结构


5ebfd8232a2d006b964238d6e9c8b00c865c5e93
相关实践学习
基于EBS部署高性能的MySQL服务
如果您通常是通过ECS实例部署MySQL来使用数据库服务,您可以参考本实验操作来搭建高性能的MySQL服务。本实验为您演示如何通过EBS ESSD云盘部署一个高性能的MySQL服务。
相关文章
|
NoSQL 关系型数据库 MySQL
Harbor HA部署-使用Ceph RADOS后端
目录1. 前言2. 配置Ceph radosgw用户3. 部署HA的MariaDB集群4. 部署HA的Redis集群5. 部署Harbor集群参考资料   1. 前言 Harbor 1.4.0版本开始提供了HA部署方式,和非HA的主要区别就是把有状态的服务分离出来,使用外部集群,而不是运行在本地的容器上。
3521 0
|
Ubuntu 前端开发 Linux
Cinder配置多Ceph后端步骤
1. 检查cinder当前backend配置 使用cinder service-list,查看cinder-volume服务的Host字段格式。 旧版格式: 新版格式: 旧版中Host字段是cinder-volume服务所在节点的HOSTNAME,新版中Host字段是HOSTNAME@BACKEND。
1907 0
《Ceph源码分析》——第3章,第1节Ceph网络通信框架
本节书摘来自华章出版社《Ceph源码分析》一书中的第3章,第3.1节Ceph网络通信框架,作者常涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看 第3章Ceph网络通信 本章介绍Ceph网络通信模块,这是客户端和服务器通信的底层模块,用来在客户端和服务器之间接收和发送请求。
2250 0
《Ceph源码分析》——第2章,第4节Finisher
本节书摘来自华章出版社《Ceph源码分析》一书中的第2章,第2.4节Finisher,作者常涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看 2.4 Finisher 类Finisher用来完成回调函数Context的执行,其内部有一个FinisherThread线程来用于执行Conte
1428 0