Lusophonie

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire
Magma
Sviluppatore Tx0
Nome completo Magma distributed hash table filesystem
Introdotto In sviluppo... (Linux e BSD)
Identificatore della partizione {{{partition_id}}}
Struttura
Struttura contenuti directory {{{directory_struct}}}
Allocazione dei file {{{file_struct}}}
Blocchi danneggiati {{{bad_blocks_struct}}}
Limiti
Dimensione massima di un file {{{max_file_size}}}
Numero massimo di file {{{max_files_no}}}
Dimensione massima del nome di un file {{{max_filename_size}}}
Dimensione massima del volume {{{max_volume_size}}}
Caratteri permessi nel nome di un file {{{filename_character_set}}}
Caratteristiche
Date memorizzate {{{dates_recorded}}}
Date supportate {{{date_range}}}
Fork {{{forks_streams}}}
Attributi {{{attributes}}}
Permessi file system {{{file_system_permissions}}}
Compressione trasparente {{{compression}}}
Crittografia trasparente {{{encryption}}}

Magma è un network file system basato su una Distributed hash table, scritto in C, compatibile con i kernel Linux e BSD mediante l'uso di FUSE.

Indice

Terminologia e principi generali

Magma unisce molti nodi interconnessi da una rete TCP/IP per formare uno spazio comune di salvataggio dati chiamato lava ring. Ogni nodo è chiamato vulcano. Ogni vulcano ospita una porzione di uno spazio di chiavi comune, delimitata da due chiavi SHA1. Ogni vulcano è anche incaricato di replicare lo spazio di chiavi del nodo precedente, per garantire ridondanza dei dati. Ogni chiave puo' sappresentare uno o più oggetti all'interno dello spazio di salvataggio. Questi oggetti sono chiamati flare.

Magma può salvare differenti tipi di oggetti: file, directory, collegamenti simbolici, block e characted device, FIFO pipes. Ogni oggetto è legato ad un flare e vice versa. Un flare di qualsiasi tipo fra i sei precedentemente citati è descritto da alcune proprietà elementari comuni a tutti i flare, come il percorso e la chiave hash associata. Ma ciascuno dei sei tipi ha anche le sue specifiche proprietà. Per esempio, un flare di tipo directory è caratterizzato da alcune informazioni specifiche che non riguardano i collegamenti simbolici. Un flare contenente solo informazioni generiche è definito uncasted mente un flare completo è chiamato casted.

Un flare allo stato uncasted non contiene sufficienti informazioni per operare su dati, ma ha abbastanza informazioni per essere mosso come una sorta di contenitore opaco da un vulcano ad un altro. Per essere facilmente movibile, ogni tipo di flare, directory incluse, è stato reimplementato come un insieme (set) di due file, il primo dei quali contiene informazioni relative al flare (metadata) mentre il secondo contiene i contenuti del flare. Spostare flare attraverso il lava ring viene defintito load balancing (bilanciamento del carico) ed è eseguito per livellare eventuali diseguaglianze di carico fra i nodi nel tentativo di fornire le migliori prestazioni.

Il flare system

Il cuore di Magma è noto come flare system ed è implementato come una pila a livelli (layer stack).

Livelli del flare system
1. API pubblica: flare_system_init(), magma_open(), magma_mknod(), magma_lstat(), ...
2. Lava network: magma_new_node(), route_key(), join_network()
3. Flare objects: magma_new_flare(), magma_search_or_create(), magma_add_to_cache(), ...

magma_mkdir() può essere usata come esempio di attraversamento dei livelli. In questo paragrafo si supporrà che si voglia creare una directory chiamata /esempio. magma_mkdir() è parte del livello API Pubblica layer. È usata per creare una nuova directory, come nel caso della corrispondete controparte mkdir() fornita dalla Libc.

magma_mkdir() prima instrada la richiesta per decidere se puo essere gestita localmente o se richiederà operazioni sulla rete. Per esegure l'instradamento, il percorso /esempio è tradotto nella chiave SHA1 corrispondente 22e45a818d673138296223d4d3aaa7d918f38726. Se l'instradamento evidenzia la necessità di contattare un altro nodo vulcano, la richiesta non lascerà questo livello. Il livello lava network inoltrerà la richiesta al nodo che è responsabile della chiave, continuando il flusso delle operazioni sul nodo remoto. L'instradamento è solo metà dei compiti del livello Lava network, che prevede anche il monitoraggio della rete nonché la creazione, l'aggiornamento e la rimozione dei nodi vulcano.

Sia che si tratti di una richiesta locale o remota, l'ultimo passaggio è eseguito dal livello Flare. Il flare corrispondente alla chiave 22e45a818d673138296223d4d3aaa7d918f38726 sarà ricercato all'interno della cache. Nel caso in cui non venga trovato, sarà creato e caricato dalla copia su disco, se già esistente. Sull'oggetto flare risultante saranno prima di tutto applicati i test sui permessi (permission checking). Se viene accordato il permesso di operare, la richiesta originaria è soddisfatta: in questo esempio, il flare viene specializzato (casted) per rappresentare una directory (se ancora non lo era) e viene salvato su disco.

Instradamento (routing)

Dal momento che ogni nodo vulcano ha a disposizione la completa topologia della rete, l'instradamento si riduce al confronto della chiave del flare con lo spazio di chiavi di ciascun nodo per trovare il nodo che è responsabile del flare. La topologia della rete è anche salvata nella directory distribuita /.dht/ dentro lo stesso filesystem magma. I nodi vulcano possono periodicamente verificare le loro informazioni con i contenuti della directory /.dht/ per sapere se qualcosa è cambiato. I nodi sono anche tenuti a salvare periodicamente le loro informazioni dentro la stessa directory /.dht/.

Bilanciamento del carico (load balancing)

Ogni nodo vulcano ha alcuni parametri dichiarati all'avvio, come ampiezza di banda e spazio su disco disponibili. Un thread separato, chiamato balancer, è dedicato alla distribuzione dello spazio di chiavi per evitare il sovraccarico dei nodi e vice versa. Ogni nodo ha un valore di carico dinamico associato, che è ottenuto dalla formula:

l_n = kl_n \cdot \frac{b_n}{b_a} \cdot \frac{s_n}{s_a}

dove kln è il carico del nodo calcolato su scala logaritmica; bn è la banda del nodo e ba è la banda media; sn è lo spazio disco del nodo e sa lo spazio disco medio

Distribuzione del software Magma

La distribuzione di Magma include un server chiamato magmad e un client chamato mount.magma.

Il server Magma

Il server Magma magmad gestisce l'intercomunicazione fra i nodi della DHT e i client magma. Il flare system fornisce un ciclo per gli eventi di rete che accetta le connessioni entranti. Tre tipi di connessioni sono accettati:

  • La connessione su protocollo flare è usata per operare sui flare: aprire file e directory, leggere e scrivere, ottenere informazioni e scambiare i flare durante le operazioni di bilanciamento del carico. Il protocollo flare è un protocollo binario.
  • La connessione su protocollo internode è usata per scambiare informazioni sulla DHT e per agganciare nuovi nodi. Il protocollo internode è un protocollo binario.
  • La connessions su protocollo console è utilizzata dagli amministratori per interrogare il network lava, eseguire semplici operazioni come elencare i contenuti di una directory e visionare i contenuti di un file e infine impartire alcuni comandi di amministrazione ai nodi. Un esempio di comando di amministrazione è: shutdown (spegnimento del nodo). Il protocollo console è un protocollo testuale accessibile via Telnet.

Il client Magma

Il client Magma magma.mount è basato su FUSE ed è pertanto compatibile con i kernel Linux e BSD. Il client Magma usa una connessione su protocollo flare per contattare e operare con un server Magma a lui prossimo. La topologia della rete e l'ubicazione dei flare è completamente trasparente per i client. Il client semplicemente interroga un server esattamente come se tutte le informazioni fossero ubicate su quel server soltanto.

Un livello crittografico è previsto fra gli sviluppi futuri, in modo da consentire la cifratura dei soli contenuti dei file. La scelta di implementare un supporto crittografico su lato client è dovuta a motivazioni di scalabilità (il tempo di computazione cresce allo stesso ritmo della richiesta computazionale) e di riservatezza delle chiavi crittografiche (le chiavi o le passphrare non saranno mai disponibili al server).

Interfaccia NFS alternativa

Come alternativa al client Magma, che è supportato solo su kernel Linux e BSD, il server Magma offrità una interfaccia NFS per gli altri sistemi UNIX. Dal momento che NFS è uno standard stabile, non possono essere aggiunte nuove funzionalità. Per esempio, il supporto crittografico sopra citato non sarà disponibile per i client che accederanno uno share Magma attraverso NFS.

Collegamenti esterni

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net