Project

General

Profile

Object striping in librados » History » Version 1

Jessica Mack, 06/22/2015 03:12 AM

1 1 Jessica Mack
h1. Object striping in librados
2
3
h3. Summary
4
5
This is a proposal to add a "striped object" API to librados that would stripe big objects into several smaller objects in the same manner cephfs does it. This would allow to store efficiently objects of any size and bring parallel I/O capabilities to the object store.
6
7
h3. Owners
8
9
* Sebastien Ponce (CERN)
10
* Giuseppe Lo Presti (CERN)
11
* Andreas Peters (CERN)
12
13
h3. Interested Parties
14
15
* Sebastien Ponce
16
17
h3. Current Status
18
19
The striping would identical to the one already used in the cephFS part with the same definition of stripe units and objects set
20
21
h3. Detailed Description
22
23
The current librados allows to store objects of any size into Rados, but has a few annoying limitations :
24
* objects have maximum size (of the order of few MBs by default)
25
* big objects (think 10s of GB) would anyway impact the cluster efficiency
26
* rados objects cannot benefit from parallel I/O. For this, you need to use the Ceph Object Storage API
27
28
The proposal is to implement these missing features by introducing a striped object concept to the Rados API.
29
Striped objects have the same API as regular objects, however they are striped and actually stored into a number of regular objects.
30
31
The striping algorithm is the one already used in ceph and described in details in the ceph architecture (http://ceph.com/docs/master/architecture/, part on data striping). It defines three parameters for striping an object :
32
* an object size : the maximum object size of the stored objects
33
* a stripe width : the size of a stripe unit
34
* a stripe count : the number of stripe units read/written concurrently, aka the number of stripe units in a stripe, aka the number of objects in an object set
35
36
Practically, the regular objects produced by the striping of a striped object would have a few special characteristics allowing to read back the striped object easily :
37
* they would have a name derived from the one of the striped object, by appending '###<object number>'
38
* the first object (suffix '###0') would have 3 entries in its metadata storing the striping parameters (object size, stripe width and stripe count)
39
40
As they are regular objects, they could as well by read independently.
41
42
h3. Work items
43
44
h4. Coding tasks
45
46
# Implemented striped object API in librados
47
48
h4. Build / release tasks
49
50
# Merge new code into librados
51
52
h4. Documentation tasks
53
54
# Add the new API to the documentation
55
56
h4. Deprecation tasks