Introduction to Ceph

什么是Ceph

Ceph是一个可扩展的,高性能的分布式存储系统。提供了三种不同类型的接口以适应不同的应用场景:

  • block-based: 块存储,可以用做VM的虚拟磁盘
  • object-based: 对象存储,与Amazon S3等常用对象存储兼容
  • file system: POSIX兼容的分布式文件系统,可以被本地系统挂载,并且能被多个客户端共享

Ceph的特性

由于采用了CRUSH算法,Ceph有着优异的可扩展性(宣称可以无限扩展)。并且借助可扩展性,进而实现高性能、高可靠性和高可用性。

Ceph是一个去中心化的存储系统,无需中心节点进行资源的管理与调度,全部的管理功能由存储节点自治完成。使得整个系统可以自我管理与自我恢复,减少运维成本与管理成本。

RADOS - Ceph的存储引擎

RADOS=Reliable Autonomic Distributed Object Store。RADOS是Ceph底层的存储引擎,所有的接口都建立在RADOS的功能之上。

RADOS中的存储结构

  • 存储池(pool):逻辑层,每一个pool里都包含一些放置组
  • 放置组(placement-group, PG):逻辑层,一份数据会在PG当中进行灾备复制。每一个PG都对应着一系列的存储节点
  • 存储节点 …
more ...

Bw-Tree:在新硬件平台上的新B-Tree

ARS 与 Bw-Tree

nosql数据库从本质上说,都属于ARS(Atomic Record Stores,“原子记录存储”)。

最常见的“原子记录存储”一种实现就是朴素的Hash表:通过一个特定的key,来读写一条独立的数据记录。

一些基于key-value(键-值)模型的nosql的内部实现正是使用了Hash表,例如Redis1、memcache、Riak等。

而有一些nosql数据库为了支持高效的key-sequential(键-序列)查找,采用了tree-based2数据结构进行数据存储,所以B-Tree成为了一些数据库(both nosql and sql)的首选。

本文介绍了一种基于新型硬件的高性能ARS实现,其核心技术有:

  1. 页式内存管理
  2. Bw-Tree,一种基于B-Tree的树存储结构
  3. 基于日志的存储管理

在现代硬件上的Bw-Tree

现代多核CPU

多核CPU带来了高并发,但是同时也引入了锁竞争和缓存失效问题。

为了讲解锁竞争,这里我们举一个经典的例子:多线程计数器。

我们都知道,如果不使用锁来保护计数器变量的话,那么最终的结果几乎不可能是正确的。多个线程中 …

more ...