Rbd - kernel rbd client supports copy-on-read » History » Version 1
Jessica Mack, 08/26/2015 01:38 AM
1 | 1 | Jessica Mack | h1. Rbd - kernel rbd client supports copy-on-read |
---|---|---|---|
2 | |||
3 | h3. Summary |
||
4 | |||
5 | Feature copy-on-read will help to improve read perfomance of clone image, |
||
6 | especially when clone image is apart from parent image which is in remote data center |
||
7 | |||
8 | h3. Owners |
||
9 | |||
10 | * Min Chen (minchen@ubuntukylin.com) |
||
11 | * Li Wang (liwang@ubuntukylin.com) |
||
12 | * Name |
||
13 | |||
14 | h3. Interested Parties |
||
15 | |||
16 | * Name (Affiliation) |
||
17 | * Name (Affiliation) |
||
18 | * Name |
||
19 | |||
20 | h3. Current Status |
||
21 | |||
22 | Only librbd supports copy-on-read: https://github.com/ceph/ceph/pull/3040, |
||
23 | and the copy-on-read algorithm has been accepted. |
||
24 | It is not supported by kernel rbd client currently. |
||
25 | |||
26 | h3. Detailed Description |
||
27 | |||
28 | When read part or entire clone image object, firstly we should stat it from osd to find if object exists in clone image, |
||
29 | if not, just read object content from parent, which is the same as copy-on-write do. |
||
30 | In addtion, record the object has been searched, and keep its data content in memory, those are kept in |
||
31 | copyup_list, then write data content to clone image object asychronously. |
||
32 | The second time read the same object, we frist decide if it has been copied up from parent according to copyup_list. |
||
33 | if copied up, just read object from client memory, else read it from clone image. |
||
34 | |||
35 | h3. Work items |
||
36 | |||
37 | h4. Coding tasks |
||
38 | |||
39 | # Add an option, to turn on/off it in user space. |
||
40 | # Add list_head copyup_list to struct rbd_img_request to record which object has been read from parent. |
||
41 | # Implement state machine of copy-on-read algorithm. |
||
42 | |||
43 | h4. Build / release tasks |
||
44 | |||
45 | # Task 1 |
||
46 | # Task 2 |
||
47 | # Task 3 |
||
48 | |||
49 | h4. Documentation tasks |
||
50 | |||
51 | # Task 1 |
||
52 | # Task 2 |
||
53 | # Task 3 |
||
54 | |||
55 | h4. Deprecation tasks |
||
56 | |||
57 | # Task 1 |
||
58 | # Task 2 |
||
59 | # Task 3 |