Parallelt virtuelt filsystem - Parallel Virtual File System

Parallelt virtuelt filsystem
Oprindelige forfatter (e) Clemson University , Argonne National Laboratory , Ohio Supercomputer Center
Udvikler (r) Walt Ligon, Rob Ross, Phil Carns, Pete Wyckoff, Neil Miller, Rob Latham, Sam Lang, Brad Settlemyer
Første udgivelse 2003
Stabil frigivelse
2.8.2 / 1. januar 2010 ; 11 år siden  ( 01-01-2010 )
Skrevet i C
Operativ system Linux-kerne
Licens LGPL
Internet side web .arkiv .org / web / 20160701052501 / http: // www .pvfs .org /

Den Parallel Virtual File System ( PVFS ) er et open source parallel filsystem . Et parallelt filsystem er en type distribueret filsystem, der distribuerer fildata på tværs af flere servere og giver samtidig adgang til flere opgaver i en parallel applikation. PVFS blev designet til brug i stor skala klyngecomputer . PVFS fokuserer på højtydende adgang til store datasæt. Den består af en serverproces og et klientbibliotek, som begge er skrevet udelukkende med kode på brugerniveau. Et Linux- kernemodul og en pvfs-klientproces tillader, at filsystemet monteres og bruges sammen med standardværktøjer. Klientbiblioteket giver adgang til høj ydeevne via MPI ( Message Passing Interface ). PVFS udvikles i fællesskab mellem The Parallel Architecture Research Laboratory ved Clemson University og Division Mathematics and Computer Science ved Argonne National Laboratory og Ohio Supercomputer Center . PVFS-udvikling er blevet finansieret af NASA Goddard Space Flight Center , DOE Office of Science Advanced Scientific Computing Research- programmet, NSF PACI- og HECURA-programmer og andre offentlige og private agenturer. PVFS er nu kendt som OrangeFS i sin nyeste udviklingsgren.

Historie

PVFS blev først udviklet i 1993 af Walt Ligon og Eric Blumer som et parallelt filsystem til Parallel Virtual Machine (PVM) som en del af et NASA-tilskud til at studere I / O-mønstre for parallelle programmer. PVFS version 0 var baseret på Vesta, et parallelt filsystem udviklet på IBM TJ Watson Research Center . Fra og med 1994 skrev Rob Ross om PVFS for at bruge TCP / IP og forlod mange af de oprindelige Vesta-designpunkter. PVFS version 1 var målrettet mod en klynge af DEC Alpha-arbejdsstationer, der var netværket ved hjælp af skiftet FDDI . Ligesom Vesta stripede PVFS data på tværs af flere servere og tillod I / O-anmodninger baseret på en filvisning, der beskrev et skridtadgangsmønster. I modsætning til Vesta var stribningen og udsigten ikke afhængig af en fælles rekordstørrelse. Ross 'forskning fokuserede på planlægning af disk I / O, når flere klienter havde adgang til den samme fil. Tidligere resultater havde vist, at planlægning efter det bedst mulige diskadgangsmønster var at foretrække. Ross viste, at dette var afhængig af en række faktorer, herunder den relative hastighed på netværket og detaljerne i filvisningen. I nogle tilfælde foretrak en planlægning baseret på netværkstrafik, og en dynamisk tilpasningsbar tidsplan gav den bedste samlede præstation.

I slutningen af ​​1994 mødtes Ligon med Thomas Sterling og John Dorband på Goddard Space Flight Center (GSFC) og drøftede deres planer om at bygge den første Beowulf- computer. Det blev aftalt, at PVFS ville blive porteret til Linux og blive vist på den nye maskine. I løbet af de næste mange år arbejdede Ligon og Ross med GSFC-gruppen, herunder Donald Becker, Dan Ridge og Eric Hendricks. I 1997 bad CA Sterling på et klyngemøde i Pasadena, at PVFS skulle frigives som en open source-pakke.

PVFS2

I 1999 foreslog Ligon udviklingen af ​​en ny version af PVFS, der oprindeligt blev kaldt PVFS2000 og senere PVFS2. Designet blev oprindeligt udviklet af Ligon, Ross og Phil Carns. Ross afsluttede sin ph.d. i 2000 og flyttede til Argonne National Laboratory, og designet og implementeringen blev udført af Ligon, Carns, Dale Witchurch og Harish Ramachandran ved Clemson University , Ross, Neil Miller og Rob Latham ved Argonne National Laboratory og Pete Wyckoff på Ohio Supercomputer Center. Det nye filsystem blev frigivet i 2003. Det nye design indeholdt objektservere, distribuerede metadata, visninger baseret på MPI, understøttelse af flere netværkstyper og en softwarearkitektur for nem eksperimentering og udvidelse.

PVFS version 1 blev pensioneret i 2005. PVFS version 2 understøttes stadig af Clemson og Argonne. Carns afsluttede sin ph.d. i 2006 og sluttede sig til Axicom, Inc. hvor PVFS blev indsat på flere tusinde noder til datamining. I 2008 flyttede Carns til Argonne og fortsætter med at arbejde på PVFS sammen med Ross, Latham og Sam Lang. Brad Settlemyer udviklede et spejlingsundersystem i Clemson og senere en detaljeret simulering af PVFS, der blev brugt til at undersøge nye udviklinger. Settlemyer er nu på Oak Ridge National Laboratory . i 2007 begyndte Argonne at portere PVFS til brug på en IBM Blue Gene / P. I 2008 begyndte Clemson at udvikle udvidelser til understøttelse af store mapper med små filer, sikkerhedsforbedringer og redundansfunktioner. Da mange af disse mål var i konflikt med udviklingen for Blue Gene, blev en anden gren af ​​CVS-kildetræet oprettet og døbt "Orange", og den oprindelige gren blev kaldt "Blå". PVFS og OrangeFS sporer hinanden meget nøje, men repræsenterer to forskellige grupper af brugerkrav. De fleste programrettelser og opgraderinger anvendes på begge grene. Fra og med 2011 er OrangeFS den vigtigste udviklingslinje.

Funktioner

I en klynge, der bruger PVFS, er noder udpeget som en eller flere af: klient, dataserver, metadataserver. Dataservere holder fildata. Metadata-servere indeholder metadata inkluderer stat-info, attributter og datafilhåndtag samt biblioteksindgange. Klienter kører applikationer, der bruger filsystemet ved at sende anmodninger til serverne via netværket.

Objektbaseret design

PVFS har et objektbaseret design, det vil sige alle PVFS-serveranmodninger involverede objekter kaldet dataspaces. Et datarum kan bruges til at holde fildata, filmetadata, katalogmetadata, katalogindgange eller symbolske links. Hvert datarum i et filsystem har et unikt håndtag. Enhver klient eller server kan slå op, hvilken server der har datarummet baseret på håndtaget. Et datarum har to komponenter: en bytestream og et sæt nøgle / værdipar. Bytestream er en ordnet sekvens af bytes, der typisk bruges til at holde fildata, og nøgle / værdipar bruges typisk til at indeholde metadata. Det objektbaserede design er blevet typisk for mange distribuerede filsystemer, herunder Luster , Panasas og pNFS .

Adskillelse af data og metadata

PVFS er designet, så en klient kan få adgang til en server for metadata én gang og derefter få adgang til dataserverne uden yderligere interaktion med metadataserverne. Dette fjerner en kritisk flaskehals fra systemet og giver meget større ydeevne.

MPI-baserede anmodninger

Når et klientprogram anmoder om data fra PVFS, kan det give en beskrivelse af de data, der er baseret på MPI_Datatypes. Denne facilitet gør det muligt at implementere MPI-filvisninger direkte af filsystemet. MPI_Datatypes kan beskrive komplekse ikke-sammenhængende datamønstre. PVFS-serveren og datakoderne implementerer datastrømme, der effektivt overfører data mellem flere servere og klienter.

Flere netværkssupport

PVFS bruger et netværkslag med navnet BMI, som giver en ikke-blokerende meddelelsesgrænseflade designet specielt til filsystemer. BMI har flere implementering moduler til en række forskellige netværk, der anvendes i high performance computing herunder TCP / IP, Myrinet , Infiniband , og portaler .

Statsløse (låsløse) servere

PVFS-servere er designet, så de ikke deler nogen tilstand med hinanden eller med klienter. Hvis en server går ned, kan en anden let genstartes på sin plads. Opdateringer udføres uden brug af låse.

Implementering på brugerniveau

PVFS-klienter og servere kører på brugerniveau. Kernemodifikationer er ikke nødvendige. Der er et valgfrit kernemodul, der gør det muligt at montere et PVFS-filsystem som ethvert andet filsystem, eller programmer kan linke direkte til en brugergrænseflade, såsom MPI-IO eller en Posix- lignende interface. Disse funktioner gør PVFS let at installere og mindre tilbøjelige til at forårsage systemnedbrud.

Interface på systemniveau

PVFS-grænsefladen er designet til at integreres på systemniveau. Det har ligheder med Linux VFS , hvilket gør det let at implementere som et monterbart filsystem, men kan lige så tilpasses til brugergrænseflader som MPI-IO eller Posix- lignende grænseflader. Det udsætter mange af funktionerne i det underliggende filsystem, så grænseflader kan udnytte dem, hvis det ønskes.

Arkitektur

PVFS består af 4 hovedkomponenter og et antal hjælpeprogrammer. Komponenterne er PVFS2-serveren, pvfslib, PVFS-klientkernen og PVFS-kernemodulet. Hjælpeprogrammer inkluderer karma-styringsværktøjet, hjælpeprogrammer (f.eks. Pvfs-ping, pvfs-ls, pvfs-cp osv.), Som alle fungerer direkte på filsystemet uden brug af kernemodulet (primært til vedligeholdelse og test). Et andet centralt designpunkt er PVFS-protokollen, der beskriver de meddelelser, der sendes mellem klient og server, selvom dette ikke strengt taget er en komponent.

PVFS2-server

PVFS-serveren kører som en proces på en node, der er angivet som en I / O-node. I / O-noder er ofte dedikerede noder, men kan også være almindelige noder, der også kører applikationsopgaver. PVFS-serveren kører normalt som root, men kan køres som bruger, hvis det foretrækkes. Hver server kan administrere flere forskellige filsystemer og er udpeget til at køre som en metadataserver, dataserver eller begge dele. Al konfiguration styres af en konfigurationsfil, der er angivet på kommandolinjen, og alle servere, der administrerer et givet filsystem, bruger den samme konfigurationsfil. Serveren modtager anmodninger via netværket, udfører anmodningen, som kan involvere disk I / O og svarer tilbage til den oprindelige anmoder. Anmodninger kommer normalt fra klientnoder, der kører applikationsopgaver, men kan komme fra andre servere. Serveren er sammensat af anmodningsprocessoren, joblaget, Trove, BMI og flowlag.

Anmod om processor

Anmodningsprocessoren består af serverprocessens hovedsløjfe og et antal tilstandsmaskiner. Statlige maskiner er baseret på et simpelt sprog udviklet til PVFS, der styrer samtidighed inden for serveren og klienten. En tilstandsmaskine består af et antal tilstande, som hver især kører en C-tilstandsfunktion eller kalder en indlejret (underrutine) tilstandsmaskine. I begge tilfælde vælger returkoder hvilken tilstand du vil gå til næste. Statslige handlingsfunktioner sender typisk et job via joblaget, der udfører en slags I / O via Trove eller BMI. Job er ikke-blokerende, så når en opgave er udstedt, udsættes statsmaskinens udførelse, så en anden statsmaskine kan køre, der servicerer en anden anmodning. Når job er afsluttet, genstarter hovedsløjfen den tilknyttede tilstandsmaskine. Anmodningsprocessoren har tilstandsmaskiner til hver af de forskellige anmodningstyper defineret i PVFS-anmodningsprotokollen plus et antal indlejrede tilstandsmaskiner, der bruges internt. Statens maskinarkitektur gør det relativt let at tilføje nye anmodninger til serveren for at tilføje funktioner eller optimere til specifikke situationer.

Joblag

Joblaget giver en fælles grænseflade til at indsende Trove-, BMI- og flow-job og rapportere om deres færdiggørelse. Det implementerer også anmodningsplanlæggeren som et ikke-blokerende job, der registrerer, hvilken type anmodninger der er i gang med hvilke objekter og forhindrer konsistensfejl på grund af samtidig brug af de samme fildata.

Trove

Trove administrerer I / O til objekterne, der er gemt på den lokale server. Trove opererer på samlinger af datarum. En samling har sit eget uafhængige håndteringsrum og bruges til at implementere forskellige PVFS-filsystemer. Et datarum er et PVFS-objekt og har sit eget unikke håndtag (inden for samlingen) og lagres på en server. Håndtag kortlægges til servere gennem en tabel i konfigurationsfilen. Et datarum består af to dele: en bytestream og et sæt nøgle / værdipar. En bytestream er sekvens af bytes af ubestemt længde og bruges til at gemme fildata, typisk i en fil på det lokale filsystem. Nøgle / værdipar bruges til at gemme metadata, attributter og biblioteksposter. Trove har en veldefineret grænseflade og kan implementeres på forskellige måder. Indtil i dag har den eneste implementering været Trove-dbfs-implementeringen, der gemmer bytestreams i filer og nøgle / værdipar i en Berkeley DB- database. Trove-operationer er ikke-blokerende, API'en giver postfunktioner til at læse eller skrive de forskellige komponenter og funktioner for at kontrollere eller vente på færdiggørelse.

BMI

Strømme

pvfslib

PVFS-klient-kerne

PVFS kernemodul

Se også

Referencer

eksterne links