617:, being compatible with Linux and BSD kernels. Magma client uses a flare protocol connection to contact and operate with a near Magma server. Network topology and flare location is totally transparent to clients. The client simply query one server in the exact manner as all information were located on that host only.
595:
A console protocol connection is used to let administrators query lava network, perform simple operations like listing directory contents and show file content and finally issue some administrative commands to the nodes (an example of an administrative command is: shutting down). Console protocol is
620:
A cryptographic layer is planned for Magma client, allowing file contents only encryption. Implementing cryptography on client side is due to scalability (computational power will increase at same rate of computational request) and cryptographic key privacy (keys or passphrases will never reach the
277:
will be searched inside the cache. If not found, it will be created and loaded from disk, if already existing. On resulting flare object are first applied permission checking tests. If permission to operate is granted, initial request is fulfilled: in this example, flare is cast to directory if it
184:
An uncast flare does not contain enough information to operate on data, but has enough information to be moved as a sort of opaque container between vulcano nodes. To be easily movable, each type of flare, including directories, has been reimplemented as a two files set, the first containing flare
172:
Magma can store a different range of objects: files, directories, symbolic links, block and character devices, FIFO pipes. Each object is bound to a flare and vice versa. A flare of any type in the six listed above is described by some basic properties common to all flares, like a path and a hash
262:. If routing determines the need to contact another vulcano node, request will not leave this layer. Lava network layer will forward the request to node owning the key, continuing the flow of operations on remote node. Routing is half the role of
286:
Since each vulcano node has complete network topology available, routing is just a matter of matching flare keys with nodes key-space and find the node holding the flare. Network topology is also saved in the distributed directory
413:
24:
173:
key. But each of the six types has also its own specific properties. For example, directory flares will have some specific information that don't apply to symbolic links. A flare with only generic information is called
588:
A flare protocol connection is used to operate on flares: opening files and directory, reading and writing, getting information and exchange flares during balancing operations. Flare protocol is a binary
633:
interface for other Unices. Since NFS is an established standard, no new features can be added. For example, cryptographic layer will be unavailable to client mounting Magma shares through NFS.
584:
manages intercommunication between DHT nodes and magma clients. Flare system provides a network event loop that accept incoming connections. Three kind of connection are accepted.
446:
554:
527:
500:
473:
315:
is devoted to distribute keys to avoid nodes overloading or underloading. Each node has a dynamic load value associated, which is computed by the formula:
321:
254:
magma_mkdir() first route the request to decide if it can be locally managed or will require network operations. To perform routing, path
662:
592:
An internode protocol connection is used to exchange DHT information and to join new nodes. Internode protocol is a binary protocol.
657:
667:
239:
magma_mkdir() can be used as an example of layer traversing. In this paragraph will be assumed that a directory called
629:
As an alternative to Magma client, which is supported only by Linux and BSD kernels, Magma server plans to offer a
86:
308:
122:
44:
614:
146:
134:
114:
74:
118:
307:
Each vulcano node has some parameters declared at boot, like bandwidth and storage available. A separate
185:
information (metadata) and the second containing flare content. Moving flares across lava ring is called
295:
directory to know if something has changed. Nodes also periodically save their own information inside
291:
inside magma filesystem. Vulcano nodes can periodically check their information against contents of
189:
and is done to leverage load inequalities between nodes in the attempt to provide best performance.
630:
69:
161:
keys. Each vulcano is also in charge of mirroring the key space of the previous node, to ensure
165:. Each key can represent one or more object inside the storage space. These objects are called
266:
layer, which also includes network monitoring and vulcano nodes creation, update and removal.
421:
81:
51:
532:
505:
478:
451:
162:
233:
Flare objects: magma_new_flare(), magma_search_or_create(), magma_add_to_cache(), ...
651:
408:{\displaystyle l_{n}=kl_{n}\cdot {\frac {b_{n}}{b_{a}}}\cdot {\frac {s_{n}}{s_{a}}}}
217:
Public API: flare_system_init(), magma_open(), magma_mknod(), magma_lstat(), ...
31:
157:. Each vulcano hosts a portion of a common key space, delimited by two
23:
269:
Both being a local or a remote request, the last step is performed by
597:
126:
247:
layer. It is used to create a new directory, as done by standard
248:
158:
130:
225:
Lava network: magma_new_node(), route_key(), join_network()
97:
642:
448:
is the node key load calculated on logarithmic scale;
535:
508:
481:
454:
424:
324:
564:
Magma is distributed in the form of a server called
92:
80:
68:
60:
50:
40:
30:
548:
521:
494:
467:
440:
407:
149:network to form a common storage space called a
145:Magma binds several hosts interconnected by a
258:is translated in corresponding SHA1 hash key
8:
16:
243:will be created. magma_mkdir() is part of
15:
540:
534:
513:
507:
486:
480:
459:
453:
432:
423:
397:
387:
381:
370:
360:
354:
345:
329:
323:
275:81f762fd59d88768b06b8e9de56aef8a95962045
260:81f762fd59d88768b06b8e9de56aef8a95962045
203:
201:and is implemented as a layered stack.
197:The internal engine of Magma is called
596:a text based protocol accessible via
278:wasn't already and is saved to disk.
7:
153:. Each host (or node) is called a
14:
177:while a complete flare is called
141:Terminology and basic principles
22:
1:
273:. Flare corresponding to key
560:Magma software distribution
684:
625:Alternative NFS interface
21:
663:Distributed data storage
17:Magma network filesystem
115:distributed file system
75:Distributed file system
658:Userspace file systems
550:
523:
502:is average bandwidth;
496:
475:is node bandwidth and
469:
442:
441:{\displaystyle kl_{n}}
409:
119:distributed hash table
551:
549:{\displaystyle s_{a}}
524:
522:{\displaystyle s_{n}}
497:
495:{\displaystyle b_{a}}
470:
468:{\displaystyle b_{n}}
443:
410:
251:counterpart mkdir().
56:Linux and BSD kernels
668:Network file systems
644:- MagmaFS home site.
568:and a client called
533:
529:is node storage and
506:
479:
452:
422:
322:
209:Flare system layers
556:is average storage
18:
546:
519:
492:
465:
438:
405:
125:, compatible with
403:
376:
237:
236:
108:
107:
675:
612:
583:
555:
553:
552:
547:
545:
544:
528:
526:
525:
520:
518:
517:
501:
499:
498:
493:
491:
490:
474:
472:
471:
466:
464:
463:
447:
445:
444:
439:
437:
436:
414:
412:
411:
406:
404:
402:
401:
392:
391:
382:
377:
375:
374:
365:
364:
355:
350:
349:
334:
333:
298:
294:
290:
204:
104:
101:
99:
52:Operating system
26:
19:
683:
682:
678:
677:
676:
674:
673:
672:
648:
647:
639:
627:
610:
607:
581:
578:
562:
536:
531:
530:
509:
504:
503:
482:
477:
476:
455:
450:
449:
428:
420:
419:
393:
383:
366:
356:
341:
325:
320:
319:
305:
296:
292:
288:
284:
195:
163:data redundancy
143:
96:
12:
11:
5:
681:
679:
671:
670:
665:
660:
650:
649:
646:
645:
638:
637:External links
635:
626:
623:
606:
603:
602:
601:
593:
590:
577:
574:
561:
558:
543:
539:
516:
512:
489:
485:
462:
458:
435:
431:
427:
416:
415:
400:
396:
390:
386:
380:
373:
369:
363:
359:
353:
348:
344:
340:
337:
332:
328:
304:
303:Load balancing
301:
283:
280:
235:
234:
231:
227:
226:
223:
219:
218:
215:
211:
210:
207:
194:
191:
187:load balancing
142:
139:
133:kernels using
106:
105:
94:
90:
89:
84:
78:
77:
72:
66:
65:
62:
58:
57:
54:
48:
47:
42:
38:
37:
34:
28:
27:
13:
10:
9:
6:
4:
3:
2:
680:
669:
666:
664:
661:
659:
656:
655:
653:
643:
641:
640:
636:
634:
632:
624:
622:
618:
616:
609:Magma client
604:
599:
594:
591:
587:
586:
585:
580:Magma server
575:
573:
571:
567:
559:
557:
541:
537:
514:
510:
487:
483:
460:
456:
433:
429:
425:
398:
394:
388:
384:
378:
371:
367:
361:
357:
351:
346:
342:
338:
335:
330:
326:
318:
317:
316:
314:
310:
302:
300:
281:
279:
276:
272:
267:
265:
261:
257:
252:
250:
246:
242:
232:
229:
228:
224:
221:
220:
216:
213:
212:
208:
206:
205:
202:
200:
192:
190:
188:
182:
180:
176:
170:
168:
164:
160:
156:
152:
148:
140:
138:
136:
132:
128:
124:
121:, written in
120:
116:
112:
103:
95:
91:
88:
85:
83:
79:
76:
73:
71:
67:
63:
59:
55:
53:
49:
46:
43:
39:
35:
33:
29:
25:
20:
628:
619:
613:is based on
608:
605:Magma client
579:
576:Magma server
569:
565:
563:
417:
312:
306:
285:
274:
270:
268:
264:Lava network
263:
259:
255:
253:
244:
240:
238:
199:flare system
198:
196:
193:Flare system
186:
183:
178:
174:
171:
166:
154:
150:
144:
110:
109:
61:Available in
32:Developer(s)
611:magma.mount
570:mount.magma
299:directory.
271:Flare layer
117:based on a
652:Categories
245:Public API
41:Written in
621:server).
589:protocol.
379:⋅
352:⋅
151:lava ring
313:balancer
256:/example
241:/example
100:.magmafs
311:called
282:Routing
155:vulcano
93:Website
87:GNU GPL
82:License
64:English
598:Telnet
582:magmad
566:magmad
418:where
309:thread
297:/.dht/
293:/.dht/
289:/.dht/
175:uncast
167:flares
147:TCP/IP
127:Linux
113:is a
111:Magma
615:FUSE
249:Libc
179:cast
159:SHA1
135:FUSE
129:and
102:.net
70:Type
631:NFS
230:3.
222:2.
214:1.
131:BSD
98:www
36:Tx0
654::
572:.
181:.
169:.
137:.
600:.
542:a
538:s
515:n
511:s
488:a
484:b
461:n
457:b
434:n
430:l
426:k
399:a
395:s
389:n
385:s
372:a
368:b
362:n
358:b
347:n
343:l
339:k
336:=
331:n
327:l
123:C
45:C
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.