自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

changtao381的专栏

ceph 分布式存储技术

  • 博客(91)
  • 收藏
  • 关注

原创 CephFS文件系统的快照原理

每当在新的目录创建快照时(或当快照索引节点移动到其父快照之外时),都会创建SnapRealm。目录的元数据的快照,最简单的实现方式,就是通过把该目录的meta data拷贝一份出来既可。如果对该目录的父目录做快照操作,该快照操作对该目录是有影响的:对父目录做了快照,自己本身也是快照的一部分。对应文件系统的目录的快照,分两个部分:元数据的快照和数据的快照。COW的机制:对目录做快照操作,仅仅是对目录做标记,对该目录做修改时,才实际完成拷贝数据的动作。也就是支持一个目录的快照,同时支持子目录的快照。

2025-04-05 07:30:00 886

原创 CephFS物理存储结构

超过一个Object大小的,其扩展的Object也是存储在一起,依次读就可以获得Dentry和Inode信息,将此信息缓存并使用LRU算法进行淘汰。当进行目录重命名时,可能会影响整个链上的Inode,此时就需要一个事务来保证整个链上相关的Inode同时进行更新,将旧的Ref计数减少,新的Ref计数删除。当存在硬链接时,第一个指向Inode的Dentry被称为Primary Dentry,后续的被称为Remote Dentry。CephFS的inode和dentry的存储和传统的不太一样。

2025-04-01 11:41:44 327

原创 对象存储之:多版本

对象存储的多版本相关的概念和原理介绍

2022-10-27 10:55:04 1128

原创 Crimson: evolving Ceph for high performance NVMe

ceph seastar, crimson

2022-08-05 09:23:50 491

原创 Ceph 数据复制算法和Raft数据一致性算法对比分析

Ceph分布式存储系统基于底层的RADOS分布式对象存储系统来完成数据的复制,数据恢复和数据的动态扩容和缩容。本文针对RADOS的数据复制算法和流行的Raft算法做对比分析,试图分析其优劣缺点,提出相关的优化建议。详情可以查看这里。...

2020-05-25 18:29:12 810

原创 京东 ChubaoFS 分布式文件系统分析

ChubaoFS(CFS)是京东开发的一分布式文件系统和对象存储系统。其主要声称是云原生的分布式文件系统,主要用于k8s容器环境。CFS是一个分布式的文件系统,支持多元数据服务器,支持posix接口(目前一些接口不支持),支持数据的append写和overwrite写模式,支持大文件和小文件的高性能读写。由于研发的初衷主要用于docker容器环境,其主要需求如下:1)容器的支持化存储, 当容器销毁数据也可以存在。2)不同的容器可以并发访问同一个文件 3)存储资源不同的服务和应用程序共享。也就是需要一个可

2020-05-13 14:11:18 986

原创 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 1368

原创 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 836 1

原创 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 903

原创 Ceph Async 网络通信源代码分析(一)

在Ceph的网络通信模块里,早期一直使用 Simple 这个网络通信模块。由于其实现简单,最早被ceph采用并用于生产环境。其最大的缺陷是:针对每个Connection创建两个线程,一个用于接收消息,一个用于发送消息。在大规模的集群环境下,随着连接数的增多会产生大量的用于通信的线程,极大的影响性能。ceph在L版本中把Async网络通信模型做为默认的通信方式。Async实现了IO的多路复用,使...

2018-04-15 00:54:23 1535 1

原创 云计算大会超融合论坛分享

今天有四家公司分别演讲。联想第一家公司是联想,其产品为ThinkCloudAIO ,分别有两个型号:H1000 产品: openstack + kvm + ceph , 这个是自己研究开发的产品。上次cephdays和联想的人聊,其目前基于Ceph存储研发团队包括测试达到50人左右。2016年才开始发力。还有基于ceph产品推出的企业级网盘产品。H3000 产品, 自称是OEM...

2018-02-12 17:40:56 1052

原创 云计算环境中关于 rbd cache 的启用

磁盘Cache设置分析定义本文指的磁盘Cache(或者Disk Cache)指的是磁盘驱动器内部的写Cache,其为易失型Cache,断电数据会丢失。大约16~128M大小。何时同步系统调用fsync/fdatsync/sync都会把数据从内存刷回到磁盘,并且在文件系统barrier选项开启后,也会同时把数据从disk cache 刷回到磁盘。依据如下:fsync系统...

2018-02-12 17:16:10 1878 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 3094 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 3124

原创 关于Ceph的EC实现rollback的两个问题

今天又人问了我两个关于EC的问题,这是个比较好的问题,就在这里写篇博客解答,希望对大家理解EC有帮助。1)EC 在 remove object的时候,考虑到回滚,不是马上删除,那么什么时刻真正删除? 2) 回滚机制如何触发? 问题1:什么时候真正删除对象? 字段 min_last_complete_ondisk 用来记录 该PG的所有 osd中最小提交的版本号,也就是小于该版本的rollback对

2017-05-19 00:45:49 4666

原创 Ceph中出现unfound object的情况和处理

在上周的ceph-devel 邮件列表中,有人提到了在测试的环境中出现了 unfound object 的状态,本文试图分析这种情况发生的原理。首先介绍一下什么是 unfoud object ? unfoud object 对象就是 完成了peering 过程,各个副本达成了一致的状态。 简单的说,就是在副本中确定了对象的正确的版本。 在recovery 过程中,要去确定该正确的版本对象 所在的os

2016-10-17 00:09:26 4550 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 2015

原创 ceph中 up_thru 的 作用

up_thruup_thru的概念的引入,是为了解决当断电,或者其它原因,同时导致两个以上的osd处于down,但是monitor在两次epoch 中检测到了这种状态, 从而导致monitor认为它们是先后down掉,后down 的osd 有可能产生数据的更新,这导致需要等待该osd的恢复,否则有可能产生数据丢失。

2016-04-21 10:32:04 2310 2

原创 Ceph 网络通信源代码分析

对于一个分布式存储系统,需要一个稳定的底层网络通信模块,用于各个节点的之间的互联互通。对于一个网络通信系统,要求:高性能 性能评价的两个指标: 带宽和延迟稳定可靠 在网络中断时,实现重连。数据不丢包在msg的子目录下, 分别对应三种不同的实现方式:Simple, Async, XIO Simple是相对比较简单,目前可以在生产环境中使用的模式。 它最大的特点是,每一个链接,都创建两个线程,

2016-03-17 17:19:46 5320

转载 FreeStor究竟能够有多Free

FreeStor究竟能够有多Free宋家雨  有人说软件定义存储是存储虚拟化的翻版,对此我曾经撰文指出,软件定义存储不是存储虚拟化的“马甲”(详见:软件定义存储不是谁的“马甲”),实际上,二者各有侧重。其中,存储虚拟化强调不同品牌存储阵列的一体化管理问题,主要解决数据中心多种品牌磁盘阵列的异构问题;而软件定义存储更强调“去磁盘阵列”化,与融合存储异曲同工。  超越存储资源调度管理 

2015-12-14 22:56:52 1080

原创 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 2712

原创 Ceph快照的原理和实现

ceph的基本的特性之一,就是支持rbd的snapshot和clone功能。Ceph都可以完成秒级别的快照。ceph支持两种类型的快照,一种是pool级别的快照,是给整个pool中的对象整体做一个快照。另一个是rbd级别的快照的,给单个rbd的volume做一个快照。ceph目前并没有给单独的对象做一个快照。无论是pool级别的快照,还是rbd的快照,其实现的基本原理都是相同的。都是基于对象COW(

2015-12-05 13:29:16 14970 4

原创 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 7677 4

原创 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 5774

原创 Ceph 参数性能调优

Ceph 参数性能调优Ceph调优参数网络的各种Ceph参数的优化比较多,有些有效果,有些在某些场景下不但达不到预期的效果,反而有相反的效果。很多参数如果不了解其意义,面对不同的应用场景就显得无所适从,所以有必要简单的了解一下相关的原理。Ceph的基本原理Ceph数据写流程[Image: file:///C:/-/blob/OQTAAAFdkNu/zXnOzzbyZdE5oKS

2015-11-18 14:53:16 11495

原创 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 4341 1

原创 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 13082 8

原创 ceph weight 和 reweight的区别

用cephosdtree命令查看ceph集群,会发现有weight和reweight两个值weight权重和磁盘的容量有关,一般1T,值为1.000,500G就是0.5其和磁盘的容量有关系,不因磁盘可用空间的减少而变化其可以通过以下命令设置cephosdcrushreweightReweight是一个0到1之间的值,可以用以下

2015-10-12 14:40:34 7244

原创 Ceph OS模块介绍及读写流程分析

Ceph的os模块,也就是ObjectStore模式,是Ceph对象存储的底层的存储机制。它是单机版的存储。基本功能如下:1) 提供底层对象的随机读写2) 保证读写数据的一致性 其功能主要包括以下几个模块:FileStore  ObjectStore是对象存储的接口,主要包括对象读写,对象属性的get和set操作。JournalingObjectStore 继承了O

2015-10-12 09:42:59 4798 1

原创 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 3957

原创 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 13078

转载 转型中的全闪阵列

2015-07-08 当前的全闪存储阵列产品已不再一味以高I/O性能为诉求,开始讲求扩展性、数据服务与更多样化的应用,朝向高性能通用存储设备发展。以往,完全以Flash闪存储器组成的全闪存储阵列(All Flash Array),只有一个单纯任务——提供最高I/O性能的存储空间。因此全闪存储阵列供应商们的竞争焦点,也放在性能上,竞相以提供更高的IOPS性能为目标,对其他面向的需求着墨不多。由于定

2015-07-19 01:50:58 1604

转载 高端存储技术与应用趋势

高端存储技术与应用趋势西瓜哥 发表于:14年06月17日 18:22 [来稿] 存储在线西瓜哥高端存储分享:[导读]我们一般把广义高端存储里面支持SAN的存储系统叫狭义的高端存储,或者叫高端SAN。因为企业最关键的数据资产一般是结构化数据,常见的选择是保存在高端的SAN系统里。2010年之前,高端存储主要是与大

2014-10-08 23:18:53 1282

转载 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 2835

转载 数据库如何抵抗随机IO:问题、方法与现实

随机IO几乎是令所有DBA谈虎色变的一个问题,这个问题,往往在数据量小的时候不出现,在数据量超过内存大小时,才陡然出现,令没有经验的DBA促不及防,也令有经验的DBA寝食难安。传统的数据库架构对随机IO几乎没有还手之力。传统数据库的核心通常是页级缓存、B+树、堆或索引组织表,这些机制,对随机IO的抵抗能力,都无一例外的可悲的差。页级缓存有很强的“连坐”效应,就是为了要缓存一条有价值的记录,

2013-06-18 15:20:59 1262

转载 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 1244

转载 分布式文件系统元数据服务模型

随着非结构化数据的爆炸,分布式文件系统进入了发展的黄金时期,从高性能计算到数据中心,从数据共享到互联网应用,已经渗透到数据应用的各方各面。对于大多数分布式文件系统(或集群文件系统,或并行文件系统)而言,通常将元数据与数据两者独立开来,即控制流与数据流进行分离,从而获得更高的系统扩展性和I/O并发性。因而,元数据管理模型显得至关重要,直接影响到系统的扩展性、性能、可靠性和稳定性等。存储系统要具有很高

2013-06-09 16:05:04 2090

转载 集群存储高可用方法

原文: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 1205

转载 Huffman 编码压缩算法

前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法。相信大家应该听说过 David Huffman 和他的压缩算法—— Huffman Code,一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树。从学校毕业很长时间的我忘了这个算法,但是网上查了一下,中文社区

2013-06-07 13:49:22 581

转载 高效存储技术研究

高效存储技术研究1 引言物质、能量和信息是自然科学研究的三个基本对象,处理、传输和存储是信息计算的三大基本任务。随着信息化技术水平的不断提高,数据已经取代计算成为了信息计算的中心,数据将成为企业最终有价值的财富。1998年图灵奖获得者Jim Gray曾断言:现在每18个月新增的存储量等于有史以来存储量之和。根据预测,2020年数据宇宙将达到35.2 ZB(1 ZB = 1百万PB),比20

2013-06-07 11:08:46 4024

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除