CMD + K

Kapittel 12Begreper & formler · Filsystemer, journaling og crash consistency
Referanseside · Kapittel 12

Begreper & formler

Alle nøkkelbegrepene og formlene fra Filsystemer, journaling og crash consistency, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards22 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Inode

Metadataobjekt som beskriver en fil: størrelse, peker(e) til data, rettigheter og annen administrativ informasjon.

02Katalog

Struktur som mapper navn til inode-nummer.

03Free-space management

Mekanismer for å holde oversikt over hvilke blokker som er ledige.

04Buffer cache

Minnebuffer som holder nylig brukte diskblokker for å redusere I/O.

05Crash consistency

Egenskapen at filsystemet etter et krasj fortsatt er i en gyldig tilstand.

06fsck

File system checker; verktøy som går gjennom metadata og prøver å reparere inkonsistenser etter krasj.

07Journaling / WAL

Teknikk der planlagte oppdateringer logges før de skrives til sine hjemsteder.

08Log-strukturert filsystem

Filsystem som i stor grad skriver sekvensielt til en logg og rydder senere med garbage collection.

09File descriptor (fd)

Lite heltall som peker inn i prosessens åpne-filer-tabell. Returneres av open(). Per-prosess-konsept — to prosesser kan ha samme fd-tall som peker på ulike filer.

10STDIN/STDOUT/STDERR

Reserverte file descriptors 0, 1 og 2 i alle Unix-prosesser. Derfor returnerer første open() typisk 3.

11Path (filsti)

Menneskelesbar identifikator for en fil, f.eks. /usr/test.txt. Mappes til en inode via katalog-data-blokker. Én fil kan ha flere paths (hardlenker), men typisk én primær.

12Superblock

Metadata om hele filsystemet: størrelse, antall inodes, antall datablokker, hvor inode-tabellen starter. Leses tidlig ved montering.

13Inode bitmap

Bit-array der hver bit indikerer om en inode er ledig (0) eller i bruk (1). Brukes ved file create/delete for å finne/frigjøre inodes raskt.

14Data bitmap

Tilsvarende bit-array for datablokker. Allokering av en ny blokk = sett bit til 1; frigjøring = sett til 0.

15ofile[]-tabell

Per-prosess-array i PCB (struct proc i xv6) som mapper file descriptor → struct file. Indeksen er fd, verdien er en peker til den åpne filens tilstand (offset, inode, modus).

16Inode

Datastruktur som lagrer all metadata om én fil (eier, rettigheter, størrelse, timestamps, pekere til datablokker). Hver fil har én unik inode på disk. Filnavnet er IKKE i inoden — det ligger i katalogen.

Formler

Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.

wal-order

Skriveorden i journaling

Logg inn for forklaring

Write-ahead logging krever at loggen er trygt lagret før hovedstrukturen oppdateres.

fs-op-blocks

Filsystemoperasjon som blokksekvens

Logg inn for forklaring

Mange filsystemfeil oppstår fordi disse delene ikke skrives atomisk eller i riktig rekkefølge.

usable-blocks

Usable space

Logg inn for forklaring

Ikke all rå lagringsplass kan brukes til filinnhold; metadata og reserverte strukturer må også få plass.

open-seq

Block-sekvens for open(/foo/test.txt)

Logg inn for forklaring

Traverse fra rot, slå opp katalognavn for å finne neste inode. Det siste trinnet stopper ved inoden — selve test.txt-data leses først ved read().

rread av blokk
x_iinode-blokk for x
x_ddata-blokk for x
create-seq

Block-sekvens for create(/test.txt)

Logg inn for forklaring

Mange skrivninger: én for å allokere inode, én for inoden selv, én for å oppdatere katalogen, én for å oppdatere root-inodens mtime. Derfor er filopprettelse dyrt.

rread
wwrite
iBMinode-bitmap
x_iinode-blokk for x
x_ddata-blokk for x
fd-konv

fd-konvensjon

Logg inn for forklaring

Eksamenstrick: «open() returnerer 5 — hvor mange filer var åpne før?» Svar: 5 - 3 = 2 (stdio teller ikke som «åpnet av prosessen»).

kfd returnert av open()
nantall egen-filer som var åpne fra før (stdio teller ikke)

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Beskrive rollen til inode, katalog, superblock og bitmaps i et tradisjonelt filsystem
  2. 02Spore blokksekvensen for både open() og create() og forklare hvorfor filopprettelse er dyrt
  3. 03Forklare crash consistency-problemet og hvordan journaling/WAL garanterer atomisitet via skriveorden
  4. 04Sammenligne journaling og log-strukturerte filsystemer og deres avveininger mot fsck