MagmaFS
Developer(s) | Tx0 <tx0@strumentiresistenti.net> |
---|---|
Operating system | Linux and BSD kernels |
Type | Network file system |
License | [GPL] |
Website | http://www.magmafs.net/ |
Magma is a network file system based on Distributed hash table, written in C.
Terminology and basic principles
Network topology is rappresented by a structure of nodes called a lava ring. Each node is called a vulcano. Each vulcano hosts a portion of a common key space, delimited by two SHA1 keys. Each vulcano also is in charge of mirroring the key space of the previous node, to ensure data redundancy.
Magma can store many kink of objects: files, directories, symbolic links, block and characted devices, FIFO pipes. All this kink of objects are called flares. A flare of any cast has some basic properties, like a path and a hash key. But directory flares will have some specific informations that don't apply to symbolic links for example.
A flare can be moved between vulcano nodes with a set of operations which define the magma network protocol. To be easily movable, each type of flare, including directories, has been reimplemented as a two files set, the first containing flare informations (metadata) and the second containing flare contents.
Routing
Since each vulcano node has complete network topology available, routing is just a matter of matching flare key with nodes key-space and find the node holding the flare.
Magma server
Magma server magmad manages intercommunication between DHT nodes and magma clients.
Magma client
Magma client magma.mount is based on FUSE, being compatible with Linux and BSD kernels.