MagmaFS

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Magmă
Date generale
Dezvoltator Tx0
Numele complet Sistemul de fișiere tabel distribuit prin magma
Introducere În dezvoltare ... Linux și BSD

MagmaFS este un sistem de fișiere de rețea bazat pe un tabel hash distribuit , scris în C , compatibil cu nucleele Linux și BSD prin utilizarea FUSE .

Terminologie și principii generale

Magma unește multe noduri interconectate de o rețea TCP / IP pentru a forma un spațiu comun de stocare a datelor numit inel de lavă . Fiecare nod este numit vulcan . Fiecare vulcan găzduiește o porțiune dintr-un spațiu cheie comun, delimitat de două taste SHA1 . Fiecare vulcan este, de asemenea, responsabil pentru reproducerea spațiului cheie al nodului anterior, pentru a asigura redundanța datelor. Fiecare tastă poate reprezenta unul sau mai multe obiecte în spațiul de salvare. Aceste obiecte sunt numite rachete .

Magma poate salva diferite tipuri de obiecte: fișiere, directoare, legături simbolice, blocuri și dispozitive caracteristice, conducte FIFO. Fiecare obiect este legat de un flare și invers. Un flare de orice tip dintre cele șase menționate anterior este descris de unele proprietăți elementare comune tuturor flare, cum ar fi calea și cheia hash asociată. Dar fiecare dintre cele șase tipuri are, de asemenea, propriile sale proprietăți specifice. De exemplu, un flare de director este caracterizat de unele informații specifice care nu sunt legate de legături simbolice. Un semnal luminos care conține doar informații generale se numește uncasted în timp ce un episod acut complet este numit turnat.

Un flare netransformat nu conține suficiente informații pentru a opera date, dar are suficiente informații pentru a fi mutat ca un fel de container opac de la un vulcan la altul. Pentru a fi ușor deplasabil, fiecare tip de flare, inclusiv directoare, a fost reimplementat ca un set de două fișiere, dintre care primul conține informații despre flare (metadate) în timp ce al doilea conține conținutul flarei. Mișcarea flarei prin inelul de lavă este denumită echilibrarea sarcinii și se efectuează pentru a elimina orice inegalități de sarcină între noduri, în încercarea de a oferi cele mai bune performanțe.

Sistemul de flare

Inima Magmei este cunoscută ca un sistem de flare și este implementată ca o stivă de straturi.

Nivelurile sistemului de flare
1. API public: flare_system_init (), magma_open (), magma_mknod (), magma_lstat (), ...
2. Rețea de lavă: magma_new_node (), route_key (), join_network ()
3. Obiecte flare: magma_new_flare (), magma_search_or_create (), magma_add_to_cache (), ...

magma_mkdir () poate fi folosit ca exemplu de traversare a nivelului. În această secțiune vom presupune că doriți să creați un director numit / exemplu . magma_mkdir () face parte din stratul API Publish Layer. Este folosit pentru a crea un nou director, cum este cazul cu omologul corespunzător mkdir () furnizat de Libc .

magma_mkdir () direcționează mai întâi solicitarea pentru a decide dacă poate fi gestionată local sau dacă va necesita operațiuni de rețea. Pentru a efectua ruta, calea / exemplul este tradusă în cheia SHA1 corespunzătoare 22e45a818d673138296223d4d3aaa7d918f38726 . Dacă ruta evidențiază necesitatea de a contacta un alt nod vulcan, cererea nu va părăsi acest nivel. Stratul de rețea de lavă va redirecționa cererea către nodul responsabil pentru cheie, continuând fluxul de operațiuni pe nodul la distanță. Rutarea este doar jumătate din sarcinile stratului de rețea Lava , care include, de asemenea, monitorizarea rețelei, precum și crearea, actualizarea și eliminarea nodurilor vulcanice.

Fie că este vorba de o solicitare locală sau de la distanță, ultimul pas îl face stratul Flare . Flare-ul corespunzător cheii 22e45a818d673138296223d4d3aaa7d918f38726 va fi căutat în cache. Dacă nu este găsit, va fi creat și încărcat de pe copie pe disc, dacă există deja. Verificarea permisiunii va fi aplicată mai întâi obiectului flare rezultat. Dacă se acordă permisiunea de operare, cererea inițială este îndeplinită: în acest exemplu, flare-ul este specializat (aruncat) pentru a reprezenta un director (dacă nu era încă) și este salvat pe disc.

Rutare (rutare)

Deoarece fiecare nod vulcan are disponibilă topologia completă a rețelei, rutare este redusă la compararea cheii flare cu spațiul cheie al fiecărui nod pentru a găsi nodul care este responsabil pentru flare. Topologia rețelei este, de asemenea, salvată în directorul distribuit /.dht/ în cadrul sistemului de fișiere magma. Nodurile vulcanului își pot verifica periodic informațiile cu conținutul directorului /.dht/ pentru a vedea dacă s-a schimbat ceva. Nodurile trebuie, de asemenea, să își salveze periodic informațiile în același director /.dht/ .

Echilibrarea sarcinii

Fiecare nod vulcan are unii parametri declarați la pornire, cum ar fi lățimea de bandă disponibilă și spațiul pe disc. Un fir separat, numit echilibru , este dedicat distribuției spațiului cheie pentru a evita supraîncărcarea nodurilor și invers. Fiecare nod are o valoare de încărcare dinamică asociată, care se obține prin formula:

unde este este sarcina nodului calculată pe o scară logaritmică; este banda nodului e este banda de mijloc; este spațiul pe disc al nodului e spațiul mediu pe disc

Distribuție software Magma

Distribuția Magma include un server numit magmad și un client numit mount.magma .

Serverul Magma

Serverul Magma magmad gestionează intercomunicarea dintre nodurile DHT și clienții magma. Sistemul flare oferă o buclă pentru evenimentele de rețea care acceptă conexiunile primite. Sunt acceptate trei tipuri de conexiuni:

  • Conexiunea protocolului de flare este utilizată pentru a opera pe flare: deschideți fișiere și directoare, citiți și scrieți, obțineți informații și schimbați flare în timpul operațiilor de echilibrare a sarcinii. Protocolul flare este un protocol binar.
  • Conexiunea pe protocolul internode este utilizată pentru a schimba informații despre DHT și pentru a conecta noi noduri. Protocolul internod este un protocol binar.
  • Conexiunile protocolului de consolă sunt utilizate de administratori pentru a interoga rețeaua de lavă, pentru a efectua operațiuni simple, cum ar fi listarea conținutului unui director și vizualizarea conținutului unui fișier și, în cele din urmă, emiterea unor comenzi de administrare către noduri. Un exemplu de comandă de administrare este: shutdown (nod shutdown). Protocolul consolei este un protocol textual accesibil prin Telnet .

Clientul Magma

Clientul Magma magma.mount se bazează pe FUSE și, prin urmare, este compatibil cu nucleele Linux și BSD. Clientul Magma folosește o conexiune de protocol flare pentru a contacta și a opera cu un server Magma aproape de acesta. Topologia rețelei și locația flare-urilor este complet transparentă pentru clienți. Clientul interogă pur și simplu un server exact ca și cum toate informațiile ar fi localizate numai pe acel server.

Un nivel criptografic este prevăzut printre evoluțiile viitoare, pentru a permite criptarea numai a conținutului fișierelor. Alegerea de a implementa suport criptografic pe partea clientului se datorează unor motive de scalabilitate (timpul de calcul crește cu aceeași rată ca și cererea de calcul) și confidențialitatea cheilor criptografice (cheile sau frazele de acces nu vor fi niciodată disponibile pentru server ).

Interfață alternativă NFS

Ca alternativă la clientul Magma, care este acceptat doar pe nucleele Linux și BSD, serverul Magma oferă o interfață NFS pentru alte sisteme UNIX. Deoarece NFS este un standard stabil, nu pot fi adăugate caracteristici noi. De exemplu, suportul criptografic menționat anterior nu va fi disponibil pentru clienții care accesează o partajare Magma prin NFS.

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT