Project

General

Profile

NewStore (new osd backend) » History » Version 1

Jessica Mack, 07/10/2015 09:32 PM

1 1 Jessica Mack
h1. NewStore (new osd backend)
2
3
h3. Summary
4
5
Create a replacement for FileStore that implements the ObjectStore API.
6
The goal is to be
7
* general purpose (HDD or SSD)
8
* avoid double-writes for new objects and sequential writes
9
* be more efficient about small writes
10
* leverage a key/value database for our metadata
11
* leverage a POSIX file system to block management of object data
12
13
h3. Owners
14
15
* Sage Weil (Red Hat)
16
* Name (Affiliation)
17
* Name
18
19
h3. Interested Parties
20
21
* Guang Yang (Yahoo!)
22
* Name (Affiliation)
23
* Name
24
25
h3. Current Status
26
27
There is a work-in-progress implementation available at https://github.com/liewegas/ceph/commits/wip-newstore
28
29
h3. Detailed Description
30
31
There is a reasonable summary of the current state of things at: http://marc.info/?l=ceph-devel&m=142438985013041&w=2
32
The goal is to get a working prototype available as soon as possible with some basic infrastructure for atomic updates and so forth.  We can iterate on how to be extra clever after that.
33
34
h3. Work items
35
36
h4. Coding tasks
37
38
# get wip-temp merged; this simplifies our usage of the collections so that there is 1 per PG and no cross-collection moves or renames.  'temp' becomes a special class of objects within a collection with some special semantics (they disappear on restart).  there is also a bunch of other cleanup in this branch.
39
# get NewStore write-ahead-log infrastructure working
40
# mangle DBObjectMap so that we can use it while embedding the head into the onode_t.  possiblye rewrite/steal from this as the design shoudl be revisited.
41
# at this point NewStore should be functional and pass tests
42
# make the write path do the fsync and transaction completion asynchrnoously
43
# use AIO + DIO for writes when WONTNEED; use buffered writes otherwise
44
# make a smart fsyncer (many threads to improve concurrency, or leverage parallel aio_fsync if we can)
45
# test to ensure it is power-fail safe.
46
# add open-by-handle support (i.e., avoid path lookup overhead)
47
# consider writing some small writes into the kv store instead of taking the WAL path and applying them to the file