ceph
文章平均质量分 61
Jack-changtao
关注并行文件系统,数据库技术,linux kernel ,搜索引擎,分布式计算,BI. 《ceph源代码分析》作者
展开
-
Crimson: evolving Ceph for high performance NVMe
ceph seastar, crimson原创 2022-08-05 09:23:50 · 357 阅读 · 0 评论 -
ceph pool的创建和删除过程
ceph pool的创建和删除过程pool的删除过程ceph中一个pool的删除过程如下:ceph osd pool rm testpool testpool --yes-i-really-really-mean-it命令行请求直接发送请求给monitormonitor接收的请求的处理流程如下:void Monitor::_ms_dispatch(Message *m){ ......原创 2020-03-23 23:22:32 · 1249 阅读 · 0 评论 -
Ceph中出现unfound object的情况和处理
在上周的ceph-devel 邮件列表中,有人提到了在测试的环境中出现了 unfound object 的状态,本文试图分析这种情况发生的原理。首先介绍一下什么是 unfoud object ? unfoud object 对象就是 完成了peering 过程,各个副本达成了一致的状态。 简单的说,就是在副本中确定了对象的正确的版本。 在recovery 过程中,要去确定该正确的版本对象 所在的os原创 2016-10-17 00:09:26 · 4269 阅读 · 1 评论 -
Ceph OSD写操作失效如何处理
正常的写流程在OSD端正常的写操作流程中,在函数ReplicatedBackend::submit_transaction把请求加入到in_progress_ops 队列中map<ceph_tid_t, InProgressOp> in_progress_ops;该map保存了所有正在处理的请求。一个请求必须等到所有的up的osd的请求都返回才能返回给客户端。例如 pg 1.1(osd1原创 2017-05-20 23:22:15 · 2932 阅读 · 0 评论 -
关于Ceph的EC实现rollback的两个问题
今天又人问了我两个关于EC的问题,这是个比较好的问题,就在这里写篇博客解答,希望对大家理解EC有帮助。1)EC 在 remove object的时候,考虑到回滚,不是马上删除,那么什么时刻真正删除? 2) 回滚机制如何触发? 问题1:什么时候真正删除对象? 字段 min_last_complete_ondisk 用来记录 该PG的所有 osd中最小提交的版本号,也就是小于该版本的rollback对原创 2017-05-19 00:45:49 · 4554 阅读 · 0 评论 -
云计算环境中关于 rbd cache 的启用
磁盘Cache设置分析定义本文指的磁盘Cache(或者Disk Cache)指的是磁盘驱动器内部的写Cache,其为易失型Cache,断电数据会丢失。大约16~128M大小。何时同步系统调用fsync/fdatsync/sync都会把数据从内存刷回到磁盘,并且在文件系统barrier选项开启后,也会同时把数据从disk cache 刷回到磁盘。依据如下:fsync系统...原创 2018-02-12 17:16:10 · 1632 阅读 · 1 评论 -
ceph MDS 性能测试分析
Cep MDS 的简单的测试结果,详情请点击公众号: http://mp.weixin.qq.com/s/R8TC-S6h_gHPaokTGTqKeQ结论如下ceph MDS在主处理流程中使用了单线程,这导致了其单个MDS的性能受到了限制,最大单个MDS可达8k ops/s,CPU利用率达到的 140%左右。但这可能也是ceph MDS的优势:单线程使内部不用考虑太复杂的锁机制...原创 2018-02-12 13:11:20 · 2920 阅读 · 3 评论 -
Ceph Async 网络通信源代码分析(一)
在Ceph的网络通信模块里,早期一直使用 Simple 这个网络通信模块。由于其实现简单,最早被ceph采用并用于生产环境。其最大的缺陷是:针对每个Connection创建两个线程,一个用于接收消息,一个用于发送消息。在大规模的集群环境下,随着连接数的增多会产生大量的用于通信的线程,极大的影响性能。ceph在L版本中把Async网络通信模型做为默认的通信方式。Async实现了IO的多路复用,使...原创 2018-04-15 00:54:23 · 1436 阅读 · 0 评论 -
ceph Async 网络通信源代码分析(二)
在上文中,主要介绍了相关的类,本文介绍相关流程。连接相关的流程介绍Server端监听和接受连接的过程这段代码来自 src/test/msgr/perf_msgr_server.cc,主要用于建立Server端的msgr: void start() { entity_addr_t addr; addr.parse(bindaddr.c_str()); ...原创 2018-04-15 01:04:49 · 818 阅读 · 0 评论 -
Linux网络编程模型和Ceph Async 模型探讨
IO多路复用所谓的I/O多路复用,就是可以监控多个socket上的IO请求。允许多个socket在可读或可写准备好时,应用能被通知到,这样应用就可以一次非阻塞的处理多个socket相关的IO请求。 IO多路复用的有三种实现方式:SelectI/O复用模型早期用select实现。int select (int n, fd_set *readfds...原创 2018-04-16 19:09:57 · 776 阅读 · 0 评论 -
ceph pg split
在生产环境里,一个ceph的pool里有大量数据,当添加一些新的osd到集群里时,总是报告WARNING信息,这时为了消除这个告警信息, 就使用一下命令来增加该pool的pg的数量。ceph osd pool set ${pool_name} pg_num 这里就有一个疑问,当pg的数量增加后,对于对象的寻址怎么处理?ceph的对象的寻址是分两步:1) 通过对象的oid 的 hash值,求余数原创 2016-05-25 17:34:58 · 1910 阅读 · 0 评论 -
ceph中 up_thru 的 作用
up_thruup_thru的概念的引入,是为了解决当断电,或者其它原因,同时导致两个以上的osd处于down,但是monitor在两次epoch 中检测到了这种状态, 从而导致monitor认为它们是先后down掉,后down 的osd 有可能产生数据的更新,这导致需要等待该osd的恢复,否则有可能产生数据丢失。原创 2016-04-21 10:32:04 · 2182 阅读 · 2 评论 -
ceph 源代码分析 — peering 过程
get_infosvoid PG::RecoveryState::GetInfo::get_infos()函数get_infos 向prior_set的probe 集合中的每个osd发送pg_query_t::INFO的消息,来获取pg_info信息context< RecoveryMachine >().send_query( peer, pg原创 2015-10-14 15:29:55 · 12757 阅读 · 8 评论 -
ceph weight 和 reweight的区别
用cephosdtree命令查看ceph集群,会发现有weight和reweight两个值weight权重和磁盘的容量有关,一般1T,值为1.000,500G就是0.5其和磁盘的容量有关系,不因磁盘可用空间的减少而变化其可以通过以下命令设置cephosdcrushreweightReweight是一个0到1之间的值,可以用以下原创 2015-10-12 14:40:34 · 7015 阅读 · 0 评论 -
Ceph OS模块介绍及读写流程分析
Ceph的os模块,也就是ObjectStore模式,是Ceph对象存储的底层的存储机制。它是单机版的存储。基本功能如下:1) 提供底层对象的随机读写2) 保证读写数据的一致性 其功能主要包括以下几个模块:FileStore ObjectStore是对象存储的接口,主要包括对象读写,对象属性的get和set操作。JournalingObjectStore 继承了O原创 2015-10-12 09:42:59 · 4710 阅读 · 2 评论 -
Ceph 参数性能调优
Ceph 参数性能调优Ceph调优参数网络的各种Ceph参数的优化比较多,有些有效果,有些在某些场景下不但达不到预期的效果,反而有相反的效果。很多参数如果不了解其意义,面对不同的应用场景就显得无所适从,所以有必要简单的了解一下相关的原理。Ceph的基本原理Ceph数据写流程[Image: file:///C:/-/blob/OQTAAAFdkNu/zXnOzzbyZdE5oKS原创 2015-11-18 14:53:16 · 11241 阅读 · 0 评论 -
ceph 读写路径源代码分析(2)
数据结构MOSDOpOSDOpstruct OSDOp { ceph_osd_op op; sobject_t soid; bufferlist indata, outdata; int32_t rval; OSDOp() : rval(0) { memset(&op, 0, sizeof(ceph_osd_op)); }class原创 2015-12-08 10:27:06 · 2613 阅读 · 1 评论 -
ceph 数据均衡
ceph 数据均衡问题的提出:在ceph集群中,当有新的OSD 添加到集群中,会导致数据移动以达到数据均衡,数据的移动只在旧的OSD和新添加的OSD之间移动,还是旧有的OSD之间也有数据移动?上次Ceph社区交流,有人提到,当有100个OSD时,添加OSD, 旧有的OSD之间会有剧烈的数据移动目前做了一个实验,Ceph 集群有6个 OSD(0,1,2,3,4,5),原创 2015-11-18 14:51:08 · 4269 阅读 · 2 评论 -
Ceph 读写路径源代码分析(1)
dispatch_op_fast 1) 首先调用函数op_required_epoch(op), 从OpRequest中获取 epoch 比较msg的 epoch 的比较 2)msg_epoch > osdmap->get_epoch() 如果 msg 带的epoch 大于osd 最新的epoch,则调用更加自己的epoch,首先检查该请求的链接是否存在,如果不存在,就原创 2015-12-03 15:48:08 · 7526 阅读 · 6 评论 -
Ceph 基本数据结构(1)-object
Ceph的基本的概念就是对象object,在ceph的rados概念中,一个对象就是一个文件系统中的文件,具体在代码实现中,有object, sobject, hobject, ghobject等概念,在阅读ceph 的源代码时,多上述几个概念有点容易理不清。struct object_t { string name; ......}object_t 就是对于的低层文件系统的一个文件,na原创 2015-11-29 22:23:25 · 5618 阅读 · 0 评论 -
Ceph快照的原理和实现
ceph的基本的特性之一,就是支持rbd的snapshot和clone功能。Ceph都可以完成秒级别的快照。ceph支持两种类型的快照,一种是pool级别的快照,是给整个pool中的对象整体做一个快照。另一个是rbd级别的快照的,给单个rbd的volume做一个快照。ceph目前并没有给单独的对象做一个快照。无论是pool级别的快照,还是rbd的快照,其实现的基本原理都是相同的。都是基于对象COW(原创 2015-12-05 13:29:16 · 14227 阅读 · 3 评论 -
Ceph 网络通信源代码分析
对于一个分布式存储系统,需要一个稳定的底层网络通信模块,用于各个节点的之间的互联互通。对于一个网络通信系统,要求:高性能 性能评价的两个指标: 带宽和延迟稳定可靠 在网络中断时,实现重连。数据不丢包在msg的子目录下, 分别对应三种不同的实现方式:Simple, Async, XIO Simple是相对比较简单,目前可以在生产环境中使用的模式。 它最大的特点是,每一个链接,都创建两个线程,原创 2016-03-17 17:19:46 · 5184 阅读 · 0 评论 -
ceph fuse 安装
ceph fuse 的安装ceph 安装的版本是master1) 启动mon 和 osd2)启动 mds先创建一个metadata poolceph osd pool create metadata 64 64创建一个data pool ceph osd pool create data 64 64ceph osd dump原创 2015-09-01 18:16:02 · 3875 阅读 · 0 评论