Knowledge (XXG)

MagmaFS

Source 📝

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

Index


Developer(s)
C
Operating system
Type
Distributed file system
License
GNU GPL
www.magmafs.net
distributed file system
distributed hash table
C
Linux
BSD
FUSE
TCP/IP
SHA1
data redundancy
Libc
thread
Telnet
FUSE
NFS

Categories
Userspace file systems
Distributed data storage
Network file systems

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.