]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | ============================ |
2 | Jerasure erasure code plugin | |
3 | ============================ | |
4 | ||
5 | The *jerasure* plugin is the most generic and flexible plugin, it is | |
6 | also the default for Ceph erasure coded pools. | |
7 | ||
8 | The *jerasure* plugin encapsulates the `Jerasure | |
31f18b77 | 9 | <http://jerasure.org>`_ library. It is |
7c673cae FG |
10 | recommended to read the *jerasure* documentation to get a better |
11 | understanding of the parameters. | |
12 | ||
13 | Create a jerasure profile | |
14 | ========================= | |
15 | ||
16 | To create a new *jerasure* erasure code profile:: | |
17 | ||
18 | ceph osd erasure-code-profile set {name} \ | |
19 | plugin=jerasure \ | |
20 | k={data-chunks} \ | |
21 | m={coding-chunks} \ | |
22 | technique={reed_sol_van|reed_sol_r6_op|cauchy_orig|cauchy_good|liberation|blaum_roth|liber8tion} \ | |
23 | [ruleset-root={root}] \ | |
24 | [ruleset-failure-domain={bucket-type}] \ | |
25 | [directory={directory}] \ | |
26 | [--force] | |
27 | ||
28 | Where: | |
29 | ||
30 | ``k={data chunks}`` | |
31 | ||
32 | :Description: Each object is split in **data-chunks** parts, | |
33 | each stored on a different OSD. | |
34 | ||
35 | :Type: Integer | |
36 | :Required: Yes. | |
37 | :Example: 4 | |
38 | ||
39 | ``m={coding-chunks}`` | |
40 | ||
41 | :Description: Compute **coding chunks** for each object and store them | |
42 | on different OSDs. The number of coding chunks is also | |
43 | the number of OSDs that can be down without losing data. | |
44 | ||
45 | :Type: Integer | |
46 | :Required: Yes. | |
47 | :Example: 2 | |
48 | ||
49 | ``technique={reed_sol_van|reed_sol_r6_op|cauchy_orig|cauchy_good|liberation|blaum_roth|liber8tion}`` | |
50 | ||
51 | :Description: The more flexible technique is *reed_sol_van* : it is | |
52 | enough to set *k* and *m*. The *cauchy_good* technique | |
53 | can be faster but you need to chose the *packetsize* | |
54 | carefully. All of *reed_sol_r6_op*, *liberation*, | |
55 | *blaum_roth*, *liber8tion* are *RAID6* equivalents in | |
56 | the sense that they can only be configured with *m=2*. | |
57 | ||
58 | :Type: String | |
59 | :Required: No. | |
60 | :Default: reed_sol_van | |
61 | ||
62 | ``packetsize={bytes}`` | |
63 | ||
64 | :Description: The encoding will be done on packets of *bytes* size at | |
65 | a time. Chosing the right packet size is difficult. The | |
66 | *jerasure* documentation contains extensive information | |
67 | on this topic. | |
68 | ||
69 | :Type: Integer | |
70 | :Required: No. | |
71 | :Default: 2048 | |
72 | ||
73 | ``ruleset-root={root}`` | |
74 | ||
75 | :Description: The name of the crush bucket used for the first step of | |
76 | the ruleset. For intance **step take default**. | |
77 | ||
78 | :Type: String | |
79 | :Required: No. | |
80 | :Default: default | |
81 | ||
82 | ``ruleset-failure-domain={bucket-type}`` | |
83 | ||
84 | :Description: Ensure that no two chunks are in a bucket with the same | |
85 | failure domain. For instance, if the failure domain is | |
86 | **host** no two chunks will be stored on the same | |
87 | host. It is used to create a ruleset step such as **step | |
88 | chooseleaf host**. | |
89 | ||
90 | :Type: String | |
91 | :Required: No. | |
92 | :Default: host | |
93 | ||
94 | ``directory={directory}`` | |
95 | ||
96 | :Description: Set the **directory** name from which the erasure code | |
97 | plugin is loaded. | |
98 | ||
99 | :Type: String | |
100 | :Required: No. | |
101 | :Default: /usr/lib/ceph/erasure-code | |
102 | ||
103 | ``--force`` | |
104 | ||
105 | :Description: Override an existing profile by the same name. | |
106 | ||
107 | :Type: String | |
108 | :Required: No. | |
109 |