Project

General

Profile

Add LevelDB support to ceph cluster backend store » History » Version 1

Jessica Mack, 06/09/2015 06:26 PM

1 1 Jessica Mack
h1. Add LevelDB support to ceph cluster backend store
2
3
h3. Summary
4
5
Abstract a general interface and implement a LevelDB driver for ceph cluster backend store.
6
7
h3. Owners
8
9
* Name (Affiliation)
10
* Name (Affiliation)
11
* Name
12
13
h3. Interested Parties
14
15
* Haomai Wang (UnitedStack)
16
* Joao Luis (Inktank)
17
* Sam Just (Inktank)
18
19
h3. Current Status
20
21
There isn't exists any other implementation except the local filesystem implementation which support POSIX interface.
22
23
h3. Detailed Description
24
25
Every node of ceph cluster has a backend filesystem such as btrfs, xfs and ext4 that provides storage for data objects, whose location are determined by CRUSH algorithm. There should exists an abstract interface sitting between osd and backend store, allowing different backend store implementation. Currently, we only have general POSIX interface. LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. We could implement a LevelDB backend to support base operations correspond to POSIX operations.  LevelDB driver enables gateway to communicate with LevelDB to store objects on the node basis.
26
LevelDB driver is attractive by the folks who own a special use case such as a write-heave system. If we can abstract a general interface, we can choose other DBM if you find it more suitable, such as Kyoto Cabinet, BDB. Futhermore, we can choose backen store for each OSD node. So we have different OSD type for special purpose.
27
Expected Results: Objects can be stored reliably to LevelDB. The IO performance and recovery process can be comparable to original stores. And for special case, LevelDB driver should have much better performance than local filesystem backend driver. The snapshot and any features you think of are optional.
28
29
h3. Work items
30
31
h3. Coding tasks
32
33
# Task 1
34
# Task 2
35
# Task 3
36
37
h3. Build / release tasks
38
39
# Task 1
40
# Task 2
41
# Task 3
42
43
h3. Documentation tasks
44
45
# Task 1
46
# Task 2
47
# Task 3
48
49
h3. Deprecation tasks
50
51
# Task 1
52
# Task 2
53
# Task 3