- 博客(89)
- 收藏
- 关注
原创 Ceph 数据复制算法和Raft数据一致性算法对比分析
Ceph分布式存储系统基于底层的RADOS分布式对象存储系统来完成数据的复制,数据恢复和数据的动态扩容和缩容。本文针对RADOS的数据复制算法和流行的Raft算法做对比分析,试图分析其优劣缺点,提出相关的优化建议。详情可以查看这里。...
2020-05-25 18:29:12
695
原创 京东 ChubaoFS 分布式文件系统分析
ChubaoFS(CFS)是京东开发的一分布式文件系统和对象存储系统。其主要声称是云原生的分布式文件系统,主要用于k8s容器环境。CFS是一个分布式的文件系统,支持多元数据服务器,支持posix接口(目前一些接口不支持),支持数据的append写和overwrite写模式,支持大文件和小文件的高性能读写。由于研发的初衷主要用于docker容器环境,其主要需求如下:1)容器的支持化存储, 当容器销毁数据也可以存在。2)不同的容器可以并发访问同一个文件 3)存储资源不同的服务和应用程序共享。也就是需要一个可
2020-05-13 14:11:18
893
原创 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
1256
原创 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
780
原创 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
824
原创 Ceph Async 网络通信源代码分析(一)
在Ceph的网络通信模块里,早期一直使用 Simple 这个网络通信模块。由于其实现简单,最早被ceph采用并用于生产环境。其最大的缺陷是:针对每个Connection创建两个线程,一个用于接收消息,一个用于发送消息。在大规模的集群环境下,随着连接数的增多会产生大量的用于通信的线程,极大的影响性能。ceph在L版本中把Async网络通信模型做为默认的通信方式。Async实现了IO的多路复用,使...
2018-04-15 00:54:23
1447
原创 云计算大会超融合论坛分享
今天有四家公司分别演讲。联想第一家公司是联想,其产品为ThinkCloudAIO ,分别有两个型号:H1000 产品: openstack + kvm + ceph , 这个是自己研究开发的产品。上次cephdays和联想的人聊,其目前基于Ceph存储研发团队包括测试达到50人左右。2016年才开始发力。还有基于ceph产品推出的企业级网盘产品。H3000 产品, 自称是OEM...
2018-02-12 17:40:56
962
原创 云计算环境中关于 rbd cache 的启用
磁盘Cache设置分析定义本文指的磁盘Cache(或者Disk Cache)指的是磁盘驱动器内部的写Cache,其为易失型Cache,断电数据会丢失。大约16~128M大小。何时同步系统调用fsync/fdatsync/sync都会把数据从内存刷回到磁盘,并且在文件系统barrier选项开启后,也会同时把数据从disk cache 刷回到磁盘。依据如下:fsync系统...
2018-02-12 17:16:10
1651
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
2933
3
原创 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
2939
原创 关于Ceph的EC实现rollback的两个问题
今天又人问了我两个关于EC的问题,这是个比较好的问题,就在这里写篇博客解答,希望对大家理解EC有帮助。1)EC 在 remove object的时候,考虑到回滚,不是马上删除,那么什么时刻真正删除? 2) 回滚机制如何触发? 问题1:什么时候真正删除对象? 字段 min_last_complete_ondisk 用来记录 该PG的所有 osd中最小提交的版本号,也就是小于该版本的rollback对
2017-05-19 00:45:49
4567
原创 Ceph中出现unfound object的情况和处理
在上周的ceph-devel 邮件列表中,有人提到了在测试的环境中出现了 unfound object 的状态,本文试图分析这种情况发生的原理。首先介绍一下什么是 unfoud object ? unfoud object 对象就是 完成了peering 过程,各个副本达成了一致的状态。 简单的说,就是在副本中确定了对象的正确的版本。 在recovery 过程中,要去确定该正确的版本对象 所在的os
2016-10-17 00:09:26
4296
1
原创 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
1915
原创 ceph中 up_thru 的 作用
up_thruup_thru的概念的引入,是为了解决当断电,或者其它原因,同时导致两个以上的osd处于down,但是monitor在两次epoch 中检测到了这种状态, 从而导致monitor认为它们是先后down掉,后down 的osd 有可能产生数据的更新,这导致需要等待该osd的恢复,否则有可能产生数据丢失。
2016-04-21 10:32:04
2191
2
原创 Ceph 网络通信源代码分析
对于一个分布式存储系统,需要一个稳定的底层网络通信模块,用于各个节点的之间的互联互通。对于一个网络通信系统,要求:高性能 性能评价的两个指标: 带宽和延迟稳定可靠 在网络中断时,实现重连。数据不丢包在msg的子目录下, 分别对应三种不同的实现方式:Simple, Async, XIO Simple是相对比较简单,目前可以在生产环境中使用的模式。 它最大的特点是,每一个链接,都创建两个线程,
2016-03-17 17:19:46
5212
转载 FreeStor究竟能够有多Free
FreeStor究竟能够有多Free宋家雨 有人说软件定义存储是存储虚拟化的翻版,对此我曾经撰文指出,软件定义存储不是存储虚拟化的“马甲”(详见:软件定义存储不是谁的“马甲”),实际上,二者各有侧重。其中,存储虚拟化强调不同品牌存储阵列的一体化管理问题,主要解决数据中心多种品牌磁盘阵列的异构问题;而软件定义存储更强调“去磁盘阵列”化,与融合存储异曲同工。 超越存储资源调度管理
2015-12-14 22:56:52
1032
原创 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
2620
1
原创 Ceph快照的原理和实现
ceph的基本的特性之一,就是支持rbd的snapshot和clone功能。Ceph都可以完成秒级别的快照。ceph支持两种类型的快照,一种是pool级别的快照,是给整个pool中的对象整体做一个快照。另一个是rbd级别的快照的,给单个rbd的volume做一个快照。ceph目前并没有给单独的对象做一个快照。无论是pool级别的快照,还是rbd的快照,其实现的基本原理都是相同的。都是基于对象COW(
2015-12-05 13:29:16
14266
3
原创 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
7549
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
5634
原创 Ceph 参数性能调优
Ceph 参数性能调优Ceph调优参数网络的各种Ceph参数的优化比较多,有些有效果,有些在某些场景下不但达不到预期的效果,反而有相反的效果。很多参数如果不了解其意义,面对不同的应用场景就显得无所适从,所以有必要简单的了解一下相关的原理。Ceph的基本原理Ceph数据写流程[Image: file:///C:/-/blob/OQTAAAFdkNu/zXnOzzbyZdE5oKS
2015-11-18 14:53:16
11280
原创 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
4277
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
12805
8
原创 ceph weight 和 reweight的区别
用cephosdtree命令查看ceph集群,会发现有weight和reweight两个值weight权重和磁盘的容量有关,一般1T,值为1.000,500G就是0.5其和磁盘的容量有关系,不因磁盘可用空间的减少而变化其可以通过以下命令设置cephosdcrushreweightReweight是一个0到1之间的值,可以用以下
2015-10-12 14:40:34
7049
原创 Ceph OS模块介绍及读写流程分析
Ceph的os模块,也就是ObjectStore模式,是Ceph对象存储的底层的存储机制。它是单机版的存储。基本功能如下:1) 提供底层对象的随机读写2) 保证读写数据的一致性 其功能主要包括以下几个模块:FileStore ObjectStore是对象存储的接口,主要包括对象读写,对象属性的get和set操作。JournalingObjectStore 继承了O
2015-10-12 09:42:59
4716
2
原创 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
3879
原创 Ceph radosgw 安装配置
Ceph radosgw 安装配置Ceph radosgw对象存储的接口,研究配置了许久,先分享如下。首先配置的前提是,你成功的配置了Ceph集群,通过ceph –s 查看ceph集群,处于health状态。在这里,我们这种集群的有个auth的配置为none,所以有关auth的部分也就是有关keying的,这里省略。1)创建rgw相关的pool ceph osd pool create .rgw
2015-08-27 00:20:24
12838
转载 转型中的全闪阵列
2015-07-08 当前的全闪存储阵列产品已不再一味以高I/O性能为诉求,开始讲求扩展性、数据服务与更多样化的应用,朝向高性能通用存储设备发展。以往,完全以Flash闪存储器组成的全闪存储阵列(All Flash Array),只有一个单纯任务——提供最高I/O性能的存储空间。因此全闪存储阵列供应商们的竞争焦点,也放在性能上,竞相以提供更高的IOPS性能为目标,对其他面向的需求着墨不多。由于定
2015-07-19 01:50:58
1527
转载 高端存储技术与应用趋势
高端存储技术与应用趋势西瓜哥 发表于:14年06月17日 18:22 [来稿] 存储在线西瓜哥高端存储分享:[导读]我们一般把广义高端存储里面支持SAN的存储系统叫狭义的高端存储,或者叫高端SAN。因为企业最关键的数据资产一般是结构化数据,常见的选择是保存在高端的SAN系统里。2010年之前,高端存储主要是与大
2014-10-08 23:18:53
1226
转载 Spark:一个高效的分布式计算系统
Spark:一个高效的分布式计算系统Posted by jzou on 2013 年 9 月 10 日Tweet6概述什么是SparkSpark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同
2014-01-09 12:01:21
2809
转载 数据库如何抵抗随机IO:问题、方法与现实
随机IO几乎是令所有DBA谈虎色变的一个问题,这个问题,往往在数据量小的时候不出现,在数据量超过内存大小时,才陡然出现,令没有经验的DBA促不及防,也令有经验的DBA寝食难安。传统的数据库架构对随机IO几乎没有还手之力。传统数据库的核心通常是页级缓存、B+树、堆或索引组织表,这些机制,对随机IO的抵抗能力,都无一例外的可悲的差。页级缓存有很强的“连坐”效应,就是为了要缓存一条有价值的记录,
2013-06-18 15:20:59
1215
转载 B tree and LSM tree
本文主要介绍了B+ tree和LSM tree,从seek和transfer的角度看Hbase为什么选择了LSM tree,而不是像大多数RDBMS那样使用B+ tree,在Hbase里面LSM tree这种结构其实就是由HLog + Memstore + StoreFile构成,HLog保存了顺序写入磁盘的日志,Memstore能够保存最近的数据,StoreFile负责存储Memstore fl
2013-06-18 10:57:52
1203
转载 分布式文件系统元数据服务模型
随着非结构化数据的爆炸,分布式文件系统进入了发展的黄金时期,从高性能计算到数据中心,从数据共享到互联网应用,已经渗透到数据应用的各方各面。对于大多数分布式文件系统(或集群文件系统,或并行文件系统)而言,通常将元数据与数据两者独立开来,即控制流与数据流进行分离,从而获得更高的系统扩展性和I/O并发性。因而,元数据管理模型显得至关重要,直接影响到系统的扩展性、性能、可靠性和稳定性等。存储系统要具有很高
2013-06-09 16:05:04
2039
转载 集群存储高可用方法
原文:http://blog.csdn.net/liuben/article/details/8882141云存储和大数据背景下,数据呈现爆炸式增长趋势。根据研究显示,2020年数字宇宙将达到35.2 ZB,比2009年的0.8 ZB猛增44倍,这其中80%以上为非结构化数据。高性能计算、医学影像、石油和天然气勘探、数字媒体和社会化WEB等大量数据密集型应用导致数据的井喷,不断对存储方法提
2013-06-07 14:27:10
1135
转载 Huffman 编码压缩算法
前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法。相信大家应该听说过 David Huffman 和他的压缩算法—— Huffman Code,一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树。从学校毕业很长时间的我忘了这个算法,但是网上查了一下,中文社区
2013-06-07 13:49:22
535
转载 高效存储技术研究
高效存储技术研究1 引言物质、能量和信息是自然科学研究的三个基本对象,处理、传输和存储是信息计算的三大基本任务。随着信息化技术水平的不断提高,数据已经取代计算成为了信息计算的中心,数据将成为企业最终有价值的财富。1998年图灵奖获得者Jim Gray曾断言:现在每18个月新增的存储量等于有史以来存储量之和。根据预测,2020年数据宇宙将达到35.2 ZB(1 ZB = 1百万PB),比20
2013-06-07 11:08:46
3948
转载 两阶段提交
两阶段提交协议(two phase commit protocol,2PC)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定提交或取消(回滚)的分布式算法。同时也是解决一致性问题的一致性算法。该算法能够解决很多的临时性系统故障(包括进程、网络节点、通信等故障),被广泛地使用。但是,它并不能够通过配置来解决所有的故障,在某些情况
2013-06-04 16:21:05
674
转载 P2P网络中DHT算法分析
本文首先从P2P的定义出发,介绍了结构化P2P与非结构化P2P的区别以及结构化P2P的核心技术DHT。而后,本文深入介绍了几种主流的DHT算法与协议并对每种协议进行了讨论。文章的最后展望了DHT在未来的发展趋势。对等网络(Peer-to-Peer,简称P2P)是目前非常热门的应用,自1999年以来,P2P的研究一直是国外知名学府(如美国麻省理工学院,加州大学伯克利分校和莱斯大学等)以及知名
2013-05-30 17:16:42
10498
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人