Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ceph存储数据流程

ceph存储数据流程

作者头像
summerking
发布于 2022-09-16 03:58:53
发布于 2022-09-16 03:58:53
1K00
代码可运行
举报
文章被收录于专栏:summerking的专栏summerking的专栏
运行总次数:0
代码可运行

本文目标:理解ceph存储流程,例如:当client向ceph集群中写入一个文件时,这个文件是如何存储到ceph中的,其存储过程是如何?

# ceph存储流程图

# ceph存储流程详解

  • File: 就是我们想要存储和访问的文件,这个是面向我们用户的,是我们直观操作的对象。
  • Object:object就是Ceph底层RADOS所看到的对象,也就是在Ceph中存储的基本单位。object的大小由RADOS限定(通常为2m或者4m)。
  • PG (Placement Group): PG是一个逻辑的概念,它的用途是对object的存储进行组织和位置的映射,通过它可以更好的分配数据和定位数据。
  • OSD (Object Storage Device): 它就是真正负责数据存取的服务。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
文件-->对象
对象-->归置组
归置组-->OSD

  1. 文件到对象的映射

首先,将file切分成多个object,每个object的大小由RADOS限定(通常为2m或者4m)。每个object都有唯一的id即oid,oid由ino和ono产生的

  • ino:文件唯一id(比如filename+timestamp)
  • ono:切分后某个object的序号(比如0,1,2,3,4,5等)
  1. 对象到归置组的映射

对oid进行hash然后进行按位与计算得到某一个PG的id。mask为PG的数量减1。这样得到的pgid是随机的。

注:这与PG的数量和文件的数量有关系。在足够量级的程度上数据是均匀分布的。

  1. 归置组到OSD的映射

通过CRUSH算法可以通过pgid得到多个osd,简而言之就是根据集群的OSD状态和存储策略配置动态得到osdid,从而自动化的实现高可靠性和数据均匀分布。在ceph中,数据到底是在哪个osd是通过CRUSH算法计算出来的

# 查看一个Object的具体存放位置

# 1. 新建一个test池

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in iscloud163-200 in ~ via 🐍 v2.7.5 
➜ rados lspools
summer60sys000
testpool

# 2. 上传一个文件到test池中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in iscloud163-200 in ~ via 🐍 v2.7.5 
❯ rados -p testpool put xsw  xsw.txt 

OBJECT COMMANDS
   get <obj-name> [outfile]         fetch object
   put <obj-name> [infile]          write object

# 3. 查看test池中刚上传的对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in iscloud163-200 in ~ via 🐍 v2.7.5 
➜ rados -p testpool ls | grep xsw
xsw

# 4. 查看对象位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in iscloud163-200 in ~ via 🐍 v2.7.5 
➜ ceph osd map testpool xsw
osdmap e46 pool 'testpool' (3) object 'xsw' -> pg 3.30bdc57f (3.7) -> up ([3,0], p3) acting ([3,0], p3)

  • 这代表pool test中的xsw这个对象位于3.7这个pg中,并且位于osd3和osd0上(两个副本)

# 5. 进入到对应osd的存储目录,找到对应文件即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in iscloud163-200 in ceph-0/current/3.7_head 
➜ pwd
/var/lib/ceph/osd/ceph-0/current/3.7_head
root in iscloud163-200 in ceph-0/current/3.7_head 
➜ ll
total 20508
-rw-r--r-- 1 root root 4194304 Apr 23 09:51 benchmark\udata\uiscloud163-200\u3243175\uobject20__head_9D317607__3
-rw-r--r-- 1 root root 4194304 Apr 23 09:51 benchmark\udata\uiscloud163-200\u3243175\uobject37__head_F83C35C7__3
-rw-r--r-- 1 root root 4194304 Apr 23 09:51 benchmark\udata\uiscloud163-200\u3243175\uobject43__head_78BB75F7__3
-rw-r--r-- 1 root root 4194304 Apr 23 09:51 benchmark\udata\uiscloud163-200\u3243175\uobject5__head_E2A01F47__3
-rw-r--r-- 1 root root 4194304 Apr 23 09:51 benchmark\udata\uiscloud163-200\u3243175\uobject64__head_98D1E25F__3
-rw-r--r-- 1 root root       0 Apr 23 09:51 __head_00000007__3
-rw-r--r-- 1 root root     502 Apr 23 14:45 xsw__head_30BDC57F__3

  • 这个目录下存放了3.7这个pg中所有的object,可以根据指纹30bdc57f来定位到具体的文件。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《 大话 Ceph 》 之 PG 那点事儿
腾讯云TStack
2017/11/06
9.7K8
《大话 Ceph》 之 RBD 那点事儿
腾讯云TStack
2017/11/03
14.4K0
分布式存储Ceph之PG状态详解
继上次分享的《Ceph介绍及原理架构分享》,这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下:
Lucien168
2020/07/20
3.5K0
ceph块设备使用iscsi
Ceph 块设备(也叫RBD)服务提供了大小可调、精炼、支持快照和克隆的块设备。为提供高性能, Ceph 把块设备条带化到整个集群。 Ceph 同时支持内核对象( KO ) 和 QEMU 管理程序直接使用 librbd ——避免了内核对象在虚拟系统上的开销。
summerking
2023/04/27
1.3K0
FileStore压缩存储(优化篇)
前言 前面已经分析过RBD在Ceph的文件分布,就是将一个完整的块设备,映射成大小相同的数据块,然后通过Crush算法进行Map,最后存储在文件中。FileStore承担了文件的存储工作,其实就是将文件安装PG进展组织,然后分目录存储。 原理和动机 文件从filename依次会进行以下三个步骤进行,最后落到磁盘,如下: •filename -> object_id: filename通过hash函数直接转换成一个objectid •object_id -> pg: object_id其实是一个整数,通
腾讯云TStack
2018/03/21
2.7K0
FileStore压缩存储(优化篇)
ceph运维操作
如果是在admin节点修改的ceph.conf,想推送到所有其他节点,则需要执行下述命令
匿名用户的日记
2022/01/05
3.4K0
ceph基础知识
ceph相关的基础知识记录 # ceph基本组件 # Object Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。 # OSD OSD全称Object Storage Device,用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,然后向Mon提供一些监控信息,当Ceph存储集群设定数据有两个副本时(一共存两份),则至少需要两个OSD守护进程即两个OSD节点,集群才能达到active+clean状态。 # PG PG全
summerking
2022/09/16
2810
Ceph分布式存储 - 学习笔记
一、Ceph简单介绍 OSDs:Ceph的OSD守护进程(OSD)存储数据,处理数据复制,恢复,回填,重新调整,并通过检查其它Ceph OSD守护程序作为一个心跳 向Ceph的监视器报告一些检测信息。Ceph的存储集群需要至少2个OSD守护进程来保持一个 active + clean状态.(Ceph默认制作2个备份,但可以调整它) Monitors:Ceph的监控保持集群状态映射,包括OSD(守护进程)映射,分组(PG)映射,和CRUSH映射。 Ceph 保持一个在Ceph监视器, Ceph OSD 守护进程和 PG的每个状态改变的历史(称之为“epoch”)。 MDS:MDS是Ceph的元数据服务器,代表存储元数据的Ceph文件系统(即Ceph的块设备和Ceph的对象存储不使用MDS)。Ceph的元数据服务器使用POSIX文件系统,用户可以执行基本命令如 ls, find,等,并且不需要在Ceph的存储集群上造成巨大的负载。
洗尽了浮华
2022/03/29
1K0
【重识云原生】第三章云存储3.3节——Ceph统一存储方案
Ceph最早起源于Sage就读博士期间的工作、成果于2004年发表,并随后贡献给开源社区。经过多年的发展之后,已得到众多云计算和存储厂商的支持,成为应用最广泛的开源分布式存储平台。
江中散人_Jun
2022/04/11
2.8K0
【重识云原生】第三章云存储3.3节——Ceph统一存储方案
Ceph介绍及部署
ceph是一个分布式存储系统,提供对象存储,块存储,文件存储,Ceph集群至少需要一个ceph monitor和两个OSD守护进程,而运行ceph文件系统客户端时,则必须要有元数据服务器MDS
dogfei
2020/07/31
2.7K0
kubernetes(十九) Ceph存储入门
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。目前也是OpenStack的主流后端存储,随着OpenStack在云计算领域的广泛使用,ceph也变得更加炙手可热。国内目前使用ceph搭建分布式存储系统较为成功的企业有华为,xsky,杉岩数据,中兴,华三,浪潮,中移动等。
alexhuiwang
2020/09/23
4K0
kubernetes(十九) Ceph存储入门
ceph相关命令汇总
WORM将在08,09,10(月)01,02,03,04,05,06,07,08,09,10(日)周一,周二00:00:00-11:30:39禁用
summerking
2022/09/16
1K0
Ceph理解
- 图虽然很复杂,但如果理解了几个基本操作的含义就很好读下来了,这里是三个操作的伪代码,take和emit很好理解,select主要是遍历当前bucket,如果出现重复、失败或者超载就跳过,其中稍微复杂的“first n”部分是一旦遇到失败,第一种情况是直接使用多备份,第二种情况是使用erasing code基本可以忽略。看着下面的图就更好理解具体的算法了
ZHaos
2019/02/27
2.4K0
Ceph 分布式存储使用指南
*注意:本文大部分参考官方文档https://docs.ceph.com/docs/octopus/,因为网络原因,部署命令和官网有些许出入,更符合现在条件一些,且官方已经抛弃ceph-deploy 部署工具改用cephadm,不要傻傻看使用ceph-deploy的老古董啦。
jwangkun
2021/12/23
2.8K0
Ceph 分布式存储使用指南
ceph运维常用指令
[root@node1 ~]# ceph-deploy purgedata node1
IT运维技术圈
2022/06/26
1.7K0
003.Ceph扩展集群
需求:添加Ceph元数据服务器node1。然后添加Ceph Monitor和Ceph Manager node2,node3以提高可靠性和可用性。
木二
2019/07/01
6180
003.Ceph扩展集群
ceph数据存储的几个概念
最下面的蓝色长条可以看成一个个主机,里面的灰色圆柱形可以看成一个个OSD,紫色的cabinet可以也就是一个个机柜, 绿色的row可以看成一排机柜,顶端的root是我们的根节点,没有实际意义,你可以把它看成一个数据中心的意思,也可以看成一个机房的意思,不过只是起到了一个树状结构的根节点的作用。 CRUSH从root下的所有的row中选出一个row。 在刚刚的一个row下面的所有cabinet中,CRUSH选出三个cabinet。 在刚刚的三个cabinet下面的所有OSD中,CRUSH分别选出一个OSD。 这样做的根本意义在于,将数据平均分布在了这个集群里面的所有OSD上,同时,这样选择做到了三个OSD分布在三个不同的cabinet上。
后端云
2018/10/24
2.1K0
ceph数据存储的几个概念
Ceph分布式存储初步认识(一)
Ceph 是一个去中心化的分布式存储系统, 提供较好的性能、可靠性和可扩展性。 Ceph 项目最早起源于Sage就读博士期间的工作(最早的成果于 2004 年发表),并随后贡献给开源社区, 遵循 LGPL 协议 (LESSER GENERAL PUBLIC LICENSE 的简写,中文译为 “ 较宽松公共许可证 ” )。在经过了数年的发展之后,目前已得到众多云计算厂商(OpenStack 、 CloudStack 、 OpenNebula 、 Hadoop )的支持并被广泛应用。
Lansonli
2022/04/11
1.3K1
Ceph分布式存储初步认识(一)
ceph分布式存储学习指南
ceph是模块化和可扩展的,并且有容错设计。先进的分布式存储系统。 ceph凭借其高可扩展性、高可靠性、高性能的特点,逐渐成为openstack\cloudstack、opennebula等主流开源云平台后端存储的首选。可靠性、自平衡、自恢复、一致性 软件定义存储。 可以大幅降低企业存储基础设施的成本。 分布式、可大规模扩展,经济 虚拟平台KVM、VMWARE也支持ceph ceph存储介绍 ceph部署实战 ceph架构和组件 ceph内部构建 ceph部署 ceph存储配置 ceph操作及管理 监控ceph集群 ceph与openstack集成 ceph性能调优和基准测试 1、ceph是什么 ceph是一个开源项目,它提供软件定义的、统一的存储解决方案。ceph可大规模扩展、高性能并且无单点故障的分布式存储系统。容量可扩展至EB级别。1EB=1024PB
用户5760343
2022/05/14
6540
ceph分布式存储学习指南
ceph-块存储客户端
ceph块设备,以前称为RADOS块设备,为客户机提供可靠性、分布式和高性能的块存储磁盘。RADOS块设备利用librbd库并以顺序的形式在ceph集群的多个osd上存储数据块。RBD是由ceph的RADOS层支持,因此每个块设备都分布在多个ceph节点上,提供了性能和优异的可靠性。RBD有linux内核的本地支持,这意味着RBD驱动程序从过去几年就与linux内核集成的很好。除了可靠性和性能外,RBD还提供了企业特性,例如完整和增量快照、瘦配置、写时复制克隆、动态调整大小等,RBD还支持内存缓存,这大大提高了性能。
yuezhimi
2020/09/30
3.2K0
相关推荐
《 大话 Ceph 》 之 PG 那点事儿
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验