1 | Fri Dec 4 19:38:13 PST 2009 Kevan Carstensen <kevan@isnotajoke.com> |
---|
2 | * Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior. |
---|
3 | |
---|
4 | Fri Dec 4 19:40:05 PST 2009 "Kevan Carstensen" <kevan@isnotajoke.com> |
---|
5 | * Alter wording in 'interfaces.py' to be correct wrt #778 |
---|
6 | |
---|
7 | Tue Apr 27 17:24:55 PDT 2010 Kevan Carstensen <kevan@isnotajoke.com> |
---|
8 | * Alter the wording in docs/architecture.txt to more accurately describe the servers_of_happiness behavior. |
---|
9 | |
---|
10 | Thu May 13 17:38:52 PDT 2010 kevan@isnotajoke.com |
---|
11 | * Update 'docs/architecture.txt' to reflect readonly share discovery |
---|
12 | |
---|
13 | New patches: |
---|
14 | |
---|
15 | [Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior. |
---|
16 | Kevan Carstensen <kevan@isnotajoke.com>**20091205033813 |
---|
17 | Ignore-this: 5e1cb171f8239bfb5b565d73c75ac2b8 |
---|
18 | ] hunk ./docs/configuration.txt 275 |
---|
19 | larger than 256, because of the 8-bit erasure-coding algorithm that Tahoe |
---|
20 | uses. |
---|
21 | |
---|
22 | - If servers are lost during an upload, shares.happy determines whether the |
---|
23 | - upload is considered successful or not. If at least "shares.happy" shares |
---|
24 | - were placed, the upload is declared a success, otherwise it is declared a |
---|
25 | - failure. The default value is 7. This value must not be smaller than k nor |
---|
26 | - larger than N. |
---|
27 | + shares.happy allows you control over the distribution of your file. An upload |
---|
28 | + is only considered successful if shares are placed on at least 'shares.happy' |
---|
29 | + distinct servers, the correct functioning of at least k of which is sufficient |
---|
30 | + to guarantee the availability of the uploaded file. This value should not be |
---|
31 | + larger than the number of servers on your grid. |
---|
32 | |
---|
33 | |
---|
34 | == Storage Server Configuration == |
---|
35 | [Alter wording in 'interfaces.py' to be correct wrt #778 |
---|
36 | "Kevan Carstensen" <kevan@isnotajoke.com>**20091205034005 |
---|
37 | Ignore-this: c9913c700ac14e7a63569458b06980e0 |
---|
38 | ] hunk ./src/allmydata/interfaces.py 1275 |
---|
39 | def set_params(params): |
---|
40 | """Override the default encoding parameters. 'params' is a tuple of |
---|
41 | (k,d,n), where 'k' is the number of required shares, 'd' is the |
---|
42 | - shares_of_happiness, and 'n' is the total number of shares that will |
---|
43 | + servers_of_happiness, and 'n' is the total number of shares that will |
---|
44 | be created. |
---|
45 | |
---|
46 | Encoding parameters can be set in three ways. 1: The Encoder class |
---|
47 | [Alter the wording in docs/architecture.txt to more accurately describe the servers_of_happiness behavior. |
---|
48 | Kevan Carstensen <kevan@isnotajoke.com>**20100428002455 |
---|
49 | Ignore-this: 6eff7fa756858a1c6f73728d989544cc |
---|
50 | ] { |
---|
51 | hunk ./docs/architecture.txt 180 |
---|
52 | up with as many shares as we desire. |
---|
53 | |
---|
54 | If we are unable to place every share that we want, but we still managed to |
---|
55 | -place a quantity known as "shares of happiness", we'll do the upload anyways. |
---|
56 | -If we cannot place at least this many, the upload is declared a failure. |
---|
57 | +place a quantity known as "servers of happiness" that each map to a unique |
---|
58 | +server, we'll do the upload anyways. If we cannot place at least this many |
---|
59 | +in this way, the upload is declared a failure. |
---|
60 | |
---|
61 | The current defaults use k=3, shares_of_happiness=7, and N=10, meaning that |
---|
62 | hunk ./docs/architecture.txt 185 |
---|
63 | -we'll try to place 10 shares, we'll be happy if we can place 7, and we need |
---|
64 | -to get back any 3 to recover the file. This results in a 3.3x expansion |
---|
65 | -factor. In general, you should set N about equal to the number of nodes in |
---|
66 | -your grid, then set N/k to achieve your desired availability goals. |
---|
67 | +we'll try to place 10 shares, we'll be happy if we can place shares on enough |
---|
68 | +servers that there are 7 different servers, the correct functioning of any 3 of |
---|
69 | +which guarantee the availability of the file, and we need to get back any 3 to |
---|
70 | +recover the file. This results in a 3.3x expansion factor. On a small grid, you |
---|
71 | +should set N about equal to the number of storage servers in your grid; on a |
---|
72 | +large grid, you might set it to something smaller to avoid the overhead of |
---|
73 | +contacting every server to place a file. In either case, you should then set k |
---|
74 | +such that N/k reflects your desired availability goals. The correct value for |
---|
75 | +servers_of_happiness will depend on how you use Tahoe-LAFS. In a friendnet with |
---|
76 | +a variable number of servers, it might make sense to set it to the smallest |
---|
77 | +number of servers that you expect to have online and accepting shares at any |
---|
78 | +given time. In a stable environment without much server churn, it may make |
---|
79 | +sense to set servers_of_happiness = N. |
---|
80 | |
---|
81 | When downloading a file, the current version just asks all known servers for |
---|
82 | any shares they might have. Once it has received enough responses that it |
---|
83 | } |
---|
84 | [Update 'docs/architecture.txt' to reflect readonly share discovery |
---|
85 | kevan@isnotajoke.com**20100514003852 |
---|
86 | Ignore-this: 7ead71b34df3b1ecfdcfd3cb2882e4f9 |
---|
87 | ] { |
---|
88 | hunk ./docs/architecture.txt 149 |
---|
89 | set of all peer nodes (by sorting the peer nodes by |
---|
90 | HASH(storage_index+peerid)). Each file gets a different permutation, which |
---|
91 | (on average) will evenly distribute shares among the grid and avoid hotspots. |
---|
92 | +We first remove any peer nodes that cannot hold an encoded share for our file, |
---|
93 | +and then ask some of the peers that we have removed if they are already |
---|
94 | +holding encoded shares for our file; we use this information later. This step |
---|
95 | +helps conserve space, time, and bandwidth by making the upload process less |
---|
96 | +likely to upload encoded shares that already exist. |
---|
97 | |
---|
98 | hunk ./docs/architecture.txt 155 |
---|
99 | -We use this permuted list of nodes to ask each node, in turn, if it will hold |
---|
100 | -a share for us, by sending an 'allocate_buckets() query' to each one. Some |
---|
101 | -will say yes, others (those who are full) will say no: when a node refuses |
---|
102 | -our request, we just take that share to the next node on the list. We keep |
---|
103 | -going until we run out of shares to place. At the end of the process, we'll |
---|
104 | -have a table that maps each share number to a node, and then we can begin the |
---|
105 | -encode+push phase, using the table to decide where each share should be sent. |
---|
106 | +We then use this permuted list of nodes to ask each node, in turn, if it will |
---|
107 | +hold a share for us, by sending an 'allocate_buckets() query' to each one. |
---|
108 | +Some will say yes, others (those who have become full since the start of peer |
---|
109 | +selection) will say no: when a node refuses our request, we just take that |
---|
110 | +share to the next node on the list. We keep going until we run out of shares |
---|
111 | +to place. At the end of the process, we'll have a table that maps each share |
---|
112 | +number to a node, and then we can begin the encode+push phase, using the table |
---|
113 | +to decide where each share should be sent. |
---|
114 | |
---|
115 | Most of the time, this will result in one share per node, which gives us |
---|
116 | maximum reliability (since it disperses the failures as widely as possible). |
---|
117 | } |
---|
118 | |
---|
119 | Context: |
---|
120 | |
---|
121 | [Dependency on Windmill test framework is not needed yet. |
---|
122 | david-sarah@jacaranda.org**20100504161043 |
---|
123 | Ignore-this: be088712bec650d4ef24766c0026ebc8 |
---|
124 | ] |
---|
125 | [tests: pass z to tar so that BSD tar will know to ungzip |
---|
126 | zooko@zooko.com**20100504090628 |
---|
127 | Ignore-this: 1339e493f255e8fc0b01b70478f23a09 |
---|
128 | ] |
---|
129 | [setup: update comments and URLs in setup.cfg |
---|
130 | zooko@zooko.com**20100504061653 |
---|
131 | Ignore-this: f97692807c74bcab56d33100c899f829 |
---|
132 | ] |
---|
133 | [setup: reorder and extend the show-tool-versions script, the better to glean information about our new buildslaves |
---|
134 | zooko@zooko.com**20100504045643 |
---|
135 | Ignore-this: 836084b56b8d4ee8f1de1f4efb706d36 |
---|
136 | ] |
---|
137 | [CLI: Support for https url in option --node-url |
---|
138 | Francois Deppierraz <francois@ctrlaltdel.ch>**20100430185609 |
---|
139 | Ignore-this: 1717176b4d27c877e6bc67a944d9bf34 |
---|
140 | |
---|
141 | This patch modifies the regular expression used for verifying of '--node-url' |
---|
142 | parameter. Support for accessing a Tahoe gateway over HTTPS was already |
---|
143 | present, thanks to Python's urllib. |
---|
144 | |
---|
145 | ] |
---|
146 | [backupdb.did_create_directory: use REPLACE INTO, not INSERT INTO + ignore error |
---|
147 | Brian Warner <warner@lothar.com>**20100428050803 |
---|
148 | Ignore-this: 1fca7b8f364a21ae413be8767161e32f |
---|
149 | |
---|
150 | This handles the case where we upload a new tahoe directory for a |
---|
151 | previously-processed local directory, possibly creating a new dircap (if the |
---|
152 | metadata had changed). Now we replace the old dirhash->dircap record. The |
---|
153 | previous behavior left the old record in place (with the old dircap and |
---|
154 | timestamps), so we'd never stop creating new directories and never converge |
---|
155 | on a null backup. |
---|
156 | ] |
---|
157 | ["tahoe webopen": add --info flag, to get ?t=info |
---|
158 | Brian Warner <warner@lothar.com>**20100424233003 |
---|
159 | Ignore-this: 126b0bb6db340fabacb623d295eb45fa |
---|
160 | |
---|
161 | Also fix some trailing whitespace. |
---|
162 | ] |
---|
163 | [docs: install.html http-equiv refresh to quickstart.html |
---|
164 | zooko@zooko.com**20100421165708 |
---|
165 | Ignore-this: 52b4b619f9dde5886ae2cd7f1f3b734b |
---|
166 | ] |
---|
167 | [docs: install.html -> quickstart.html |
---|
168 | zooko@zooko.com**20100421155757 |
---|
169 | Ignore-this: 6084e203909306bed93efb09d0e6181d |
---|
170 | It is not called "installing" because that implies that it is going to change the configuration of your operating system. It is not called "building" because that implies that you need developer tools like a compiler. Also I added a stern warning against looking at the "InstallDetails" wiki page, which I have renamed to "AdvancedInstall". |
---|
171 | ] |
---|
172 | [Fix another typo in tahoe_storagespace munin plugin |
---|
173 | david-sarah@jacaranda.org**20100416220935 |
---|
174 | Ignore-this: ad1f7aa66b554174f91dfb2b7a3ea5f3 |
---|
175 | ] |
---|
176 | [Add dependency on windmill >= 1.3 |
---|
177 | david-sarah@jacaranda.org**20100416190404 |
---|
178 | Ignore-this: 4437a7a464e92d6c9012926b18676211 |
---|
179 | ] |
---|
180 | [licensing: phrase the OpenSSL-exemption in the vocabulary of copyright instead of computer technology, and replicate the exemption from the GPL to the TGPPL |
---|
181 | zooko@zooko.com**20100414232521 |
---|
182 | Ignore-this: a5494b2f582a295544c6cad3f245e91 |
---|
183 | ] |
---|
184 | [munin-tahoe_storagespace |
---|
185 | freestorm77@gmail.com**20100221203626 |
---|
186 | Ignore-this: 14d6d6a587afe1f8883152bf2e46b4aa |
---|
187 | |
---|
188 | Plugin configuration rename |
---|
189 | |
---|
190 | ] |
---|
191 | [setup: add licensing declaration for setuptools (noticed by the FSF compliance folks) |
---|
192 | zooko@zooko.com**20100309184415 |
---|
193 | Ignore-this: 2dfa7d812d65fec7c72ddbf0de609ccb |
---|
194 | ] |
---|
195 | [setup: fix error in licensing declaration from Shawn Willden, as noted by the FSF compliance division |
---|
196 | zooko@zooko.com**20100309163736 |
---|
197 | Ignore-this: c0623d27e469799d86cabf67921a13f8 |
---|
198 | ] |
---|
199 | [CREDITS to Jacob Appelbaum |
---|
200 | zooko@zooko.com**20100304015616 |
---|
201 | Ignore-this: 70db493abbc23968fcc8db93f386ea54 |
---|
202 | ] |
---|
203 | [desert-island-build-with-proper-versions |
---|
204 | jacob@appelbaum.net**20100304013858] |
---|
205 | [docs: a few small edits to try to guide newcomers through the docs |
---|
206 | zooko@zooko.com**20100303231902 |
---|
207 | Ignore-this: a6aab44f5bf5ad97ea73e6976bc4042d |
---|
208 | These edits were suggested by my watching over Jake Appelbaum's shoulder as he completely ignored/skipped/missed install.html and also as he decided that debian.txt wouldn't help him with basic installation. Then I threw in a few docs edits that have been sitting around in my sandbox asking to be committed for months. |
---|
209 | ] |
---|
210 | [TAG allmydata-tahoe-1.6.1 |
---|
211 | david-sarah@jacaranda.org**20100228062314 |
---|
212 | Ignore-this: eb5f03ada8ea953ee7780e7fe068539 |
---|
213 | ] |
---|
214 | Patch bundle hash: |
---|
215 | 1e8e2ad6a8b4ed848f8212b7f516a6e8801d7aee |
---|