Rbd - copy-on-read for clones » History » Version 1
Jessica Mack, 05/28/2015 06:08 PM
1 | 1 | Jessica Mack | h1. Rbd - copy-on-read for clones |
---|---|---|---|
2 | 1 | Jessica Mack | |
3 | 1 | Jessica Mack | h3. Task Name: |
4 | 1 | Jessica Mack | |
5 | 1 | Jessica Mack | copy-on-read for clones |
6 | 1 | Jessica Mack | |
7 | 1 | Jessica Mack | h3. Size: |
8 | 1 | Jessica Mack | |
9 | 1 | Jessica Mack | M |
10 | 1 | Jessica Mack | |
11 | 1 | Jessica Mack | h3. Skill: |
12 | 1 | Jessica Mack | |
13 | 1 | Jessica Mack | intermediate |
14 | 1 | Jessica Mack | |
15 | 1 | Jessica Mack | h3. Mentor(s): |
16 | 1 | Jessica Mack | |
17 | 1 | Jessica Mack | "Josh Durgin":mailto:josh.durgin@inktank.com |
18 | 1 | Jessica Mack | |
19 | 1 | Jessica Mack | h3. Components: |
20 | 1 | Jessica Mack | |
21 | 1 | Jessica Mack | librbd |
22 | 1 | Jessica Mack | |
23 | 1 | Jessica Mack | h3. Description: |
24 | 1 | Jessica Mack | |
25 | 1 | Jessica Mack | Currently clones in rbd only copy data from their parent when they write to an object. Reading a clone will read data from the parent if the relevant object in the clone does not exist yet. If the clone is being used from a location far away from the parent in latency, reads will be very expensive. Caching the parent image could help, but if the clone is expected to stay far away from the parent (for example if the parent is in a different pool in a separate geographical location), it is useful to have a local copy of the parent. Rather than copying the parent all at once, we can opportunistically copy data from the parent to the clone as it is read (or partially overwritten). That is, a read would fetch the entire range needed for a clone's object, and write it to the clone in the background. |
26 | 1 | Jessica Mack | |
27 | 1 | Jessica Mack | h3. Coding tasks |
28 | 1 | Jessica Mack | |
29 | 1 | Jessica Mack | # librbd: add copy-on-read option (standard ceph option that can be read from config file, env, or cli) |
30 | 1 | Jessica Mack | # librbd: for clone reads from a parent, read the entire object if copy-on-read (or another? flag is set) |
31 | 1 | Jessica Mack | # librbd: asynchronously write parent data to the child if copy-on-read flag is set |
32 | 1 | Jessica Mack | |
33 | 1 | Jessica Mack | From existing blueprint: http://wiki.ceph.com/01Planning/Sideboard/rbd%3A_copy-on-read_for_clones |
34 | 1 | Jessica Mack | |
35 | 1 | Jessica Mack | h3. External Documentation:Edit section |
36 | 1 | Jessica Mack | |
37 | 1 | Jessica Mack | # Document new flag(s) - where and why to use them |