Loggstrukturert filsystem - Log-structured file system

Et loggstrukturert filsystem er et filsystem der data og metadata skrives sekvensielt til en sirkulær buffer , kalt en logg . Designet ble først foreslått i 1988 av John K. Ousterhout og Fred Douglis og først implementert i 1992 av Ousterhout og Mendel Rosenblum for det Unix-lignende Sprite- distribuerte operativsystemet.

Begrunnelse

Konvensjonelle filsystemer har en tendens til å legge ut filer med stor omhu for romlig lokalitet og gjøre endringer på stedet i datastrukturen for å fungere godt på optiske og magnetiske disker, som har en tendens til å søke relativt sakte.

Utformingen av loggstrukturerte filsystemer er basert på hypotesen om at dette ikke lenger vil være effektivt fordi stadig større minnestørrelser på moderne datamaskiner vil føre til at I/O blir skrivetunge fordi lesing nesten alltid vil bli tilfredsstilt fra minnebufferen. Et loggstrukturert filsystem behandler dermed lagringen som en sirkulær logg og skriver sekvensielt til hodet på loggen.

Dette har flere viktige bivirkninger:

  • Skrivehastigheten på optiske og magnetiske disker er forbedret fordi de kan settes i store sekvensielle kjøringer og kostbare søk blir holdt på et minimum.
  • Writes lager flere, kronologisk fremskridende versjoner av både fildata og metadata. Noen implementeringer gjør disse gamle filversjonene navngitte og tilgjengelige, en funksjon som noen ganger kalles tidsreiser eller øyeblikksbilder . Dette ligner veldig på et versjoneringsfilsystem .
  • Gjenoppretting fra krasjer er enklere. Ved neste montering trenger ikke filsystemet gå alle datastrukturer for å fikse eventuelle inkonsekvenser, men kan rekonstruere tilstanden fra det siste konsistente punktet i loggen.

Loggstrukturerte filsystemer må imidlertid gjenvinne ledig plass fra halen på loggen for å forhindre at filsystemet blir fullt når hodet på loggen vikler seg rundt for å møte det. Halen kan frigjøre plass og bevege seg fremover ved å hoppe over data som nyere versjoner eksisterer lenger frem i loggen. Hvis det ikke er noen nyere versjoner, blir dataene flyttet og lagt til hodet.

For å redusere overheadkostnaden for denne søppelsamlingen , unngår de fleste implementeringer rent sirkulære tømmerstokker og deler lagringen i segmenter. Tømmerhodet går ganske enkelt videre til segmenter som ikke er tilstøtende og som allerede er ledige. Hvis det trengs plass, gjenvinnes de minst fulle segmentene først. Dette reduserer I/O -belastningen (og reduserer skriveforsterkningen ) til søppelsamleren, men blir stadig mer ineffektiv etter hvert som filsystemet fylles opp og nærmer seg kapasitet.

Ulemper

Den utforming begrunnelsen for log-strukturert filsystemer antar at de fleste leser vil bli optimalisert unna med stadig forstørring minnebuffere. Denne antagelsen holder ikke alltid:

  • På magnetiske medier-der søk er relativt dyre-kan loggstrukturen faktisk gjøre avlesninger mye tregere, siden det fragmenterer filer som konvensjonelle filsystemer normalt holder sammenhengende med på stedet skriver.
  • På flashminne - der søketider vanligvis er ubetydelige - kan det hende at loggstrukturen ikke gir en verdifull ytelsesøkning fordi skrivefragmentering har mye mindre innvirkning på skriveoverføringen. Et annet problem er å stable en logg oppå en annen logg, noe som ikke er en veldig god idé, ettersom den tvinger flere slettinger med ujustert tilgang. Imidlertid kan mange blitsbaserte enheter ikke omskrive deler av en blokk, og de må først utføre en (langsom) slettingssyklus for hver blokk før de kan skrive om, så ved å sette alle skriverne i en blokk kan dette hjelpe ytelsen i motsetning til å skrive spredt i forskjellige blokker, som hver og en må kopieres til en buffer, slettes og skrives tilbake, noe som er en klar fordel for såkalt "rå" flashminne hvor flash-oversettelseslag omgås.

Se også

Referanser

Videre lesning