ceph
文章平均质量分 63
李艳坤
海的尽头是天边,天边在海的尽头。
展开
-
MonClient中的函数
MonClient类位于mon目录下,其功能是负责与monitor交互。//在消息层组件中注册MonClient实例,指定认证方式,初始化keyring,启动定时器int MonClient::init() ...原创 2019-01-08 17:27:54 · 1736 阅读 · 0 评论 -
Ceph Crush 算法源码分析
Ceph Crush算法是Ceph分布式系统中用于数据分布(定位)的核心算法,其核心组件有crush rule、bucket algorithm。crush rule是可以自定义的选择过程,bucket algorithm是从bucket选取item时使用的算法,该算法需要的主要参数有:placement seed(pgid)、crush map、副本数等。本文将简要介绍Ceph Crush算法的实现。原创 2017-01-11 15:57:07 · 2523 阅读 · 1 评论 -
ceph中的序列化
std::mapencode(map A,bufferlist B)1.求出map中的元素个数。 count = A.size() 2.把A元素个数序列化到B中。见整型的序列化 B->count, 3.对A中的元素逐个再次调用encode,序列化到bufferlist B中p = A.begin()encode(p->first, B)encode(p->second, B)这里的p->原创 2016-06-03 11:33:09 · 939 阅读 · 0 评论 -
Ceph cephx认证配置
Ceph cephx认证配置认证注:当更新的时候,建议把认证的注解掉,然后在升级,一旦升级接收就激活认证。 默认情况下cephx协议是打开的,同时认证服务是要一定的计算资源的,如果你的网络环境很安全,你不想使用认证,你也可以把它关掉,但是不建议关掉。如果关闭认证,你就很有可能受到中间人攻击篡改client/server消息,这会导致严重的安全问题。部署情景:有两种主要的部署方式,一个是使用ceph原创 2015-03-25 16:59:07 · 8081 阅读 · 0 评论 -
RBD Image映射到Object
该函数是将更新的image的范围映射到具体的对象上.这个部分涉及到stripe的概念,需要预先了解这个概念(可以参考官网对其的解释)原创 2016-12-29 18:55:09 · 1090 阅读 · 0 评论 -
RBD中回调函数的变迁
rbd中涉及的回调,以写入为例,跟踪回调函数的变迁。原创 2016-12-29 14:46:45 · 1211 阅读 · 0 评论 -
RBD 导出一个image
RBD 导出一个image原创 2016-12-29 14:40:06 · 2277 阅读 · 0 评论 -
RBD中主要的数据结构
RBD中部分主要的数据结构。原创 2016-12-29 14:31:01 · 3724 阅读 · 0 评论 -
RBD AioRequest
RBD librados中AioRequest,以写为例。原创 2016-12-29 14:34:39 · 558 阅读 · 0 评论 -
RBD创建一个image
RBD创建一个image的过程分析。rbd.ccdo_create(librbd::RBD &rbd, librados::IoCtx& io_ctx,const char *imgname, uint64_t size, int *order,int format, uint64_t features, uint64_t stripe_unit, uint原创 2016-12-29 14:32:13 · 2175 阅读 · 0 评论 -
Ceph rbd写入数据
本文简介rbd中数据的写入过程。原创 2016-12-29 11:42:28 · 3633 阅读 · 1 评论 -
创建image时服务端产生的对象
创建一个volume: 如何命名服务端的volume的名字(以format==2为例):原创 2016-12-28 17:43:59 · 424 阅读 · 0 评论 -
Ceph Observer动态更新配置参数
ceph Observer(观察者模式),可以动态的更改系统配置参数,而不需重启服务。原创 2016-12-05 17:20:56 · 1693 阅读 · 0 评论 -
OSD::ms_fast_dispatch
ms_fast_dispatch原创 2016-11-29 14:57:35 · 1319 阅读 · 0 评论 -
ThreadPool的worker函数
threadpool的worker函数,worker函数是在一个单独的线程中执行,是该线程中主要的程序代码段。原创 2016-10-27 10:18:43 · 1120 阅读 · 0 评论 -
FileStore::mount处理过程
osd存储空间中的目录结构[root@ceph-osd-241 ceph-1]# tree -L 1.├── ceph_fsid├── current├── fsid├── journal├── keyring├── lltxt├── magic├── ready├── store_version├── superblock└── whoamiFileStore::mount原创 2016-10-25 11:47:44 · 1357 阅读 · 0 评论 -
librados 处理过程
librados是ceph rados对外提供服务的原生api,本文是libradso接口调用的过程(从之前的文中摘录)。原创 2017-01-12 11:23:44 · 1626 阅读 · 0 评论 -
Pipe核心分析及消息体结构-writer
Pipe核心分析及消息体结构Pipe是什么 Pipe是SimpleMessenger中的一个复杂的组件,每个Pipe实例都拥有工作在socket上的两个线程,分别负责socket连接上的读取和写入的数据传输,除此之外还会将socket上的错误信息汇报给SimpleMessenger,同时处于一个稳定状态,来持续不断的为SimpleMessenger提供数据服务。原创 2017-02-24 10:52:36 · 794 阅读 · 0 评论 -
MonClient/sub_want&renew_subs
MonClient/sub_want&renew_subs文件:MonClient/sub_want&renew_subs方法:bool sub_want(string what, version_t start, unsigned flags)void renew_subs()涉及的方法:bool _sub_want(string what, version_t ...原创 2019-01-07 18:31:36 · 507 阅读 · 0 评论 -
ceph源码中interval_set类
interval_set 类在ceph源码中多次使用到,这里简单记录备注一下。interval_set中实现了两个内部迭代器类:// const_iteratorclass const_iterator : public std::iterator <std::forward_iterator_tag, T>{...protected: typename std::m...原创 2018-12-17 18:43:15 · 1175 阅读 · 0 评论 -
CephFS版本选择
CephFS版本选择版本问题:cephfs的稳定版在Jewel(v10.2.0)版本首次发布,该版本包含了稳定的cephfs源代码和fsck/repair tool工具。ceph社区的发布的版本并不包括ceph的内核模块(如rbd、cephfs的内核模块实现),kernel client 的版本和发布与ceph是相互独立的,所以在选中使用kernel client是一定要选着相应的内核版本...原创 2018-11-08 15:44:25 · 1963 阅读 · 0 评论 -
Ceph RBD
Ceph RBD CachingRBD caching:Ceph rbd 用户空间实现的librbd不能使用linux page cache,所以Ceph rbd实现了自己的Cache“RBD Caching”,当OS发送一个barrier或者执行一个flush请求,RBD caching中的dirty data就会被写入到osds中。RBD Caching提高了两种缓存模式write-bac...原创 2018-11-09 11:51:56 · 713 阅读 · 0 评论 -
RGW 数据模型设计
ceph是一个开源的统一分布式存储系统,RADOS是提供了底层基础对象存储服务,它由mon和osd组成。RADOS主要操作的对象有pool,object和object的xattr、omap。 bucket和object(key)是rados gateway构造的两个主要的数据模型,本文主要是介绍gateway中bucket和key的设计。原创 2017-09-14 18:18:24 · 2644 阅读 · 1 评论 -
OSDService是否共享osdmap
OSDService比对当前所持有的osdmap版本与请求所携带的osdmap版本,如果请求携带的osdmap版本低则与请求端共享新的osdmap。1.是否与请求端共享osdmap//与请求端对比是否需要共享osdmap,如需要则,共享服务端的osdmap与请求端。原创 2017-07-25 09:26:13 · 1534 阅读 · 0 评论 -
ceph key的创建
ceph中提供了cephx认证机制,客户端到服务端的访问,服务段之间的互访等都提供了认证过程,当然这些都是可配的。本文主要介绍ceph中key的常见过程。 ceph中有两个要弄清的概念: key和keyring: key标识一个密钥,一串字符;keyring用来存放密钥,也可以理解为一个文件。原创 2017-07-18 17:25:30 · 1984 阅读 · 0 评论 -
ObjectStore::Transaction
事务:一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。本文能主要是介绍ceph中OjectStore中Transaction的实现。原创 2017-07-18 12:23:31 · 935 阅读 · 0 评论 -
OSD&FileStore之CompatSet
CompatSet是一个结构体类型,其用于对特性兼容性进行管理。该类型的定义位于src/include/CompatSet.h文件中。原创 2017-07-06 19:07:18 · 440 阅读 · 0 评论 -
FileStore::mkjournal()&&FileJournal::create()
Ceph Version : Kraken Component:FileStore mkjournal()函数是用来初始化OSD的事务日志,格式化事务日志的头,事务日志可以使用裸块设备(已分区)也可以是一个文件。原创 2017-07-14 16:30:34 · 651 阅读 · 0 评论 -
FileStore::mkfs()
Ceph Version : Kraken Component:FileStore FileStore::mkfs() 该方法是用于初始化OSD的文件系统,只有在安装OSD时由OSD::mkfs(…)发起调用。原创 2017-07-14 15:29:40 · 609 阅读 · 0 评论 -
ObjectStore获取文件系统的fsid
ObjectStore获取文件系统的fsid。OSD在用户态又构造了一层自己文件系统来管理数据,并为其分配了唯一标识UUID。该UUID是其文件系统元信息中的一员,底层使用的驱动不同其保存的位置也不同,如BlueStore,保存在块设备的第一个块中,FileStore,保存在日志设备中的第一个块中。原创 2017-07-10 17:36:06 · 1462 阅读 · 0 评论 -
服务端连接日志(AsyncMessenger)
AsyncMessenger 通信层,服务端连接日志7fdcf4d44700 10 Processor -- accept listen_fd=227fdcf4d44700 10 stack get_worker7fdcf4d44700 10 Processor -- accept accepted incoming on sd 317fdcf4d44700 10 -- 127.0.0.1原创 2017-04-19 17:45:24 · 1329 阅读 · 0 评论 -
Messenger层数据传输协议
Messenger 层数据传输协议(Pipe消息体结构)协议:用于连个独立个体进行交互彼此必须准守的约定(个人理解)。Messenger层的协议:该协议包括了tag、header、front、middle、data、footer 其中tag、header、footer所占用的字节数都是固定的,基本是在描述消息的主体(front、middle、data)。原创 2017-03-07 15:14:53 · 623 阅读 · 0 评论 -
Pipe核心分析及消息体结构-reader
Pipe核心分析及消息体结构Pipe是什么 Pipe是SimpleMessenger中的一个复杂的组件,每个Pipe实例都拥有工作在socket上的两个线程,分别负责socket连接上的读取和写入的数据传输,除此之外还会将socket上的错误信息汇报给SimpleMessenger,同时处于一个稳定状态,来持续不断的为SimpleMessenger提供数据服务。原创 2017-02-23 15:57:54 · 860 阅读 · 0 评论 -
Ceph RBD请求过程的分析
Ceph RBD请求过程的分析 RBD是ceph中提供块存储的客户端服务,只所以说是客户端服务是相对于RADOS而言,RBD是基于librados API开发的一个块存储服务。 本文会通过rbd的一个写入操作来介绍RBD对RADOS的请求过程。以通过rbd想RADOS中导入一个文件为例,介绍整个请求过程: rbd -p {pool_name} import {local_file_path}原创 2016-10-10 11:36:49 · 5846 阅读 · 0 评论 -
Ceph PG的不同状态
Ceph PG是ceph分布式系统中的虚拟层,能够有效的减小底层存储介质的变动对上层数据分布的影响,PG的状态在系统中也是极为重要。原创 2016-11-04 13:31:43 · 1818 阅读 · 0 评论 -
ceph rgw中所使用的池子
ceph rgw中所使用的池子$ radosgw-admin zone get{ "domain_root": ".rgw", "control_pool": ".rgw.control", "gc_pool": ".rgw.gc", "log_pool": ".log", "intent_log_pool": ".intent-l原创 2015-11-24 11:35:58 · 2365 阅读 · 1 评论 -
RGW中的请求的认证过程
RGW中的用户认证过程(keystone or rados backend)用户s3用户请求的合法性验证过程:src/rgw/rgw_rest_s3.cc Rgw的认证方式有两种一个是使用keystone认证;一个是使用rados自带的认证方式;根据配置判断是否使用keystone认证;如果配置了keystone方式,则keystone方式;(二选一)int RGW_Auth_S3::author原创 2015-11-17 20:35:50 · 2540 阅读 · 0 评论 -
RGW处理请求中获取handler过程
RGW 创建处理请求的handler在src/rgw/rgw_main.cc源文件中的process_request()函数中有一个很重要的操作,就是Handler的获取,handler是manager中注册用来处理请求,很重要的一个对象: 获取HandlerRGWHandler *handler = rest->get_handler(store, s, client_io, &mgr, &in原创 2015-11-17 20:32:25 · 1508 阅读 · 3 评论 -
CEPH RGW处理请求过程
Rgw处理请求过程Rest api:Put /{bucket} HTTP/1.1x-amz-acl: public-read-writeAuthorization: AWS {access}:{hash-of-header-and-secret}这里依civetweb来提供rest服务来介绍,一个请求的处理过程。 回调函数的注册: 在civetweb中注册了用于处理请求的回调函数,在文原创 2015-11-17 20:29:06 · 5545 阅读 · 1 评论 -
关于rgw S3 API S3-style subdomain
关于rgw S3 libs3 (C/C++) S3-style subdomain接口访问rgw 的S3 api是兼容S3,同样也提供了S3的特殊访问形式。原创 2015-12-10 11:09:34 · 1549 阅读 · 0 评论