Ceph对象存储底层对象分布揭秘.docx

上传人:b****5 文档编号:6438791 上传时间:2023-01-06 格式:DOCX 页数:14 大小:559.93KB
下载 相关 举报
Ceph对象存储底层对象分布揭秘.docx_第1页
第1页 / 共14页
Ceph对象存储底层对象分布揭秘.docx_第2页
第2页 / 共14页
Ceph对象存储底层对象分布揭秘.docx_第3页
第3页 / 共14页
Ceph对象存储底层对象分布揭秘.docx_第4页
第4页 / 共14页
Ceph对象存储底层对象分布揭秘.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Ceph对象存储底层对象分布揭秘.docx

《Ceph对象存储底层对象分布揭秘.docx》由会员分享,可在线阅读,更多相关《Ceph对象存储底层对象分布揭秘.docx(14页珍藏版)》请在冰豆网上搜索。

Ceph对象存储底层对象分布揭秘.docx

Ceph对象存储底层对象分布揭秘

    

   

Ceph对象存储底层对象分布揭秘

   

 

 

 

 

   

   

 

   

 

 

 

 

对象存储是公有云中常见的非结构化数据存储解决方案,常被作为网站、移动应用、图片、视频数据的主要存储方式,也是CDN回源及云上数据备份的不二选择。

对象存储采用无层次结构的数据存储方法。

基于对象的存储不使用目录树,数据组织采用桶作为划分域,对象存储于桶中;各个单独的数据(对象)单元存在于存储池中的同一级别;每个对象都有唯一的识别名称,供应用进行检索。

租户通过API管理云上数据。

目前对象存储已成为公有云服务商所具备的基本存储服务,亚马逊S3、阿里OSS、微软Bolb、华为OBS、金山KS3、腾讯COS。

Ceph则是开源生态中至今为止软件定义存储中最成功的产品,其通过RGW组件对外提供对象存储服务,本文将探讨CephRGW中数据的分布原理。

Ceph数据存储原理

Ceph的对象存储接口是由RGW组件提供的。

RGW为用户提供了一套兼容S3及Swift协议的API。

用户通过RGWAPI完成上传、下载等数据相关操作。

在RGW提供了整体上传和分段上传两种文件上传方式。

每部分RGW上传的文件片段根据配置进行切块,形成若干个Object,Object逻辑归属于某个PG中,最终Object存储在PG映射的一组OSD磁盘上,Ceph最终存储的是对象(内容+属性),通过后端存储引擎ObjectStore(src/os/ObjectStore.cc)封装了底层Rados对象操作。

无论是块存储、文件存储、还是对象存储存入Ceph的数据都以如下方式组织:

File:

client读写的文件

object:

是将File切块后的存储实体

oid:

(objectid)=ino(File的ID)+ono(切块序号)

mask:

PG总数m(m为2的整数幂)-1

PG(PlacementGroup):

放置组(标识为PGID)是一个逻辑的概念,一个PG存放多个对象,每个存储节点有上百个PG。

OSD(ObjectStorageDevice):

对象存储设备,提供存储资源。

Ceph存储引擎ObjectStore

后端存储引擎由ObjectStore提供,ObjectStoreAPI分主要为三部分:

(1)Object内容的读写操作;

(2)Object扩展属性的读写操作;

(3)Object关联的Omap的操作,Omap在概念上与扩展属性相似,但有不同的存储限制及存储方式,通常为KV数据库。

实现一套ObjectStore的接口即提供了一种存储引擎,目前常用存储引擎类型为FileStore和BlueStore。

其中使用最为广泛的CEPH后端存储引擎为FileStore。

(1)利用文件系统的POSIX接口实现Object的内容读写操作;

(2)利用文件系统的扩展属性功能实现Object的属性操作

(3)利用LevelDB、RocksDB等KV数据库实现Omap操作。

FileStore中每个Object会被看成是一个文件,Object的属性会利用文件的扩展属性存取,超出文件系统限制(filestore_max_xattr_value_size,xfs默认64KB)的扩展属性会存储在KV数据库中。

CephRGW对象存储模型

在RGW提供了整体上传和分段上传两种文件上传方式。

1、RGW对象整体上传

rgw_max_chunk_size:

首部对象切片大小(默认1M)

rgw_obj_stripe_size:

除首部对象外的其他切片大小(默认8M)

rgw_max_put_size:

整体上传文件限制(默认512G)

整体上传的文件,将会切分为一个大小为rgw_max_chunk_size的首部Rados对象,及若干个大小为rgw_obj_stripe_size的中间Rados对象(最后一个对象可以小于rgw_obj_stripe_size)。

其中,扩展属性存在于首部Rados对象的扩展属性中,包含了分片信息。

2、RGW对象分段上传

rgw_multipart_min_part_size:

分段最小大小(默认1M)

rgw_multipart_part_upload_limit:

最大分段数(默认10000)

分段上传,用户上传时自主对上传文件进行分段,除最后一个分段外必须大于rgw_multipart_min_part_size,每段文件独立上传,每段都可看作一个整体上传。

上传完成后,会生成一个内容为空的首部Rados对象,用于存储RGW对象的属性信,其中包含分段及分片信息。

CephRGW对象存储实践

接下来我们就进入到Ceph中一探究竟。

首先搭建一个三副本的Ceph(Luminous版)集群,部署图如上图所示。

下面我们来查看RGW对象在Ceph中是如何存储的。

1、整体上传

整体上传file10MB.dat对象分布图如上所示。

(1)整体上传文件

(2)定位首部对象

(3)定位除首部对象外的其他分片对象

我们可以看到有很多扩展属性,介绍常见的几个:

"cephos.spill_out":

记录文件的扩展属性是否溢出到了Omap

“ceph._”:

对象信息

“ceph._user.rgw.acl”:

对象ACL

“ceph._user.rgw.manifest”:

对象rgw相关信息,包含分片信息。

从上面实践结果可以看到,我们手动构建的文件MD5和原文件一致。

2、分段上传

分段上传file20MB.dat对象分布图如上图所示。

(1)分段上传文件

(2)定位首部对象

(3)定位除首部对象外的其他分片对象

从上面实践结果可以看到,我们手动构建的文件MD5和原文件一致。

至此,我们完成了全部实践,通过研究CephRGW及Rados存储原理,手动还原用户数据再对象存储中完整分布。

 

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1