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 |