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 1 Jessica Mack
3 1 Jessica Mack
h3. Summary
4 1 Jessica Mack
5 1 Jessica Mack
Abstract a general interface and implement a LevelDB driver for ceph cluster backend store.
6 1 Jessica Mack
7 1 Jessica Mack
h3. Owners
8 1 Jessica Mack
9 1 Jessica Mack
* Name (Affiliation)
10 1 Jessica Mack
* Name (Affiliation)
11 1 Jessica Mack
* Name
12 1 Jessica Mack
13 1 Jessica Mack
h3. Interested Parties
14 1 Jessica Mack
15 1 Jessica Mack
* Haomai Wang (UnitedStack)
16 1 Jessica Mack
* Joao Luis (Inktank)
17 1 Jessica Mack
* Sam Just (Inktank)
18 1 Jessica Mack
19 1 Jessica Mack
h3. Current Status
20 1 Jessica Mack
21 1 Jessica Mack
There isn't exists any other implementation except the local filesystem implementation which support POSIX interface.
22 1 Jessica Mack
23 1 Jessica Mack
h3. Detailed Description
24 1 Jessica Mack
25 1 Jessica Mack
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 1 Jessica Mack
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 1 Jessica Mack
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 1 Jessica Mack
29 1 Jessica Mack
h3. Work items
30 1 Jessica Mack
31 1 Jessica Mack
h3. Coding tasks
32 1 Jessica Mack
33 1 Jessica Mack
# Task 1
34 1 Jessica Mack
# Task 2
35 1 Jessica Mack
# Task 3
36 1 Jessica Mack
37 1 Jessica Mack
h3. Build / release tasks
38 1 Jessica Mack
39 1 Jessica Mack
# Task 1
40 1 Jessica Mack
# Task 2
41 1 Jessica Mack
# Task 3
42 1 Jessica Mack
43 1 Jessica Mack
h3. Documentation tasks
44 1 Jessica Mack
45 1 Jessica Mack
# Task 1
46 1 Jessica Mack
# Task 2
47 1 Jessica Mack
# Task 3
48 1 Jessica Mack
49 1 Jessica Mack
h3. Deprecation tasks
50 1 Jessica Mack
51 1 Jessica Mack
# Task 1
52 1 Jessica Mack
# Task 2
53 1 Jessica Mack
# Task 3