Parallel virtueel bestandssysteem - Parallel Virtual File System
| Oorspronkelijke auteur (s) | Clemson University , Argonne National Laboratory , Ohio Supercomputer Center |
|---|---|
| Ontwikkelaar (s) | Walt Ligon, Rob Ross, Phil Carns, Pete Wyckoff, Neil Miller, Rob Latham, Sam Lang, Brad Settlemyer |
| Eerste uitgave | 2003 |
| Stabiele vrijlating | 2.8.2 / 1 januari 2010
|
| Geschreven in | C |
| Besturingssysteem | Linux-kernel |
| Licentie | LGPL |
| Website | web |
Het Parallel Virtual File System ( PVFS ) is een open-source parallel bestandssysteem . Een parallel bestandssysteem is een type gedistribueerd bestandssysteem dat bestandsgegevens over meerdere servers verdeelt en zorgt voor gelijktijdige toegang door meerdere taken van een parallelle applicatie. PVFS is ontworpen voor gebruik in grootschalige clustercomputers . PVFS richt zich op hoogwaardige toegang tot grote datasets. Het bestaat uit een serverproces en een clientbibliotheek, die beide volledig zijn geschreven met code op gebruikersniveau. Met een Linux- kernelmodule en pvfs-clientproces kan het bestandssysteem worden aangekoppeld en gebruikt met standaardhulpprogramma's. De clientbibliotheek biedt toegang met hoge prestaties via de Message Passing Interface (MPI). PVFS wordt gezamenlijk ontwikkeld door The Parallel Architecture Research Laboratory aan de Clemson University en de Mathematics and Computer Science Division van Argonne National Laboratory en het Ohio Supercomputer Center . PVFS-ontwikkeling is gefinancierd door NASA Goddard Space Flight Center , het DOE Office of Science Advanced Scientific Computing Research- programma, NSF PACI- en HECURA-programma's en andere overheids- en particuliere instanties. PVFS staat nu bekend als OrangeFS in zijn nieuwste ontwikkelingstak.
Geschiedenis
PVFS werd voor het eerst ontwikkeld in 1993 door Walt Ligon en Eric Blumer als een parallel bestandssysteem voor Parallel Virtual Machine (PVM) als onderdeel van een NASA-subsidie om de I / O-patronen van parallelle programma's te bestuderen. PVFS versie 0 was gebaseerd op Vesta, een parallel bestandssysteem ontwikkeld door IBM TJ Watson Research Center . Vanaf 1994 herschreef Rob Ross PVFS om TCP / IP te gebruiken en week hij af van veel van de oorspronkelijke Vesta-ontwerppunten. PVFS versie 1 was gericht op een cluster van DEC Alpha-werkstations die via een geschakelde FDDI in een netwerk waren opgenomen . Net als Vesta verdeelde PVFS gegevens over meerdere servers en stond I / O-verzoeken toe op basis van een bestandsweergave die een gestaag toegangspatroon beschreef. In tegenstelling tot Vesta waren de striping en het uitzicht niet afhankelijk van een gangbare recordgrootte. Ross 'onderzoek was gericht op het plannen van schijf-I / O wanneer meerdere clients toegang hadden tot hetzelfde bestand. Eerdere resultaten hadden aangetoond dat planning volgens het best mogelijke schijftoegangspatroon de voorkeur had. Ross toonde aan dat dit afhankelijk was van een aantal factoren, waaronder de relatieve snelheid van het netwerk en de details van de bestandsweergave. In sommige gevallen had een planning op basis van netwerkverkeer de voorkeur, waardoor een dynamisch aanpasbare planning de beste algehele prestaties opleverde.
Eind 1994 ontmoette Ligon Thomas Sterling en John Dorband in het Goddard Space Flight Center (GSFC) en bespraken hun plannen om de eerste Beowulf- computer te bouwen . Er werd overeengekomen dat PVFS naar Linux zou worden geport en op de nieuwe machine zou worden weergegeven. In de daaropvolgende jaren werkten Ligon en Ross met de GSFC-groep, waaronder Donald Becker, Dan Ridge en Eric Hendricks. In 1997 vroeg CA Sterling tijdens een clusterbijeenkomst in Pasadena of PVFS zou worden vrijgegeven als een open source-pakket.
PVFS2
In 1999 stelde Ligon de ontwikkeling voor van een nieuwe versie van PVFS, aanvankelijk genaamd PVFS2000 en later PVFS2. Het ontwerp is in eerste instantie ontwikkeld door Ligon, Ross en Phil Carns. Ross voltooide zijn doctoraat in 2000 en verhuisde naar Argonne National Laboratory en het ontwerp en de implementatie werden uitgevoerd door Ligon, Carns, Dale Witchurch en Harish Ramachandran aan de Clemson University , Ross, Neil Miller en Rob Latham aan het Argonne National Laboratory , en Pete. Wyckoff bij Ohio Supercomputer Center. Het nieuwe bestandssysteem werd uitgebracht in 2003. Het nieuwe ontwerp bevatte objectservers, gedistribueerde metadata, weergaven op basis van MPI, ondersteuning voor meerdere netwerktypes en een softwarearchitectuur voor eenvoudige experimenten en uitbreidbaarheid.
PVFS-versie 1 is in 2005 buiten gebruik gesteld. PVFS-versie 2 wordt nog steeds ondersteund door Clemson en Argonne. Carns voltooide zijn doctoraat in 2006 en trad toe tot Axicom, Inc. waar PVFS werd ingezet op duizenden knooppunten voor datamining. In 2008 verhuisde Carns naar Argonne en blijft samen met Ross, Latham en Sam Lang aan PVFS werken. Brad Settlemyer ontwikkelde een spiegelsubsysteem bij Clemson en later een gedetailleerde simulatie van PVFS die werd gebruikt voor onderzoek naar nieuwe ontwikkelingen. Settlemyer is nu in het Oak Ridge National Laboratory . in 2007 begon Argonne met het porten van PVFS voor gebruik op een IBM Blue Gene / P. In 2008 begon Clemson met het ontwikkelen van extensies voor het ondersteunen van grote mappen met kleine bestanden, beveiligingsverbeteringen en redundantiemogelijkheden. Omdat veel van deze doelen in strijd waren met de ontwikkeling van Blue Gene, werd een tweede tak van de CVS-broncodestructuur gemaakt en "Orange" genoemd en de oorspronkelijke tak werd "Blue" genoemd. PVFS en OrangeFS volgen elkaar nauwlettend, maar vertegenwoordigen twee verschillende groepen gebruikersvereisten. De meeste patches en upgrades worden op beide branches toegepast. Vanaf 2011 is OrangeFS de belangrijkste ontwikkelingslijn.
Kenmerken
In een cluster dat PVFS gebruikt, worden knooppunten aangeduid als een of meer van: client, dataserver, metadataserver. Gegevensservers bevatten bestandsgegevens. Metadataservers bevatten metadata, waaronder stat-info, attributen en datafile-handles, evenals directory-items. Clients voeren toepassingen uit die gebruikmaken van het bestandssysteem door verzoeken via het netwerk naar de servers te sturen.
Object-gebaseerd ontwerp
PVFS heeft een objectgebaseerd ontwerp, dat wil zeggen dat alle PVFS-serververzoeken betrekking hadden op objecten die dataspaces worden genoemd. Een dataspace kan worden gebruikt om bestandsdata, bestandsmetadata, directory-metadata, directory-items of symbolische koppelingen op te slaan. Elke dataspace in een bestandssysteem heeft een unieke handle. Elke client of server kan op basis van de handle opzoeken welke server de gegevensruimte bevat. Een gegevensruimte heeft twee componenten: een bytestream en een set sleutel / waarde-paren. De bytestream is een geordende reeks bytes, meestal gebruikt om bestandsgegevens vast te houden, en de sleutel / waarde-paren worden meestal gebruikt om metagegevens vast te houden. Het objectgebaseerde ontwerp is typerend geworden voor veel gedistribueerde bestandssystemen, waaronder Luster , Panasas en pNFS .
Scheiding van data en metadata
PVFS is zo ontworpen dat een client eenmaal toegang heeft tot een server voor metadata en vervolgens toegang heeft tot de dataservers zonder verdere interactie met de metadataservers. Dit verwijdert een kritiek knelpunt uit het systeem en zorgt voor veel betere prestaties.
MPI-gebaseerde verzoeken
Wanneer een clientprogramma gegevens opvraagt bij PVFS, kan het een beschrijving van de gegevens leveren die is gebaseerd op MPI_Datatypes. Met deze functie kunnen MPI-bestandsweergaven direct door het bestandssysteem worden geïmplementeerd. MPI_Datypes kunnen complexe niet-aaneengesloten gegevenspatronen beschrijven. De PVFS-server en datacodes implementeren datastromen die efficiënt data uitwisselen tussen meerdere servers en clients.
Meerdere netwerkondersteuning
PVFS gebruikt een netwerklaag met de naam BMI die een niet-blokkerende berichtinterface biedt die speciaal is ontworpen voor bestandssystemen. BMI heeft meerdere implementatiemodules voor een aantal verschillende netwerken die worden gebruikt in high-performance computing, waaronder TCP / IP, Myrinet , Infiniband en Portals .
Staatloze (lockless) servers
PVFS-servers zijn zo ontworpen dat ze geen enkele status met elkaar of met clients delen. Als een server crasht, kan een andere gemakkelijk in plaats daarvan worden herstart. Updates worden uitgevoerd zonder gebruik van sloten.
Implementatie op gebruikersniveau
PVFS-clients en -servers draaien op gebruikersniveau. Kernelaanpassingen zijn niet nodig. Er is een optionele kernelmodule waarmee een PVFS-bestandssysteem kan worden gemount zoals elk ander bestandssysteem, of programma's kunnen rechtstreeks linken naar een gebruikersinterface zoals MPI-IO of een Posix- achtige interface. Deze functie maakt PVFS eenvoudig te installeren en minder vatbaar voor systeemcrashes.
Interface op systeemniveau
De PVFS-interface is ontworpen voor integratie op systeemniveau. Het heeft overeenkomsten met de Linux VFS , waardoor het gemakkelijk te implementeren is als een koppelbaar bestandssysteem, maar het is evenzeer aanpasbaar aan gebruikersniveau-interfaces zoals MPI-IO of Posix- achtige interfaces. Het legt veel van de kenmerken van het onderliggende bestandssysteem bloot, zodat interfaces er desgewenst gebruik van kunnen maken.
Architectuur
PVFS bestaat uit 4 hoofdcomponenten en een aantal hulpprogramma's. De componenten zijn de PVFS2-server, de pvfslib, de PVFS-client-core en de PVFS-kernelmodule. Hulpprogramma's omvatten het karma-beheerprogramma, hulpprogramma's (bijv. Pvfs-ping, pvfs-ls, pvfs-cp, enz.) Die allemaal rechtstreeks op het bestandssysteem werken zonder de kernelmodule te gebruiken (voornamelijk voor onderhoud en testen). Een ander belangrijk ontwerppunt is het PVFS-protocol dat de berichten beschrijft die tussen client en server worden uitgewisseld, hoewel dit strikt genomen geen onderdeel is.
PVFS2-server
De PVFS-server draait als een proces op een knooppunt dat is aangewezen als een I / O-knooppunt. I / O-knooppunten zijn vaak toegewezen knooppunten, maar het kunnen ook gewone knooppunten zijn die ook applicatietaken uitvoeren. De PVFS-server draait meestal als root, maar kan desgewenst als gebruiker worden uitgevoerd. Elke server kan meerdere afzonderlijke bestandssystemen beheren en is aangewezen om te worden uitgevoerd als metadataserver, dataserver of beide. Alle configuratie wordt beheerd door een configuratiebestand dat is opgegeven op de opdrachtregel, en alle servers die een bepaald bestandssysteem beheren, gebruiken hetzelfde configuratiebestand. De server ontvangt verzoeken via het netwerk, voert het verzoek uit waarbij mogelijk schijf-I / O betrokken is en reageert terug op de oorspronkelijke aanvrager. Verzoeken komen normaal gesproken van clientknooppunten waarop applicatietaken worden uitgevoerd, maar kunnen ook van andere servers komen. De server is samengesteld uit de verzoekprocessor, de taaklaag, Trove-, BMI- en stroomlagen.
Verzoek processor
De verzoekprocessor bestaat uit de hoofdlus van het serverproces en een aantal toestandsmachines. State-machines zijn gebaseerd op een eenvoudige taal die is ontwikkeld voor PVFS en die gelijktijdigheid binnen de server en client beheren. Een toestandsmachine bestaat uit een aantal toestanden, die elk een C-toestandsactiefunctie uitvoeren of een geneste (subroutine) toestandsmachine aanroepen. In beide gevallen selecteert u met retourcodes naar welke staat u wilt gaan. Statusactiefuncties verzenden doorgaans een taak via de taaklaag die een soort I / O uitvoert via Trove of BMI. Taken zijn niet-blokkerend, zodat zodra een taak is uitgegeven, de uitvoering van de statusmachine wordt uitgesteld, zodat een andere statusmachine kan draaien om aan een ander verzoek te voldoen. Wanneer de taken zijn voltooid, start de hoofdlus de bijbehorende statusmachine opnieuw. De verzoekprocessor heeft toestandsmachines voor elk van de verschillende verzoektypen die zijn gedefinieerd in het PVFS-verzoekprotocol plus een aantal geneste toestandsmachines die intern worden gebruikt. De state machine-architectuur maakt het relatief eenvoudig om nieuwe verzoeken aan de server toe te voegen om functies toe te voegen of te optimaliseren voor specifieke situaties.
Joblaag
De Job-laag biedt een gemeenschappelijke interface voor het indienen van Trove-, BMI- en Flow-taken en het rapporteren van hun voltooiing. Het implementeert ook de aanvraagplanner als een niet-blokkerende taak die registreert wat voor soort aanvragen op welke objecten worden uitgevoerd en consistentiefouten voorkomt doordat tegelijkertijd met dezelfde bestandsgegevens wordt gewerkt.
Trove
Trove beheert de I / O naar de objecten die op de lokale server zijn opgeslagen. Trove werkt met verzamelingen dataruimte. Een collectie heeft zijn eigen onafhankelijke handle-ruimte en wordt gebruikt om verschillende PVFS-bestandssystemen te implementeren. Een dataruimte is een PVFS-object en heeft zijn eigen unieke (binnen de collectie) handle en wordt opgeslagen op één server. Handles worden aan servers toegewezen via een tabel in het configuratiebestand. Een dataruimte bestaat uit twee delen: een bytestream en een set sleutel / waarde-paren. Een bytestream is een reeks bytes van onbepaalde lengte en wordt gebruikt om bestandsgegevens op te slaan, meestal in een bestand op het lokale bestandssysteem. Sleutel / waarde-paren worden gebruikt om metagegevens, attributen en directoryvermeldingen op te slaan. Trove heeft een goed gedefinieerde interface en kan op verschillende manieren worden geïmplementeerd. Tot op heden was de enige implementatie de Trove-dbfs-implementatie die bytestreams opslaat in bestanden en sleutel / waarde-paren in een Berkeley DB- database. Trove-operaties zijn niet-blokkerend, de API biedt postfuncties om de verschillende componenten en functies te lezen of te schrijven om te controleren of te wachten op voltooiing.
BMI
Stromen
pvfslib
PVFS-client-core
PVFS-kernelmodule
Zie ook
Referenties
Externe links
- Officiële website
- Orange File System - Een tak van het Parallel Virtual File System
- Architectuur van een parallel bestandssysteem van de volgende generatie
- Video archief