Project

General

Profile

Osd - Locally repairable code » History » Version 1

Jessica Mack, 06/30/2015 11:54 PM

1 1 Jessica Mack
h1. Osd - Locally repairable code
2
3
h3. Summary
4
5
!lr.png!
6
7
Locally repairable codes can be used to avoid using inter datacenter bandwidth when recovering from the loss of a single OSD.
8
Let say an erasure coded pool is configured so that an object is split in 10 data chunks (X1 to X10) and 4 parity chunks (P1 to P4) and the crush map splits the chunks evenly in two datacenters (X1,X2,X3,X4,X5,P1,P2 in datacenter 1 and X6,X7,X8,X9,X10,P3,P4 in datacenter 2). If X3 is missing, all chunks are needed to recover it. If the primary OSD in charge of scrubbing is X1 (i.e. in datacenter 1), it will need to get X6,X7,X8,X9,X10,P3,P4 from datacenter 2.
9
One additional parity chunk is calculated  in each datacenter. The S1 chunk is calculated with the chunks from datacenter 1 and is stored in datacenter 1. The S2 chunk is calculated with the chunks from datacenter 2 and is stored in datacenter 2. If X3 is missing and X1 is the primary OSD in charge of scrubbing, it can use X1,X2,X4,X5 and S1 to recover X3 instead of reading from datacenter 2. Reading all chunks is only required when more than one chunk goes missing in the same data center.
10
11
h4. Note:
12
13
This is a followup of the Pyramid Erasure Code blueprint ( https://wiki.ceph.com/Planning/Blueprints/Giant/Pyramid_Erasure_Code ). It has been renamed to avoid confusion with more sophisticated recovery techniques.
14
15
h3. Owners
16
17
* Loic Dachary <loic@dachary.org>
18
* Name (Affiliation)
19
* Name
20
21
h3. Interested Parties
22
23
* Name (Affiliation)
24
* Name (Affiliation)
25
* Name
26
27
h3. Current Status
28
29
The first implementation is complete and is being reviewed and tested at https://github.com/ceph/ceph/pull/1921
30
31
h3. Work items
32
33
pad http://pad.ceph.com/p/GH-locally-repairable-code