Sistem de fișiere virtuale paralel - Parallel Virtual File System
| Autori originali | Universitatea Clemson , Laboratorul Național Argonne , Centrul de Supercomputer Ohio |
|---|---|
| Dezvoltatori | Walt Ligon, Rob Ross, Phil Carns, Pete Wyckoff, Neil Miller, Rob Latham, Sam Lang, Brad Settlemyer |
| Eliberarea inițială | 2003 |
| Versiune stabila | 2.8.2 / 1 ianuarie 2010
|
| Scris in | C |
| Sistem de operare | Kernel Linux |
| Licență | LGPL |
| Site-ul web | web |
Paralel Fișier Virtual System ( PVFS ) este un open-source sistem de fișiere paralel . Un sistem de fișiere paralel este un tip de sistem de fișiere distribuit care distribuie date de fișiere pe mai multe servere și oferă acces simultan prin mai multe sarcini ale unei aplicații paralele. PVFS a fost conceput pentru a fi utilizat în computere pe scară largă . PVFS se concentrează pe accesul de înaltă performanță la seturi mari de date. Acesta constă dintr-un proces server și o bibliotecă client, ambele fiind scrise în întregime din cod la nivel de utilizator. Un modul kernel Linux și un proces pvfs-client permit montarea și utilizarea sistemului de fișiere cu utilitare standard. Biblioteca client oferă acces de înaltă performanță prin interfața de transmitere a mesajelor (MPI). PVFS este dezvoltat în comun între Laboratorul de cercetare în arhitectură paralelă de la Universitatea Clemson și Divizia de matematică și informatică din laboratorul național Argonne și Centrul de supercomputer din Ohio . Dezvoltarea PVFS a fost finanțată de NASA Goddard Space Flight Center , programul DOE Office of Science Advanced Scientific Computing Research , programele NSF PACI și HECURA și alte agenții guvernamentale și private. PVFS este acum cunoscut sub numele de OrangeFS în cea mai nouă ramură de dezvoltare.
Istorie
PVFS a fost dezvoltat pentru prima dată în 1993 de Walt Ligon și Eric Blumer ca un sistem de fișiere paralel pentru Mașina Virtuală Paralelă (PVM) ca parte a unei subvenții NASA pentru studierea modelelor I / O ale programelor paralele. Versiunea PVFS 0 se bazează pe Vesta, un sistem de fișiere paralel dezvoltat la IBM TJ Watson Research Center . Începând din 1994, Rob Ross a rescris PVFS pentru a utiliza TCP / IP și a plecat de la multe dintre punctele originale de proiectare Vesta. PVFS versiunea 1 a fost direcționată către un cluster de stații de lucru DEC Alpha conectate în rețea utilizând FDDI comutat . La fel ca Vesta, PVFS a stripat date pe mai multe servere și a permis cererile de I / O pe baza unei vizualizări a fișierelor care descria un model de acces strident. Spre deosebire de Vesta, vizualizarea și vizualizarea nu depindeau de o dimensiune de înregistrare comună. Cercetările lui Ross s-au concentrat pe programarea I / O pe disc atunci când mai mulți clienți accesau același fișier. Rezultatele anterioare au arătat că planificarea în conformitate cu cel mai bun model posibil de acces pe disc era preferabilă. Ross a arătat că aceasta depinde de o serie de factori, inclusiv viteza relativă a rețelei și detaliile vizualizării fișierului. În unele cazuri, o programare bazată pe traficul de rețea a fost preferabilă, astfel un program adaptabil dinamic a oferit cea mai bună performanță generală.
La sfârșitul anului 1994, Ligon s-a întâlnit cu Thomas Sterling și John Dorband la Goddard Space Flight Center (GSFC) și a discutat despre planurile lor de a construi primul computer Beowulf . S-a convenit ca PVFS să fie portat pe Linux și să fie prezentat pe noua mașină. În următorii câțiva ani, Ligon și Ross au lucrat cu grupul GSFC, inclusiv Donald Becker, Dan Ridge și Eric Hendricks. În 1997, la o reuniune de cluster din Pasadena, CA Sterling a cerut ca PVFS să fie lansat ca pachet open source.
PVFS2
În 1999, Ligon a propus dezvoltarea unei noi versiuni a PVFS numită inițial PVFS2000 și ulterior PVFS2. Designul a fost inițial dezvoltat de Ligon, Ross și Phil Carns. Ross și-a finalizat doctoratul în 2000 și s-a mutat la Laboratorul Național Argonne, iar proiectarea și implementarea au fost realizate de Ligon, Carns, Dale Witchurch și Harish Ramachandran la Universitatea Clemson , Ross, Neil Miller și Rob Latham la Laboratorul Național Argonne și Pete. Wyckoff la Ohio Supercomputer Center. Noul sistem de fișiere a fost lansat în 2003. Noul design a inclus servere de obiecte, metadate distribuite, vizualizări bazate pe MPI, suport pentru mai multe tipuri de rețea și o arhitectură software pentru experimentare și extensibilitate ușoară.
PVFS versiunea 1 a fost retrasă în 2005. PVFS versiunea 2 este încă acceptată de Clemson și Argonne. Carns și-a finalizat doctoratul în 2006 și s-a alăturat companiei Axicom, Inc., unde PVFS a fost implementat pe câteva mii de noduri pentru exploatarea datelor. În 2008 Carns s-a mutat la Argonne și continuă să lucreze la PVFS împreună cu Ross, Latham și Sam Lang. Brad Settlemyer a dezvoltat un subsistem de oglindire la Clemson, iar ulterior o simulare detaliată a PVFS utilizate pentru cercetarea noilor dezvoltări. Settlemyer se află acum la Laboratorul Național Oak Ridge . în 2007, Argonne a început să porteze PVFS pentru utilizare pe un IBM Blue Gene / P. În 2008, Clemson a început să dezvolte extensii pentru a susține directoare mari de fișiere mici, îmbunătățiri de securitate și capacități de redundanță. Deoarece multe dintre aceste obiective au intrat în conflict cu dezvoltarea pentru Blue Gene, a fost creată o a doua ramură a arborelui sursă CVS și denumită „Portocaliu”, iar ramura originală a fost denumită „Albastru”. PVFS și OrangeFS se urmăresc foarte strâns, dar reprezintă două grupuri diferite de cerințe ale utilizatorilor. Cele mai multe patch-uri și upgrade-uri sunt aplicate ambelor ramuri. Începând din 2011, OrangeFS este principala linie de dezvoltare.
Caracteristici
Într-un cluster care utilizează PVFS, nodurile sunt desemnate ca unul sau mai multe dintre: client, server de date, server de metadate. Serverele de date conțin date de fișiere. Serverele de metadate păstrează metadatele includ stat-info, atribute și date-file-handles, precum și intrări de director. Clienții rulează aplicații care utilizează sistemul de fișiere trimitând cereri către serverele din rețea.
Proiectare bazată pe obiecte
PVFS are un design bazat pe obiecte, adică toate cererile de server PVFS implică obiecte numite spații de date. Un spațiu de date poate fi utilizat pentru a păstra date de fișiere, metadate de fișiere, metadate de director, intrări de director sau linkuri simbolice. Fiecare spațiu de date dintr-un sistem de fișiere are un mâner unic. Orice client sau server poate căuta serverul care deține spațiul de date pe baza mânerului. Un spațiu de date are două componente: un bytestream și un set de perechi cheie / valoare. Bytestream-ul este o secvență ordonată de octeți, utilizată de obicei pentru a păstra date de fișiere, iar perechile cheie / valoare sunt utilizate de obicei pentru a păstra metadatele. Designul bazat pe obiecte a devenit tipic pentru multe sisteme de fișiere distribuite, inclusiv Luster , Panasas și pNFS .
Separarea datelor și metadatelor
PVFS este conceput astfel încât un client să poată accesa un server pentru metadate o singură dată și apoi să poată accesa serverele de date fără interacțiuni suplimentare cu serverele de metadate. Acest lucru elimină un blocaj critic din sistem și permite performanțe mult mai mari.
Cereri bazate pe MPI
Când un program client solicită date de la PVFS, acesta poate furniza o descriere a datelor care se bazează pe MPI_Datatypes. Această facilitate permite vizualizarea fișierelor MPI să fie implementată direct de sistemul de fișiere. MPI_Datatypes pot descrie modele complexe de date necontigue. Serverul PVFS și codurile de date implementează fluxuri de date care transferă eficient date între mai multe servere și clienți.
Suport pentru mai multe rețele
PVFS folosește un strat de rețea numit BMI care oferă o interfață de mesaje care nu blochează, concepută special pentru sistemele de fișiere. BMI are mai multe module de implementare pentru o serie de rețele diferite utilizate în calculele de înaltă performanță, inclusiv TCP / IP, Myrinet , Infiniband și Portaluri .
Servere fără stat (fără blocare)
Serverele PVFS sunt proiectate astfel încât să nu împărtășească nici o stare între ele sau cu clienții. Dacă un server se blochează, altul poate fi repornit cu ușurință în locul său. Actualizările sunt efectuate fără utilizarea blocărilor.
Implementare la nivel de utilizator
Clienții și serverele PVFS rulează la nivel de utilizator. Nu sunt necesare modificări ale nucleului. Există un modul de kernel opțional care permite montarea unui sistem de fișiere PVFS ca orice alt sistem de fișiere, sau programele se pot conecta direct la o interfață de utilizator, cum ar fi MPI-IO sau o interfață de tip Posix . Această caracteristică face ca PVFS să fie ușor de instalat și mai puțin predispus la provocarea blocării sistemului.
Interfață la nivel de sistem
Interfața PVFS este concepută pentru a se integra la nivel de sistem. Are asemănări cu Linux VFS , ceea ce îl face ușor de implementat ca sistem de fișiere montabil, dar este la fel de adaptabil la interfețe la nivel de utilizator, cum ar fi interfețele MPI-IO sau Posix . Acesta expune multe dintre caracteristicile sistemului de fișiere care stau la baza, astfel încât interfețele să poată profita de ele, dacă se dorește.
Arhitectură
PVFS constă din 4 componente principale și un număr de programe utilitare. Componentele sunt PVFS2-server, pvfslib, PVFS-client-core și modulul kernel PVFS. Utilitățile includ instrumentul de gestionare a karmei, utilitare (de exemplu, pvfs-ping, pvfs-ls, pvfs-cp etc.) care funcționează direct pe sistemul de fișiere fără a utiliza modulul kernel (în principal pentru întreținere și testare). Un alt punct cheie de proiectare este protocolul PVFS care descrie mesajele transmise între client și server, deși acest lucru nu este strict o componentă.
Server PVFS2
Serverul PVFS rulează ca un proces pe un nod desemnat ca nod I / O. Nodurile I / O sunt adesea noduri dedicate, dar pot fi noduri obișnuite care rulează și sarcini ale aplicației. Serverul PVFS rulează de obicei ca root, dar poate fi rulat ca utilizator, dacă este preferat. Fiecare server poate gestiona mai multe sisteme de fișiere distincte și este desemnat să ruleze ca server de metadate, server de date sau ambele. Toată configurația este controlată de un fișier de configurare specificat pe linia de comandă și toate serverele care gestionează un anumit sistem de fișiere folosesc același fișier de configurare. Serverul primește cereri prin rețea, efectuează cererea care poate implica I / O pe disc și răspunde înapoi la solicitantul original. Solicitările provin în mod normal de la nodurile clientului care execută sarcini ale aplicației, dar pot proveni de la alte servere. Serverul este compus din procesorul de solicitare, stratul job, Trove, BMI și straturile de flux.
Solicitați procesor
Procesorul de solicitare constă din bucla principală a procesului serverului și un număr de mașini de stare. Mașinile de stat se bazează pe un limbaj simplu dezvoltat pentru PVFS care gestionează concurența în cadrul serverului și clientului. O mașină de stare constă dintr-un număr de stări, fiecare dintre acestea executând fie o funcție de acțiune de stare C, fie apelează o mașină de stare imbricată (subrutină). În ambele cazuri, codurile de returnare selectează în ce stare urmează. Funcțiile de acțiune a statului trimit de obicei un job prin stratul de job care efectuează un fel de I / O prin Trove sau BMI. Lucrările nu sunt blocante, astfel încât odată ce un job este emis, execuția mașinii de stat este amânată, astfel încât o altă mașină de stat să poată rula servirea unei alte cereri. Când joburile sunt finalizate, bucla principală repornește mașina de stare asociată. Procesorul de solicitare are mașini de stare pentru fiecare dintre diferitele tipuri de solicitări definite în protocolul de solicitare PVFS plus un număr de mașini de stare imbricate utilizate intern. Arhitectura mașinii de stat face relativ ușoară adăugarea de cereri noi la server pentru a adăuga caracteristici sau pentru a optimiza pentru situații specifice.
Stratul Job
Stratul Job oferă o interfață comună pentru trimiterea joburilor Trove, BMI și flux și raportarea finalizării acestora. De asemenea, implementează programatorul de solicitări ca o lucrare care nu blochează, care înregistrează ce fel de solicitări sunt în curs de desfășurare pe care obiecte și previne erorile de consistență datorate operației simultane pe aceleași date de fișiere.
Trove
Trove gestionează I / O la obiectele stocate pe serverul local. Trove operează pe colecții de spații de date. O colecție are propriul spațiu de control independent și este utilizată pentru a implementa sisteme de fișiere PVFS distincte. Un spațiu de date este un obiect PVFS și are propriul său controler unic (în cadrul colecției) și este stocat pe un server. Mânerele sunt mapate la servere printr-un tabel din fișierul de configurare. Un spațiu de date constă din două părți: un bytestream și un set de perechi cheie / valoare. Un bytestream este o secvență de octeți de lungime nedeterminată și este utilizat pentru a stoca date de fișiere, de obicei într-un fișier din sistemul de fișiere local. Perechile cheie / valoare sunt utilizate pentru a stoca metadatele, atributele și intrările din director. Trove are o interfață bine definită și poate fi implementată în diferite moduri. Până în prezent, singura implementare a fost implementarea Trove-dbfs care stochează fluxuri secundare în fișiere și perechi cheie / valoare într-o bază de date Berkeley DB . Operațiunile Trove nu sunt blocante, API oferă funcții de postare pentru a citi sau scrie diferitele componente și funcții pentru a verifica sau aștepta finalizarea.
IMC
Fluxuri
pvfslib
PVFS-client-core
Modulul kernel PVFS
Vezi si
Referințe
linkuri externe
- Site oficial
- Sistem de fișiere portocaliu - O ramură a sistemului de fișiere virtual paralel
- Arhitectura unui sistem de fișiere paralel de generație următoare
- Arhivă video