Operativsystemer [5]: Filsystemer Datalogi 1F Forår 2003 Jørgen Sværke Hansen
Datalogi 1F: Operativsystemer[5]2 Oversigt Grænseflade: –Filoperationer –Filens struktur –Katalogstrukturer Implementering: –Lagerallokering –Afbildning af logisk struktur til fysisk struktur –Caching –Pålidelighed
Datalogi 1F: Operativsystemer[5]3 Hvad er en fil? En repræsentation af data: –et dokument (ASCII, DVI, Word XP, …) –en web-side (HTML 4.01, XHTML 1.0, …) –et billede (GIF, JPG, BMP, TIFF, …) –et regneark (Excel, Gnumeric, …) –en database (Oracle, DB2, MySQL, …) En repræsentation af et program: –shell script –binært eksekverbart formet (ELF, exe,..) –kildetekst (Java, BASIC, Perl, …)
Datalogi 1F: Operativsystemer[5]4 Hvor er en fil? Placeret på sekundært lagermedie: –harddisk –bånd –CD –diskette Delt mellem (især åbne filer): –applikation –operativsystem –sekundært lager
Datalogi 1F: Operativsystemer[5]5 Strukturen af en fil Ingen: en række af bytes, ord, … Simple poster: –linier –fast længde –variabel længde Avancerede formater: –XML –relokerbar programkode En række af bytes kan bruges til at beskrive både simple poster og avancerede formater: –men hvem skal gøre det? –Applikation eller operativsystem
Datalogi 1F: Operativsystemer[5]6 Beskrivelse af en fil Navn Type Placering Størrelse Adgangskontrol Tidsstempler Ejere
Datalogi 1F: Operativsystemer[5]7 Organisering af flere filer Filsystem /etc Katalog /usr / bar foo bar Filer foo
Datalogi 1F: Operativsystemer[5]8 Operationer på filsystemer Filoperationer –Åben –Luk –Læs –Skriv –Tilføj –Afskær –Ændring af rettigheder Katalogoperationer: –Find fil/katalog –Opret fil/katalog –Slet fil/katalog –Udskriv indhold –Skift katalog
Datalogi 1F: Operativsystemer[5]9 Katalogstruktur Effektivitet: –Givet et filnavn skal man hurtigt kunne finde en fils placering på sekundært lager Navngivning: –flere brugere skal kunne navngive filer uafhængigt af hinanden –den samme fil kan have flere navne Gruppering: –katalogstruktur skal kunne beskrive at filer er beslægtede
Datalogi 1F: Operativsystemer[5]10 Katalogstruktur med et niveau Et enkelt katalog beskriver alle filer: Problemer med: –navngivning –gruppering
Datalogi 1F: Operativsystemer[5]11 Kataloger med træstruktur
Datalogi 1F: Operativsystemer[5]12 Acyklisk graf
Datalogi 1F: Operativsystemer[5]13 Generel grafstruktur
Datalogi 1F: Operativsystemer[5]14 Mounts Filsystemet specificeres via en superblok Et filsystem indeholder en katalogstruktur Denne katalogstruktur skal gøres tilgængelig før filerne skal tilgås: –Roden i hvert filsystem optræder som et katalog i et ”super” rodkatalog, f.eks.: A:, B:, C:, D:, …. –Et filsystem er specificeres som værende rodfilsystemet – andre filsystemer indplaceres i rodfilsystemets katalogstruktur
Datalogi 1F: Operativsystemer[5]15 To filsystemer
Datalogi 1F: Operativsystemer[5]16 Efter mount af (b) på /users/
Datalogi 1F: Operativsystemer[5]17 Adgangskontrol Hvem har ret til at gøre hvad? Adgangskontrollister: –Hvem: bruger ID, gruppe ID –Hvad: læse, skrive, udføre, tilføje, slette Adgangsbevis (eng.: capability): –adgangsbeviset indikerer rettigheder –adgangsbevisets ægthed skal kunne verificeres –adgangsbeviser kan måske overdrages
Datalogi 1F: Operativsystemer[5]18 Adgangskontrol - UNIX Adgangstyper: læs, skriv, udfør Niveauer: R W X –ejer (7) –gruppe (4) –andre (0) Hvis andre skal have læserettigheder kan de tilføjes gruppen (kræver administrator) Ændring af rettigheder chmod 740 foo
Datalogi 1F: Operativsystemer[5]19 Implementering af filsystemer Datastrukturer til: –kataloger –filer –ledige blokke Caching Pålidelighed
Datalogi 1F: Operativsystemer[5]20 Lagdeling af filsystemer I/O enheder (disk) Styreprogram Diskblokadgang Filstruktur Metadata Filgrænseflade Brugerprogram
Datalogi 1F: Operativsystemer[5]21 Kontrolblok for filer Rettigheder Tidsstempler (oprettet, sidst ændret,..) Referencetæller Størrelse Datablokke
Datalogi 1F: Operativsystemer[5]22 Datastrukturer i OS lager
Datalogi 1F: Operativsystemer[5]23 Katalogstrukturer En liste af tupler: –langsom søgning (når der er mere end 1 FS blok) Hashtabel: –fast størrelse –kollisioner B+ træer: –balanceret søgetræ –hver knude i træ har FS blok størrelse
Datalogi 1F: Operativsystemer[5]24 Allokering af FS blokke Allokering af blokke til et filsystem minder om allokering i hovedlageret: –vi har et virtuelt adresserum (filen), der skal afbildes til et fysisk adresserum (harddisken) men det er meget dyrere at tilgå en disk i forhold til hovedlageret vi vil derfor gerne have så få administrative data liggende på disken som muligt
Datalogi 1F: Operativsystemer[5]25 Sammenhængende allokering
Datalogi 1F: Operativsystemer[5]26 Hægtet allokering
Datalogi 1F: Operativsystemer[5]27 Filallokeringstabel
Datalogi 1F: Operativsystemer[5]28 Indekseret allokering
Datalogi 1F: Operativsystemer[5]29 UNIX filstruktur
Datalogi 1F: Operativsystemer[5]30 Extent-baserede FS’er I stedet for at allokere blokkene til en fil i grupper af en fast størrelse kan man bruge grupper af en variabel størrelse (extents) En extent beskrives via: –startblok –længde –(startposition i fil) En extent kræver mere bogføring, men understøtter store filer bedre (hvis der er sammenhængende diskplads)
Datalogi 1F: Operativsystemer[5]31 Håndtering af ledig diskplads Bitmap: –hver blok repræsenteres af en enkelt bit: 0 == blok optaget, 1 == blok ledig –ledig blok: (antal 0 ord)*(bits per ord)+forskydning af første 1 bit Liste af frie blokke: –overhead betyder ingenting –svært at finde sammenhængende diskplads (brug extent-baseret liste) B+ træer med extents sorteret efter –størrelse & diskblok
Datalogi 1F: Operativsystemer[5]32 Ydelse Reducer antallet af søgninger: –Allokering af datablokke tæt på indeksblokke og filkontrolblokke –elevatoralgoritme: sorteret liste over ønskede blokke læs de blokke der er tættest på diskhovedet
33 Ydelse (2) Caching: –gem ofte refererede blokke: kataloger filer (kontrolblokke, indexblokke, datablokke) –administrativ information (ledige blokke) –forudsig filadgangsmønstre (read-ahead) –forsinkelse af skrivninger: skriv større sammenhængende områder opfang flere ændringer –problem ved forsinkelse af skrivninger: diskstruktur kommer bagefter systemnedbrud kan have alvorlige konsekvenser
Datalogi 1F: Operativsystemer[5]34 Side cache vs buffer cache
Datalogi 1F: Operativsystemer[5]35 Forenet buffer cache
Datalogi 1F: Operativsystemer[5]36 Opdatering af datastrukturer på disk Eksempel: en fil der oprettes kræver ændringer i: (K) katalogstruktur (indsæt navn og peger til FKB) (F) fjern FKB fra frie blokke (hægt ud/flip bit) Ved opdatering på disk –hvis (K) opdateres før (F) kan et systemnedbrud betyde, at (K) refererer til en blok der er markeret ledig –hvis (F) opdateres før (K) kan systemnedbrud betyde at vi mister en blok fra frilisten
Datalogi 1F: Operativsystemer[5]37 Efter et nedbrud På mounttidspunktet opdages at filsystemet har oplevet et systemnedbrud Der foretages et check af filsystemet: –det undersøges om katalogindgange refererer blokke, der er markeret frie –det undersøges om der er allokerede blokke, der ikke refereres (f.eks., katalogindgange eller indeksblokke) Dette kræver at hele filsystemet gennemtrævles og kan nemt tage lang tid for store diske
Datalogi 1F: Operativsystemer[5]38 Journaliserede filsystemer Opdateringer af metadata (indexblokke, katalogstrukturer, FKB’ere) opfattes som en DB transaktion Alle transaktionerne skrives til en journal på disken inden de udføres på disken Når en transaktion er registreret, er dens udførsel garanteret selv ved nedbrud Herefter kan metadata opdateres Når dette er gjort fjernes transaktionen fra journalen Efter nedbrud er det nok at afspille journalen
Datalogi 1F: Operativsystemer[5]39 Journaliserede filsystemer (2) BRAVO! Nu skriver vi metadata TO gange i stedet for EN Ja, men journalen er fortløbende allokerede blokke – dvs. få søgninger og vi kan cache flere opdateringer - dvs. færre søgninger nogle journaliserede filsystemer kan bruge en separat disk/partition til journalen – færre søgninger
Datalogi 1F: Operativsystemer[5]40 Backup Trinvis backup Filsystem snapshot –når filsystem har konsistente datastrukturer på disk, kan visse disksystemer tage et tilstandsbillede af diskens indhold på tidspunkt T –herefter kan et backupprogram angive, at det ønsker at læse fra filsystemet som det så ud på tidspunkt T –Ændringer overskriver ikke gamle blokke men skrives til nye Låsning af dele af filsystemet
Datalogi 1F: Operativsystemer[5]41 Redundante diske Redundant Array of Inexpensive Disks (RAID): –mange små diske er billigere end en stor –selv med store diske kan det være en god ide at have en (eller flere/færre) i reserve Mest almindelige: –RAID 1: spejlning –RAID 5: paritetsdisk (N data + 1 paritet)
Datalogi 1F: Operativsystemer[5]42 Spejlning (RAID 1) RAID gruppe
Datalogi 1F: Operativsystemer[5]43 RAID 5
Datalogi 1F: Operativsystemer[5]44 Store skrivninger XOR
Datalogi 1F: Operativsystemer[5]45 Opsummering Der findes mange filformater, men oftest understøtter Oset kun et eller få formater Navngivning/katalogstruktur skal være fleksibel Lageradministration på diske er tungere, og antallet af læsninger vigtigt for effektivitet Caching er vigtig for ydelsen, men vær forsigtig med at cache metadata
Datalogi 1F: Operativsystemer[5]46 Kilder Disse slides er baseret på SG03 samt de af forfatterne udviklede slides