Ticket #778: docs3.txt

File docs3.txt, 10.6 KB (added by kevan, at 2010-05-14T01:49:02Z)
Line 
1Fri 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
4Fri Dec  4 19:40:05 PST 2009  "Kevan Carstensen" <kevan@isnotajoke.com>
5  * Alter wording in 'interfaces.py' to be correct wrt #778
6
7Tue 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
10Thu May 13 17:38:52 PDT 2010  kevan@isnotajoke.com
11  * Update 'docs/architecture.txt' to reflect readonly share discovery
12
13New patches:
14
15[Update 'docs/configuration.txt' to reflect the servers_of_happiness behavior.
16Kevan 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.
48Kevan Carstensen <kevan@isnotajoke.com>**20100428002455
49 Ignore-this: 6eff7fa756858a1c6f73728d989544cc
50] {
51hunk ./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
62hunk ./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
85kevan@isnotajoke.com**20100514003852
86 Ignore-this: 7ead71b34df3b1ecfdcfd3cb2882e4f9
87] {
88hunk ./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 
98hunk ./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
119Context:
120
121[Dependency on Windmill test framework is not needed yet.
122david-sarah@jacaranda.org**20100504161043
123 Ignore-this: be088712bec650d4ef24766c0026ebc8
124]
125[tests: pass z to tar so that BSD tar will know to ungzip
126zooko@zooko.com**20100504090628
127 Ignore-this: 1339e493f255e8fc0b01b70478f23a09
128]
129[setup: update comments and URLs in setup.cfg
130zooko@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
134zooko@zooko.com**20100504045643
135 Ignore-this: 836084b56b8d4ee8f1de1f4efb706d36
136]
137[CLI: Support for https url in option --node-url
138Francois 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
147Brian 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
158Brian 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
164zooko@zooko.com**20100421165708
165 Ignore-this: 52b4b619f9dde5886ae2cd7f1f3b734b
166]
167[docs: install.html -> quickstart.html
168zooko@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
173david-sarah@jacaranda.org**20100416220935
174 Ignore-this: ad1f7aa66b554174f91dfb2b7a3ea5f3
175]
176[Add dependency on windmill >= 1.3
177david-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
181zooko@zooko.com**20100414232521
182 Ignore-this: a5494b2f582a295544c6cad3f245e91
183]
184[munin-tahoe_storagespace
185freestorm77@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)
192zooko@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
196zooko@zooko.com**20100309163736
197 Ignore-this: c0623d27e469799d86cabf67921a13f8
198]
199[CREDITS to Jacob Appelbaum
200zooko@zooko.com**20100304015616
201 Ignore-this: 70db493abbc23968fcc8db93f386ea54
202]
203[desert-island-build-with-proper-versions
204jacob@appelbaum.net**20100304013858]
205[docs: a few small edits to try to guide newcomers through the docs
206zooko@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
211david-sarah@jacaranda.org**20100228062314
212 Ignore-this: eb5f03ada8ea953ee7780e7fe068539
213]
214Patch bundle hash:
2151e8e2ad6a8b4ed848f8212b7f516a6e8801d7aee