Ceph蹚坑笔记 - (2)

分布式存储中HDFS与Ceph两者的区别是什么,各有什么优势? 过去两年,我的主要工作都在Hadoop这个技术栈中,而最近有幸接触到了Ceph。我觉得这是一件很幸运的事,让我有机会体验另一种大型分布式存储解决方案,可以对比出HDFS与Ceph这两种几乎完全不同的存储系统分别有哪些优缺点、适合哪些场景。 对于分布式存储,尤其是开源的分布式存储,站在一个SRE的角度,我认为主要为商业公司解决了如下几个问题: 可扩展,满足业务增长导致的海量数据存储需求; ... 阅读详情

Ceph蹚坑笔记 - (2)

大数据量引发的LevelDB问题

在使用Ceph RGW 0.80时,由于还没有Bucket Index Sharding机制,一个Bucket的Index只会存放在一个对象的omap中,而omap是存放在OSD的LevelDB中的。所以,当一个Bucket存放了大量对象(比如几千万上亿),omap中会有大量记录,即其所在OSD的LevelDB中的数据量也大增。在日常使用时,并未发现什么问题。问题出在OSD意外终止后的重启过程。我们注意到,在OSD启动过程中,CPU占用率很高,大量内存(包括swap)也被消耗,要经过几个小时,OSD才会启动完毕。我们用pstack观察,发现整个漫长的过程中OSD主要是在对其LevelDB进行recover和compact操作。在Ceph邮件组的讨论中,Sage提到这个可能是因为早期的LevelDB存在bug,导致LevelDB一直没有进行必要的compact。
具体原因,我们还未细究,目前使用Ceph 0.94的Bucket Index Sharding功能和RocksDB之后,未再发现该问题。

Bucket Index引发的瓶颈问题

当外部向一个Bucket上传一个对象时,RGW执行的步骤大致为:
1. 在对应的Bucket Index写上一条pending的entry(如果开启datalog的话,还要写一条pending的日志)
2. 存入用户数据
3. 把刚才的pending的entry改为complete(如果开启datalog的话,还要写一条complete的日志)
所以,如果对象不大的话,Bucket Index上所承受的IOPS甚至远超用于写入用户数据的IOPS。
在Ceph RGW 0.80里,由于一个Bucket的Index只存在一个对象中(一个对象只会在一个PG中,对一个对象进行修改时需要相应锁PG,FileStore中对同一文件的操作也是串行的)。于是,当对一个Bucket进行并发修改时,Bucket Index就成了瓶颈。这种瓶颈在recovery/backfill的时候表现得尤其显著。当一个对象在被recovery/backfill时,所有对该对象的读写都将被挡住。所以,Ceph RGW 0.80中,当一个Bucket Index对象正处于recovery/backfill过程中时,对该Bucket的写将被暂时挂起,等到Bucket Index对象的recovery/backfill完成后,才会被执行。由于客户端一般都有超时设置,而且可能不太长,但Ceph RGW 0.80中大的Bucket Index对象可能需要很长的时间才能完成recovery/backfill,所以在客户端看来,操作在一段时间内就是一直都超时失败。
Ceph RGW 0.94中引入了Bucket Index Sharding的机制(把原来一个Bucket Index对象切成多个)。通过配置较大的shard数(rgw_override_bucket_index_max_shards),Bucket Index的瓶颈效应的到了很大改善。
应当注意的是,较大的shard数会有一个副作用,那就是降低List操作的性能。这时,可以适当调大rgw_bucket_index_max_aio来降低List的相应时间。在Bucket Index Sharding的情况下,List操作本质上是向多个shard发出子List请求,把各个shard返回的有序列表进行归并排序后再返回给客户端。调大这个rgw_bucket_index_max_aio意味着同时向更多的shard发出子List请求,从而降低总时间。当然,也不能因为有rgw_bucket_index_max_aio而无顾忌地使用太大的rgw_override_bucket_index_max_shards,因为shard数越多,List操作中的归并排序所需要的计算量和缓存也会大为增加。

分片上传导致Bucket List缓慢的问题

用S3接口对一个有大量对象的Bucket进行List操作时,一般是先调一次API列出几百调记录,然后在根据上一次API调用返回的marker继续列出后续的记录,如此反复直到Bucket中的所有对象被穷举完。
有一次,对一个大Bucket进行这样的操作时,我们注意到,前几次API调用都很快返回,然后中间有一次调用却耗时非常久,其后的API调用又恢复了较快返回。
从RGW的日志中发现,在执行耗时很久的那个操作时,RGW在过滤Bucket Index中的几万条以_multipart为前缀的记录。原来Bucket Index不只存放着用户可见的对象的列表(直接以对象名为key),对于未完成的分片上传的每一个分片也保留了记录(它们的key是以_multipart为前缀)。这些key在Bucket Index中是按字符串升序排列的。ASCII的数字和大写字母排在_之前,小写字母排在_之后。所以,前几个API调用还没有遇到_multipart,RGW只需要把Bucket Index中的entry读出直接返回个客户段即可。但当遇到以_multipart为前缀的key时,RGW就得逐一过滤掉这样的对象,这也就是那个耗时最久的操作所做的事。在走过所有_multipart为前缀的记录后,RGW的逻辑就又恢复到了以前的模式,所以相应速度又变快了。
所以,对于中断的分片上传,应当及时调用AbortMultipart操作,否则日积月累会严重影响List的速度。当然,RGW应该也有优化的空间,比如见到_multipart前缀时,直接换一个能够直接跳过所有_multipart前缀的marker,这样就不必一条一条过滤了。

非法字符导致Bucket List失败的问题

s3cmd ls bucket-x和s3 -u list bucket-x出错,报XML解析失败,但使用curl发出同样的请求,却可以收到HTTP 200的返回。通过查看curl所返回的XML发现,有的对象名含有(对应ASCII中的退格键)。原来%08在URL中是合法的,但根据https://www.w3.org/TR/REC-xml/#charsets 退格键不是XML中的合法字符。可见,RGW没有根据XML的标准对上传对象的名字进行校验,导致某些客户端能够使用含有非法字符的对象名上传对象。而且,这样的对象也无法用s3cmd或s3命令删除,因为它们都会在发出HTTP请求前把输入的非法字符替换掉。一个简单的清理方法是使用curl构造S3请求进行删除。以下是个例子:

host=127.0.0.1:7480
# %08 is backspace
file=abc%08def
bucket=bucket-x
resource="/${bucket}/${file}"
contentType="text/plain"
dateValue=`date -R -u`
stringToSign="DELETE

${contentType}
${dateValue}
${resource}"
s3Key=aaaaa
s3Secret=bbbbb
signature=`/bin/echo -n "$stringToSign" | openssl sha1 -hmac ${s3Secret} -binary | base64`
curl -X DELETE \
  -H "Date: ${dateValue}" \
  -H "Content-Type: ${contentType}" \
  -H "Authorization: AWS ${s3Key}:${signature}" \
  http://${host}/${bucket}/$file

当然,如果RGW返回的是JSON格式而不是XML,就不会遇到该问题。但RGW没有配置选项能够使其从XML切换到JSON的选项。从代码观察,对XML的使用是hard-code的,那么JSON格式的逻辑可能也缺乏测试。所以从稳定性角度考虑,目前也不太适合直接使用JSON格式。

【ceph】Ceph之PG状态详解--研读笔记 原文:分布式存储Ceph之PG状态详解 - 简书 1. PG介绍 继上次分享的《Ceph介绍及原理架构分享》,这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: 在架构层次上,PG位于RADOS层的中间。 a. 往上负责接收和处理来自客户端的请求。 b. 往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。 是组成存储池的基本单位,存储池中的很多特性,都是直接依托于PG实现的。 面向容灾域的备份策略使得一般而言的PG需要执行跨节点的分布式写 阅读详情

相关推荐

基于ceph-deploy部署Ceph 集群

基于ceph-deploy部署Ceph 集群

m0_71593537的博客 1911

避坑指南:Ceph RBD性能测试中常见的5个误区与解决方案

本文深入剖析Ceph RBD性能测试中的5个常见误区,包括缓存陷阱、同步模式误用、网络瓶颈、条带化配置不当及测试工具选择错误,并提供专业解决方案。通过实战案例和性能调优建议,帮助用户准确评估和提升Ceph集群性能,避免数据失真和资源浪费。

weixin_29211309的博客 344

Ceph-deploy搭建ceph集群

Ceph可用于为云平台提供Ceph对象存储、块存储、文件系统存储。所有Ceph存储集群部署都从设置每个Ceph节点开始,然后设置网络块存储RedismasterslavezookeeperMysqlmasterslavecephFS对象存储Ceph存储集群需要以下内容:至少一个和至少一个,以及至少与Ceph集群中存储的给定对象的副本一样多的Ceph对象存储守护进程(OSD)(例如,如果给定对象的三个副本存储在Ceph集群中,则该Ceph集群中必须至少存在三个OSD)

qq_31055683的博客 1925

ceph 版本升级_Ceph V10.2.0 Jewel正式版本发布

本文由Ceph中国社区-半天河翻译,Devin校稿英文出处:官网release-notes欢迎加入翻译组此次主版本的更新将是下一个长期稳定发行版的基础版本。在Infernalis(9.2.X)版本和Hammer(0.94.X)版本后,我们做了许多重大修改,而且更新过程并不简单哦,请仔细阅读版本说明。在Infernalis版本上进行的重要修改CephFS这是第一个CephFS宣称稳定并且生产就绪的...

weixin_30946627的博客 717

【Ceph】基于ceph-deploy部署Ceph集群详解

我们相恋的季节,从夏天到冬天,记忆一页页翻阅,你却留下了思念。

陌上花开,静待绽放! 1413

Ceph:关于 Ceph 存储集群配置的一些笔记(7)

集群网络配置集群监视器(MON)配置和引导程序选项集群身份验证配置守护进程的配置选项编译后的默认值集中式配置数据库保存在本地主机上的配置文件环境变量命令行参数运行时将覆盖监视器(MON)节点管理集中的配置数据库,在启动时,Ceph 守护进程通过命令行选项解析环境变量和本地集群配置文件提供的配置选项,守护进程然后联系MON集群以检索存储在集中配置数据库中的配置设置。Red Hat Ceph Storage 5 已降级配置文件,使集中配置数据库成为存储配置设置的首选方式。

山河已无恙 2111

Ceph14.2.22集群部署及踩坑指南(纯内网环境,无yum源、无时间同步)

关于第一次部署ceph,之前的话,只是新建用户,分配空间,没有自己的部署过,实际的生产运维经验也比较少,最多的也就是之前做过一次ceph到阿里云OSS的数据迁移。因为是内网环境,除了可以上传一些包之外,与外网基本是隔绝的,而且操作界面也是很不适应,本来以为很快就可以搞定的,但实际用了几乎一下午的时间才搞定,遇到了一些坑,还好在周五下班前搞定了。这篇文章简单记录下,有同样疑问的,可以直接私信。♦️准备工作。...

smallbird108的专栏 1533

ceph搭建及使用详解

第1章 ceph介绍 1.1 Ceph的主要特点 统一存储 无任何单点故障 数据多份冗余 存储容量可扩展 自动容错及故障自愈 1.2 Ceph三大角色组件及其作用 在Ceph存储集群中,包含了三大角色组件,他们在Ceph存储集群中表现为3个守护进程,分别是Ceph OSD、Monitor、MDS。当然还有其他的功能组件,但是最主要的是这三个。 Ceph OSD Ceph的OSD(Object Storage Device)守护进程。主要功能包括:存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,并将

weixin_40548182的博客 1万+

Ceph蹚坑笔记 - (1)

关于ceph osd rm的行为初探

JeegnChen的博客 2750

Ceph:关于Ceph 集群如何访问的一些笔记(3)

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》

山河已无恙 1703

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1368

Ceph蹚坑笔记 - (3)

RGW的数据丢失和存储空间泄漏问题

JeegnChen的博客 3405

若依RuoYi文件上传漏洞实战:如何安全配置/profile/upload路径(附避坑指南)

本文深入解析若依RuoYi框架中/profile/upload路径的文件上传漏洞,提供详细的安全配置方案和实战指南。通过权限修正、输入验证强化和存储隔离等多层防御策略,有效防范未授权访问和恶意文件上传风险,保障系统安全。

pink的博客 778

Ceph蹚坑笔记 - (4)

使用radosgw-agent过程中见到的一些问题

JeegnChen的博客 1345

闲置服务器之代理服务器篇

这台服务器是在阿里云免费白嫖的,天工开物计划,阿里给的300块无门槛优惠券,买了一台新加坡的境外服务器,288,刚刚抵扣完,因为是境外服务器,能够访问一些国内不能访问的网站,所以本文章仅从技术的角度来搭建代理服务器,使用时,请自觉遵守国家相关规定,如有任何违法行为,与本人无任何关系!!!。本文使用tinyproxy来搭建代理服务器。

m0_50281408的博客 2104

使用再生龙还原镜像文件到硬盘

1. 把制作好的再生龙光盘插入需要的电脑,开机按F4使用再生龙启动2. 选择默认的:Clonezailla live(Default settings,VGA 800*600),然后等待几分钟 3. 选择语言:简体中文 4. 选择不修改键盘映射 5. 选择使用再生龙          6. 选择硬盘/分区(存到/来自)镜像文件,此选项既可以制作镜像,也可以恢复镜像。 7. 使用本机的分区     ...

weixin_42168893的博客 1万+

【Ceph】Ceph介绍、原理、架构

Ceph技术栈/学习图谱

我的笔记本 1万+

雷达仿真:FMCW TDMA-MIMO 3D点云获取方法

2 信号建模摘要:通过设置时分复用(TDMA)波形结合FMCW毫米波雷达仿真获取目标的距离、速度和方位角3D点云信息。在本案例中,首先通过发射天线交替发射FMCW波形并通过接收天线依次接收回波信号从而得到雷达原始数据,其次对获取的原始数据依次经行距离、速度、角度估计从而输出目标的3D点云。阅读本文档,你将对TDMA-MIMO雷达的基本原理、毫米波雷达距离估计、速度估计以及角度估计的基本原理有所了解,另外CA-CFAR恒虚警以及MUSIC-DOA估计在本案例中也有所涉及。1 TDMA-MIMO原理。

Poulen的博客 6958

Proxmox ve 6.2 集群中Ceph的部署

Proxmox ve 6.2 集群中Ceph的部署 一、Ceph简介 Ceph 是一个高性能、高可靠、高可扩展的分布式对象存储和文件系统。 Proxmox VE 集成的 Ceph 优势有: 可以通过 CLI 和 GUI 轻松安装管理 支持薄模式存储 支持快照 自动修复 容量最大可扩充至 exabyte 级别 支持多种性能和冗余级别的存储池 多副本,高容错 可在低成本硬件运行 无需硬件 raid 控制器 开源软件 二、Ceph的安装 web向导安装 PS:向导安装ceph,安装过程中窗口关闭会终端安装

ggeol的博客 2271

RK3588 C-PHY摄像头驱动升级踩坑记:从‘Only CSI2 supported’报错到成功取流

本文详细记录了在RK3588平台上调试C-PHY摄像头驱动的全过程,从‘Only CSI2 supported’报错分析到成功取流。内容涵盖C-PHY与CSI-2协议差异、SDK版本对比、V4L2框架下的bus-type解析机制,以及硬件排查与寄存器调优实战经验,为嵌入式Camera驱动工程师提供宝贵参考。

weixin_42522374的博客 123

ABAP OO - ALV_TREE例程

项目上比较少有用到ALV_TREE的报表功能,刚好项目上有写了一次,也查阅大量的范例,整合了一写法,给自己做一下笔记。 程序包含功能按钮,按钮下拉,F4帮助,读取选中行,字段双击触发事件,字段前置图标,更新节点,获取节点数据,获取全部子节点,递归算法,DMS模块:创建文档功能,创建文档链接,SNRO创建流水号,缓存数据,下次用户加载进来继续操作。 *&---------------------------------------------------------------------* *&a

大步甩起来 4989

centos7.2 搭建ceph集群

centos7.2 搭建ceph集群 最近正在学习Kubernetes,搭建Kubernetes。看到可以使用harbor和cephfs配合搭建docker私有仓库。于是学习搭建ceph集群。 环境介绍 使用腾讯云的两台两台主机操作系统的和版本内核为: centos 7.2 、Linux 3.10.0-693.el7.x86_64。ceph 采用ceph version 10.2.10。

zcc_heu的博客 6322

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 579

Ceph集群部署

本节内容: Ceph集群部署。

qq_45817836的博客 2310

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

在Ubuntu20.04下基于ceph-deploy部署ceph 16.2.10

Ceph 是一个开源的分布式存储系统, 同时支持对象存储、 块设备、 文件系统。ceph 支持 EB(1EB=1,000,000,000GB)级别的数据存储, ceph 把每一个待管理的数据流(文件等数据)切分为一到多个固定大小(默认 4 兆)的对象数据, 并以其为原子单元(原子是构成元素的最小单元)完成数据的读写。

Operational_0624的博客 2001

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ceph 笔记

Ceph是一个开源的分布式存储系统,具有以下优势和特点:可扩展性:Ceph可以轻松地扩展到大规模的存储集群,支持数百或数千个节点,并能够处理PB级别的数据。弹性和高可用性:Ceph采用了复制和纠删码等机制来保证数据的弹性和高可用性。它在集群中自动复制数据副本,并且能够容忍多个故障或节点失效。统一的存储系统:Ceph提供了统一的接口和命名空间,使用户可以以各种方式访问数据,包括对象存储、文件系统和块设备。这简化了应用程序与存储交互的复杂性。自我管理:Ceph具有自动管理和自恢复的功能。

怨行客 966

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: Ceph蹚坑笔记 - (1)
下一篇: Ceph蹚坑笔记 - (3)
静夜恒辰
博客等级 码龄12年 8粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值