Oversigt Operativsystemer [5]: Filsystemer Datalogi F Forår 2003 Jørgen Sværke Hansen cyller@diku.dk Grænseflade: Filoperationer Filens struktur Katalogstrukturer Implementering: Lagerallokering Afbildning af logisk struktur til fysisk struktur Caching Pålidelighed Datalogi F: Operativsystemer[5] 2 Hvad er en fil? En repræsentation af data: et dokument (ASCII, DVI, Word XP, ) en web-side (HTML 4.0, XHTML.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, ) 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 F: Operativsystemer[5] 3 Datalogi F: Operativsystemer[5] 4 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 F: Operativsystemer[5] 5 Beskrivelse af en fil Navn Type Placering Størrelse Adgangskontrol Tidsstempler Ejere Datalogi F: Operativsystemer[5] 6
Organisering af flere filer Filsystem Katalog / /etc /usr foo bar bar Filer foo 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 F: Operativsystemer[5] 7 Datalogi F: Operativsystemer[5] 8 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 Katalogstruktur med et niveau Et enkelt katalog beskriver alle filer: Problemer med: navngivning gruppering Datalogi F: Operativsystemer[5] 9 Datalogi F: Operativsystemer[5] 0 Kataloger med træstruktur Acyklisk graf Datalogi F: Operativsystemer[5] Datalogi F: Operativsystemer[5] 2 2
Generel grafstruktur 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 F: Operativsystemer[5] 3 Datalogi F: Operativsystemer[5] 4 To filsystemer Efter mount af (b) på /users/ Datalogi F: Operativsystemer[5] 5 Datalogi F: Operativsystemer[5] 6 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 F: Operativsystemer[5] 7 Adgangskontrol - UNIX Adgangstyper: læs, skriv, udfør Niveauer: R W X ejer (7) gruppe (4) 0 0 andre (0) 0 0 0 Hvis andre skal have læserettigheder kan de tilføjes gruppen (kræver administrator) Ændring af rettigheder chmod 740 foo Datalogi F: Operativsystemer[5] 8 3
Implementering af filsystemer Datastrukturer til: kataloger filer ledige blokke Caching Pålidelighed Lagdeling af filsystemer I/O enheder (disk) Styreprogram Diskblokadgang Filstruktur Metadata Filgrænseflade Brugerprogram Datalogi F: Operativsystemer[5] 9 Datalogi F: Operativsystemer[5] 20 Kontrolblok for filer Datastrukturer i OS lager Rettigheder Tidsstempler (oprettet, sidst ændret,..) Referencetæller Størrelse Datablokke Datalogi F: Operativsystemer[5] 2 Datalogi F: Operativsystemer[5] 22 Katalogstrukturer En liste af <navn, kontrolblokpeger> tupler: langsom søgning (når der er mere end FS blok) Hashtabel: fast størrelse kollisioner B+ træer: balanceret søgetræ hver knude i træ har FS blok størrelse Datalogi F: Operativsystemer[5] 23 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 F: Operativsystemer[5] 24 4
Sammenhængende allokering Hægtet allokering Datalogi F: Operativsystemer[5] 25 Datalogi F: Operativsystemer[5] 26 Filallokeringstabel Indekseret allokering Datalogi F: Operativsystemer[5] 27 Datalogi F: Operativsystemer[5] 28 UNIX filstruktur Datalogi F: Operativsystemer[5] 29 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 F: Operativsystemer[5] 30 5
Håndtering af ledig diskplads Bitmap: hver blok repræsenteres af en enkelt bit: 0 == blok optaget, == blok ledig ledig blok: (antal 0 ord)*(bits per ord)+forskydning af første 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 F: Operativsystemer[5] 3 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 Datalogi F: Operativsystemer[5] 32 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 Side cache vs buffer cache konsekvenser 33 Datalogi F: Operativsystemer[5] 34 Forenet buffer cache 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 F: Operativsystemer[5] 35 Datalogi F: Operativsystemer[5] 36 6
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 F: Operativsystemer[5] 37 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 F: Operativsystemer[5] 38 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 F: Operativsystemer[5] 39 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 F: Operativsystemer[5] 40 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 : spejlning RAID 5: paritetsdisk (N data + paritet) A B C D Spejlning (RAID ) A B C D RAID gruppe E F G H E F G H I J K L I J K L Datalogi F: Operativsystemer[5] 4 Datalogi F: Operativsystemer[5] 42 7
RAID 5 Store skrivninger XOR A0 B C0 D0 A B0 C D A2 B C D A3 B2 C2 D2 A B3 C3 D3 2 Datalogi F: Operativsystemer[5] 43 Datalogi F: Operativsystemer[5] 44 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 F: Operativsystemer[5] 45 Kilder Disse slides er baseret på SG03 samt de af forfatterne udviklede slides Datalogi F: Operativsystemer[5] 46 8