Project

General

Profile

Pyramid Erasure Code » History » Revision 2

Revision 1 (Jessica Mack, 06/23/2015 09:24 PM) → Revision 2/3 (Jessica Mack, 06/23/2015 09:24 PM)

h1. Pyramid Erasure Code 

 h3. Summary 

 !{width:50%}lr.png! !lr.png! 

 Pyramid codes can be used to avoid using inter datacenter bandwidth when recovering from the loss of a single OSD. 
 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. 
 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. 

 h3. Owners 

 * Loic Dachary <loic@dachary.org> 
 * Name (Affiliation) 
 * Name 

 h3. Interested PartiesEdit section 

 * Name (Affiliation) 
 * Name (Affiliation) 
 * Name 

 h3. Work items 

 http://pad.ceph.com/p/cdsgiant-pyramid-erasure-code