Project

General

Profile

2G - RADOS namespaces CRUSH language extension CRUSH library » History » Version 1

Jessica Mack, 06/22/2015 05:02 AM

1 1 Jessica Mack
h1. 2G - RADOS namespaces CRUSH language extension CRUSH library
2
3
h3. Live Pad
4
5
The live pads can be found here: "[pad 1]":http://pad.ceph.com/p/rados_namespaces "[pad 2]":http://pad.ceph.com/p/extend_crush_rule_language "[pad 3]":http://pad.ceph.com/p/create_crush_library
6
7
h3. Summit Snapshot
8
9
h4. RADOS Namespaces
10
 
11
Coding tasks
12
# protocol update for MOSDOp, MOSDOpReply to add namespace fields
13
# librados API changes: new versions of a handful of calls to add the new fields
14
## [aio_]operate (add C interface)
15
# os/FileStore changes
16
## almost nothing; hobject_t has a ns field.
17
## extend object file naming scheme and omap key naming scheme as needed (this may already be handled with the last hobject_t rev we did last year) [or maybe they already have them]
18
# extend OSDCap grammar and associated tests
19
## allow pool <foo> namespace <bar>
20
# OSD changes: add ns argument every that object is used
21
## anywhere there is an sobject_t... hopefully none or very few
22
# manage compatibility: make OSD error out gracefully if not all replicas support namespaces, prevent downgrade, etc.  This may require a global osdmap flag indicating that namespaces are supported.
23
## once all osds in the OSDMap have the feature, we set the flag in the OSDMap
24
## MOSDBoot needs to communicate features
25
# extend librados list_objects() to have a ns field (along with object name and key)
26
# Update RBD to allow images to live in namespaces.
27
## inventing a convenience syntax? pool/namespace/image or pool/image ?
28
## disallow / and @ and : in image names
29
# Add namespace argument to rados cli tool
30
# make rados bench write into a namespace!
31
# add rados tool command to remove a namespace
32
33
Testing tasks
34
# extend librados API tests
35
# extend existing filestore and osd stress tests to stress the namespace code
36
## make radosmodel test list_objects() [at a snapshot!!]
37
# extend osd cap tests
38
39
Documentation tasks
40
# Document OSDCap grammar and semantics
41
# Document namespace purpose, uses, and limitations
42
# Document how namespaces can be leveraged by OpenStack RBD users
43
44
Things we do support:
45
# unbounded # of namespaces
46
# security limits by namespace
47
48
Things we don't support:
49
# efficient listing of namespace
50
# efficient listing of namespace contexts
51
# per-namespace stats
52
53
h4. CRUSH Language Extension
54
 
55
Coding tasks
56
57
# extend rule parser
58
# extend mapping function to implement new rule language
59
# port to kernel implementation
60
# define apppriate compatibility bits and integrate into existing Ceph compat checks
61
62
Documentation tasks
63
64
# document new rule language
65
66
67
Possibilities:
68
# a stack to supplement the working vector
69
# chooseleaf would take a min # of unique items as well as total count of item
70
## needs some way to intelligently separate items beneath that point when there are dups
71
# sum over map of (type -> weight) instead of just weight
72
# block bucket summation
73
74
Expand crush tester/simulator
75
76
Comments:
77
* You might want to look into the route-map user interface of Cisco routers. I thought it handles significantly complex policies the same level as we want in this case.
78
79
80
h4. CRUSH Library
81
82
Coding tasks
83
# clean up existing API for consistency, argument types, etc.
84
# define new API (C and/or C++)
85
# refactor CRUSH code
86
# adjust Ceph code to utilize new API
87
# build (at least a basic) unit test suite for the new API
88
89
Build / release tasks
90
# adjust ceph build
91
# package libcrush separately (deb, rpm)
92
93
Documentation tasks
94
# document new crush API