- 博客(123)
- 资源 (7)
- 收藏
- 关注
原创 MonClient中的函数
MonClient类位于mon目录下,其功能是负责与monitor交互。//在消息层组件中注册MonClient实例,指定认证方式,初始化keyring,启动定时器int MonClient::init() ...
2019-01-08 17:27:54
1726
原创 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
503
原创 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
1169
原创 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
697
原创 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
1958
原创 Nginx初始化socket
ngx_add_inherited_sockets 创建socket实例,并对其初始化。ngx_listening_s 数据结构类型:struct ngx_listening_s { ngx_socket_t fd; struct sockaddr *sockaddr; socklen_t socklen; /* ...
2018-08-10 17:07:46
733
原创 Nginx中自定义数组ngx_array_t
Nginx中自定义数组ngx_array_t自定义内存数组类型 void *elts; //数组首地址 ngx_uint_t nelts; //已使用的元素个数 size_t size; //每个元素的大小 ngx_uint_t nalloc; //整个数组长度 ngx_pool_t *pool; //...
2018-08-09 17:31:30
1427
原创 Nginx 数据结构(ngx_pool_s)及其相关函数
nginx源码中struct ngx_pool_s结构体用于表示管理一个预申请的内存空间,该内存空间可根据需要分配给其他对象使用。数据结构:ngx_pool_t数据结构及相关结构: 函数:ngx_pool_t * ngx_create_pool(size_t size, ngx_log_t *log) //创建ngx_pool_t类型的对象,(从内存中字节对齐的申请s...
2018-08-09 16:22:02
568
原创 iscsi服务配置及
架设iscsi target服务服务端软件:scsi-target-utils客户端: scsi-initiator-utils/etc/tgt/targets.conf:主要配置文件,设定要分享的磁盘格式与哪几颗;/usr/sbin/tgt-admin:在线查询、删除 target 等功能的设定工具;/usr/sbin/tgt-setup-lun:建立 target 以及设...
2018-08-01 14:05:44
667
原创 Nginx 从链表中取出事件并处理
从链表中取出事件并处理//取出链表中取出第一个节点(ngx_queue_t),然后获取该节点所属对象的完整对象(ngx_event_t)并调用与其绑定的方法处理该对象(事件)voidngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted){ ngx_queue_t *q; ...
2018-08-01 14:03:01
248
原创 Nginx 中处理检查超时的定时器并处理
Nginx 中处理检查超时的定时器并处理//从ngx_event_timer_rbtree(定时器的红黑树中取出所有超时的定时器时间,并使用设定的handler处理该事件)voidngx_event_expire_timers(void){ ...
2018-08-01 13:50:13
550
原创 Nginx建新的子进程的主要逻辑
Nginx中创建新的子进程的主要逻辑ngx_pid_tngx_spawn_process(ngx_cycle_t *cycle, ngx_spawn_proc_pt proc, void *data, char *name, ngx_int_t respawn){ u_long on; ngx_pid_t pid; ngx_int_t s; ...
2018-07-31 15:39:17
345
原创 civetweb发送数据
int mg_write(struct mg_connection *conn, const void *buf, size_t len) 将buf指向的缓存中长度为len的数据发送到conn中,返回真正发送的数据大小。int mg_write(struct mg_connection *conn, const void *buf, size_t len) ...
2018-07-10 16:35:29
1794
原创 Civetweb 连接数据读取
Civetweb 连接数据读取int mg_read(struct mg_connection *conn, void *buf, size_t len) 从conn中读取若干字节到buf指定的地址空间中,返回值是真正读取的字节数。int mg_read(struct mg_connection *conn, void *buf, size_t len) { switch (...
2018-07-06 10:00:59
2600
1
原创 http协议头中的Transfer_Encoding
http协议头中的Transfer_Encoding:HTTP协议头字段Transfer_Encoding,分块传输编码,一般出现在http的响应头中。该头字段存在与HTTP协议的1.1版本中,提供一种数据传输机制。 通常http协议在传输数据时是整体一起发送的,数据体的长度由Content-Length字段指定,方便判断消息结束。该响应头字段(Transfer_Encoding)的作用...
2018-07-06 09:20:40
1381
原创 HTTP 头字段介绍
Accept:告诉WEB服务器自己接受什么介质类型,/ 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。Accept-Charset: 浏览器申明自己接收的字符集 Accept-Encoding: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) Accept-Language:浏览器申明自己接...
2018-06-28 14:38:24
451
原创 gcc编译器常用参数
gcc参数:-O 作用:指定被生成的程序名字 例子:gcc fly.c -o fly参数:-g 作用:生产可被gdb调试的程序 例子:gcc -g fly.c -o fly参数:-D 作用:添加宏定义。 例子:gcc fly.c -o fly -DOPEN_PRINTF_DEBUG [or -D OPEN_PRINTF_DEBUG]注: ...
2018-06-26 15:20:24
1017
原创 Note:Python 项目包管理package_dir
https://docs.python.org/2/distutils/examples.html ref:http://python.jobbole.com/82077/ github:project: https://github.com/pypa/sampleproject
2018-01-25 15:53:05
976
原创 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
2631
1
原创 HDFS杂记
以下是遇到一个hdfs的问题,而梳理的一个简单启动过程:(杂记) hdfs version:2.7.4./hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.javastatic DataNode::main() ->static secureMain(
2017-09-08 09:33:46
444
原创 OSDService是否共享osdmap
OSDService比对当前所持有的osdmap版本与请求所携带的osdmap版本,如果请求携带的osdmap版本低则与请求端共享新的osdmap。1.是否与请求端共享osdmap//与请求端对比是否需要共享osdmap,如需要则,共享服务端的osdmap与请求端。
2017-07-25 09:26:13
1515
原创 ceph key的创建
ceph中提供了cephx认证机制,客户端到服务端的访问,服务段之间的互访等都提供了认证过程,当然这些都是可配的。本文主要介绍ceph中key的常见过程。 ceph中有两个要弄清的概念: key和keyring: key标识一个密钥,一串字符;keyring用来存放密钥,也可以理解为一个文件。
2017-07-18 17:25:30
1971
原创 ObjectStore::Transaction
事务:一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。本文能主要是介绍ceph中OjectStore中Transaction的实现。
2017-07-18 12:23:31
921
原创 FileStore::mkjournal()&&FileJournal::create()
Ceph Version : Kraken Component:FileStore mkjournal()函数是用来初始化OSD的事务日志,格式化事务日志的头,事务日志可以使用裸块设备(已分区)也可以是一个文件。
2017-07-14 16:30:34
643
原创 FileStore::mkfs()
Ceph Version : Kraken Component:FileStore FileStore::mkfs() 该方法是用于初始化OSD的文件系统,只有在安装OSD时由OSD::mkfs(…)发起调用。
2017-07-14 15:29:40
602
原创 ObjectStore获取文件系统的fsid
ObjectStore获取文件系统的fsid。OSD在用户态又构造了一层自己文件系统来管理数据,并为其分配了唯一标识UUID。该UUID是其文件系统元信息中的一员,底层使用的驱动不同其保存的位置也不同,如BlueStore,保存在块设备的第一个块中,FileStore,保存在日志设备中的第一个块中。
2017-07-10 17:36:06
1452
原创 OSD&FileStore之CompatSet
CompatSet是一个结构体类型,其用于对特性兼容性进行管理。该类型的定义位于src/include/CompatSet.h文件中。
2017-07-06 19:07:18
434
原创 服务端连接日志(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
1326
原创 Messenger层数据传输协议
Messenger 层数据传输协议(Pipe消息体结构)协议:用于连个独立个体进行交互彼此必须准守的约定(个人理解)。Messenger层的协议:该协议包括了tag、header、front、middle、data、footer 其中tag、header、footer所占用的字节数都是固定的,基本是在描述消息的主体(front、middle、data)。
2017-03-07 15:14:53
617
原创 boost::variant的简单介绍
boost::variant简介 boost::Variant 是定义在boost/variant.hpp中的模板类,它的功能类似与union。Variant是一个模板,所以在使用时必须传入至少一个类型参数。Variant实例所存储的数据类型只能是传入类型中的一种。 例如:boost::Variant<double, int, string> variant;variant = "he
2017-03-03 15:43:55
3190
原创 Pipe核心分析及消息体结构-writer
Pipe核心分析及消息体结构Pipe是什么 Pipe是SimpleMessenger中的一个复杂的组件,每个Pipe实例都拥有工作在socket上的两个线程,分别负责socket连接上的读取和写入的数据传输,除此之外还会将socket上的错误信息汇报给SimpleMessenger,同时处于一个稳定状态,来持续不断的为SimpleMessenger提供数据服务。
2017-02-24 10:52:36
784
原创 Pipe核心分析及消息体结构-reader
Pipe核心分析及消息体结构Pipe是什么 Pipe是SimpleMessenger中的一个复杂的组件,每个Pipe实例都拥有工作在socket上的两个线程,分别负责socket连接上的读取和写入的数据传输,除此之外还会将socket上的错误信息汇报给SimpleMessenger,同时处于一个稳定状态,来持续不断的为SimpleMessenger提供数据服务。
2017-02-23 15:57:54
854
原创 librados 处理过程
librados是ceph rados对外提供服务的原生api,本文是libradso接口调用的过程(从之前的文中摘录)。
2017-01-12 11:23:44
1621
原创 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
2511
1
原创 RBD Image映射到Object
该函数是将更新的image的范围映射到具体的对象上.这个部分涉及到stripe的概念,需要预先了解这个概念(可以参考官网对其的解释)
2016-12-29 18:55:09
1083
原创 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
2160
opencv中文版API文档
2013-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人