ceph中用到的压缩引擎

ceph可以默认支持snappy/zlib/zstd,如果要支持lz4的话,必须打开宏HAVE_LZ4 set(compressor_srcs Compressor.cc) add_library(compressor_objs OBJECT ${compressor_srcs}) ## ...

2018-05-17 10:09:43

阅读数:162

评论数:0

arm 的neon指令等同于arm64的asimd指令

在ceph 的src/test/test_arch.cc 中我们可以看到下面的code ,从kernel中的/proc/cpuinfo 中的feature 来判断arm是否支持neon指令,需要注意这个指令在armv8 之后被称为asimd指令 TEST(Arch, all) { ceph_a...

2018-05-16 09:34:47

阅读数:453

评论数:0

ceph_perf_local

在ceph 源码ceph-master\ceph-master\src\test\CMakeLists.txt 中定义了一个ceph_perf_local的可执行文件,用于测试 不同平台对ceph性能的影响 #ceph_perf_local add_executable(ceph_perf_loc...

2018-05-14 14:34:34

阅读数:75

评论数:0

ceph中的threadpool

ceph中采用threadpool来增加并发性能 ThreadPool::ThreadPool(CephContext *cct_, string nm, string tn, int n, const char *option) : cct(cct_), name(std::move(nm)...

2018-05-11 14:54:44

阅读数:90

评论数:0

CephContext 中的AdminSocket

在CephContext 的构造函数中会新建一个AdminSocket和一个CephContextHook CephContext::CephContext(uint32_t module_type_, enum code_environment_...

2018-05-10 10:14:36

阅读数:52

评论数:0

wbthrottle限流

WBThrottle 是为让filestore来限流。 throttle的核心函数如下: void WBThrottle::throttle() { Mutex::Locker l(lock); while (!stopping && nee...

2018-05-09 11:08:03

阅读数:52

评论数:0

ceph 对动态加载类的管理

ceph提供了一个ClassHandler来管理动态链接库 使用ClassHandler 之前必要要先注册 ClassHandler::ClassData *ClassHandler::register_class(const char *cname) { assert(mutex.is_lo...

2018-05-08 19:11:52

阅读数:48

评论数:0

librbd

librbd是ceph 对外提供的块存储接口,这个接口了c/c++ 两种接口,接口提供的头文件分别在ceph-master\ceph-master\src\include\rbd\librbd.hpp和source\ceph-master\ceph-master\src\include\rbd\l...

2018-05-07 09:42:38

阅读数:113

评论数:0

bluestore使用的cache

bluestore 自己管理裸设备为了提高性能自己也建立了cache BlueStore::Cache *BlueStore::Cache::create(CephContext* cct, string type, PerfCounters *logger) { Cache...

2018-05-03 15:15:28

阅读数:305

评论数:0

空闲block分配的allocator

bluestore 中采用allocator来分配块。allocator的使用者保护bluefs和bluestore Allocator *Allocator::create(CephContext* cct, string type, ...

2018-05-03 09:52:10

阅读数:110

评论数:0

bluestore的空闲块管理

bluestore自己管理裸盘的块设备,管理空闲空间的类是FreelistManager,所有的块组成一个bitmap,0为空闲,1为使用。 FreelistManager *FreelistManager::create( CephContext* cct, string type, ...

2018-05-02 14:47:33

阅读数:92

评论数:0

bluefs

在bluestore 中时通rocksenv为rockdb来运行环境来让rockdb存储元数据。所以ceph通过一个简单文件系统bluefs来实现rocksenv的接口 class BlueFS { public: CephContext* cct; #可以看到bluefs中支持下面这三种...

2018-05-02 13:58:15

阅读数:116

评论数:0

bluestore用到的块设备

ceph中bluestore在user space 提供block device,bypass文件系统由ceph直接管理各种设备。 ceph中的块设备都是blockdevice的子类 BlockDevice *BlockDevice::create(CephContext* cct, const ...

2018-04-28 17:41:25

阅读数:108

评论数:0

ceph中的mgr 进程

ceph中的mgr 进程用于显示相关复位的统计信息,兵器额可以通过python提供接口来获取这些统计信息 这个进程的入口函数在C:\Users\Administrator\Desktop\source\ceph-master\ceph-master\src\ceph_mgr.cc 中 int ma...

2018-04-27 16:19:23

阅读数:504

评论数:0

cephfs kernel client写的过程

kernel 中ceph的客户端的源码在fs/ceph 中,这里我们以ceph的写操作为例。 从fs/ceph/file.c 中的ceph_file_fops 中可以知道写函数是ceph_write_iter const struct file_operations ceph_file_fops ...

2018-04-27 09:27:56

阅读数:200

评论数:0

osd scrub的过程

在osd的init函数中有新建一个time,这个time的回调函数是C_Tick_WithoutOSDLock。这个回调函数中会对pg做scrub int OSD::init() { tick_timer_without_osd_lock.add_event_after(cct-&...

2018-04-25 16:27:43

阅读数:87

评论数:0

osd的心跳机制

在osd的main函数中有新建三个用于heatbeat 发送和接收的message C:\Users\Administrator\Desktop\source\ceph-master\ceph-master\src\ceph_osd.cc Messenger *ms_public = Mess...

2018-04-24 14:36:33

阅读数:284

评论数:0

ceph df 命令的实现

内核ACPI函数API之acpi_parse_spcr monitor 所有的命令都在void Monitor::handle_command(MonOpRequestRef op) 中实现 我们以ceph df的实现为例分析,下面这个函数就是handle_command 这个函数中对df 命...

2018-04-23 19:27:12

阅读数:129

评论数:0

ceph 中kv 存储的后端选择

filestore的omap中会按照key-value的方式存储对象的属性信息,在ceph中按照key-value存储属性信息有三个版本,分别是levleDB/ROCKSDB/kineticstore/memDB,目前主要用的是rocksDB。这四部分的源码在src/kv中 从其makefile中...

2018-04-23 11:29:56

阅读数:150

评论数:0

ceph中使用文件系统的扩展属性

在ceph中的filestore中有实现chain_xattr.cc 中有实现级联的key-value。当然这里的xattr是保存在文件系统中的 扩展属性中。 所谓级联是指一个key 可以对应多个value的片段 例如 key@1和key@2 这样被chain_xattr解析为key-12 cep...

2018-04-20 10:07:22

阅读数:51

评论数:0

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