-
ceph-filestore
总体介绍版本介绍代码主要基于 ceph 12,中间有部分改动,但是主体流程和代码不变ObjectStoreObjectStore是Ceph OSD中最重要的概念之一,它封装了对底层存储具体的IO操作。读请求会通过ObjectStore提供的API获得相应的内容,写请求也会利用ObjectStore提供的事务API将所有写操作组合成一个原子事务提交给ObjectStore。ObjectStore通过接口对上层提供不同的隔离级别,目前PG层采用了Serializable级别,保证同一个PG内读...…
-
ceph-librbd-源码分析
整体介绍Ceph可以同时提供对象存储RGW、块存储RBD、文件系统存储Ceph FS。 RBD(RADOS Block Device)块设备类似磁盘可以被挂载。RBD块设备具有快照、多副本、克隆和一致性等特性,数据可以以条带化的方式存储到底层的Rados集群中。如果想从理论方面全面的了解rbd运作机制可以看:”Ceph设计原理与实现” 一书上层应用访问RBD块设备有两种途径,librbd 和 krbd: krbd:集成在GNU/Linux内核的一个内核模块,用户使用用户态的rbd...…
-
ceph-pg哈希
序言ceph简介Ceph 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。底层的rados分布式存储是ceph的精华所在,ceph以rados为基础在上层封装了对象、块、文件存储接口。客户端可以通过ceph提供的librados库直连rados集群,待存对象通过计算获取指定机器,然后将数据发送到该机器上存储。因为都是通过计算的方式,所以rados不需要维护一个中心table来存储对象所在的位置,这种计算型的方式不仅快速,而且能够节省节点的资源。下图为ceph的总体框...…
-
etcd-raft-网络分析
etcd raft transport模块etcd raft继承了简约的设计理念,只实现了最核心的raft算法, 节点之间数据的传输需要用户自己来实现,etcd自己使用的网络层库为transport。简介transport模块是etcd提供的raft网络库,其golang地址为”go.etcd.io/etcd/etcdserver/api/rafthttp”。etcd-raft网络传输模块主要用于在一个raft集群的节点之间进行raft协议的消息传输,这里的消息包括raft协议中定义的所有...…
-
etcd-raft-存储分析
最近在调研etcd raft来作为一致性协议raft的实现库,因此对所得进行了梳理。etcd raft介绍etcd raft是目前使用最广泛的raft库,如果想深入了解raft请直接阅读论文 “In Search of an Understandable Consensus Algorithm”(https://raft.github.io/raft.pdf), etcd raft在etcd, Kubernetes, Docker Swarm, Cloud Foundry Diego, C...…
-
搭建s3fs及其实现机制剖析
简介s3fs(s3 fuse)是基于FUSE的文件系统,其使linux或Mac OS X有能力通过Fuse挂载到S3的一个bucket(桶)上,用户可以像操作本地文件系统一样操作S3的bucket.案例使用环境 名称 描述 操作系统 CentOS Linux release 7.4.1708 s3fs v1.8.3 s3 滴滴云对象存储 ...…
-
ipc通信-消息队列
简介目的本文对最新的Linux-4.19.4内核源码进行分析,详细分析了内核IPC机制中的消息队列的原理进程间通信IPC(进程间通信,InterProcess Communication)是内核提供的系统中进程间进行通信的一种机制。系统中每个进程的用户地址空间互不干扰,所以需要内核来提供进程之间进行通信机制。进程间通信的七种方式: 管道/匿名管道(pipe) 有名管道(FIFO) 信号(Signal) 消息(Message)队列 共享内存(share memory) 信号量(s...…
-
基于nginx-rtmp搭建点播平台
序言RTMP(Real Time Message Protocol,实时信息传输协议)协议属于应用层协议,其靠底层的TCP来保证信息传输的可靠性。它由Adobe公司提出,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。nginx-rtmp是由俄罗斯人开发的NGINX模块,该模块完善了NGINX对视频的支持,并且实现了对HLS的支持。本次实验在滴滴云上完成,基于nginx-rtmp搭建一个点播平台。准备 工具名称 ...…