Filsystemer 1
Lageret er hierarkisk - Fokus: disk Sekundært lager er nødvendigt: Data i RAM forsvinder når processer terminerer o.lign. Og der er også brug for pladsen 2
Lageret er hierarkisk - Fokus: disk Sekundært lager er nødvendigt: Data i RAM forsvinder når processer terminerer o.lign. Og der er også brug for pladsen 2
Top-down: Hvad er en fil? Monitor Bus 3
Top-down: Hvad er en fil? Monitor Bus Er en fil en fysisk genstand? Mål, vægt, længde, højde? 3
Filbegrebet Monitor Bus 4
Filbegrebet Monitor Skal være persistent Skal kunne rumme mange oplysninger Skal kunne tilgås fra processer En fil er en samling data gemt på et sekundært lager, bestemt af en overordnet fortolkning: metadata Bus 4
Filsystemer (1) OS administrerer lagring af filer via filsystemet 5
Filsystemer (1) OS administrerer lagring af filer via filsystemet Hvad skal stilles tilrådighed? Hvordan? 5
Filsystemer (1) OS administrerer lagring af filer via filsystemet 6
Filsystemer (1) OS administrerer lagring af filer via filsystemet Et hierarkisk navnerum der skjuler kompleksiteten, og samtidig sikrer en effektiv udnyttelse, samt organisering af data... 6
Filsystemer (2) Grænseflade Samling af systemkald... Kataloghåndtering Afbildning: symbolsk filnavn fil Filhåndtering Åbning, lukning, læsning, skrivning Organisering af filer Afbildning fra fil til diskblokke 7
Egenskaber ved filer: Navn, Type Filer har symbolske navne, oftest organiseret i et hierarki Under UNIX styrer brugeren valg af navne... 8
Filstruktur En sekvens af bytes, en sekvens af records, et træ af records? a) Record med fast størrelse b) Record med variabel størrelse c) Fast størrelse, med nøgle d) Variabel størrelse, med nøgle 9
Filstruktur En sekvens af bytes, en sekvens af records, et træ af records? a) Record med fast størrelse b) Record med variabel størrelse c) Fast størrelse, med nøgle d) Variabel størrelse, med nøgle... i UNIX og Windows er en fil en sekvens af bytes... 9
[Q/A] Hvilke konsekvenser har det for sekventiel/vilkårlig adgang? a) Record med fast størrelse b) Record med variabel størrelse c) Fast størrelse, med nøgle d) Variabel størrelse, med nøgle 10
[Q/A] Hvilke konsekvenser har det for sekventiel/vilkårlig adgang? a) Record med fast størrelse b) Record med variabel størrelse c) Fast størrelse, med nøgle d) Variabel størrelse, med nøgle 10
Filtyper forskel på et dybere niveau UNIX har... - kataloger - almindelige filer - character special files - block special files - FIFOs... En almindelig fil kan rumme et program, et bibliotek, men OS skal stort set kun kende formatet for en eksekverbar 11
Katalogstruktur (1) Simpel træstruktur Simple insert, delete, search operationer... Ingen deling mellem kataloger, hver fil har kun een forgænger... 12
Katalogstruktur (2) DAG-struktur Deling mellem kataloger, en fil har mange forældre... Hvad med delete? Enhver forælder kan fjerne filen, men kun sidste gang den fjernes skal den fjernes fysisk. Behov for reference count... 13
Katalogstruktur (2*) DAG-struktur Deling mellem kataloger, en fil har mange forældre... Hvad med delete? Enhver forælder kan fjerne filen, men kun sidste gang den fjernes skal den fjernes fysisk. Behov for reference count... Cykler er også et problem ved search og delete... 14
Katalogstruktur (3) Træstruktur med sym-links Deling mellem kataloger, en fil kan have mange forgængere Hvad med delete? Ved delete af et sym-link, fjernes kun linket. Intet behov for reference counting eller garbage collection 15
Katalogstruktur (3) Træstruktur med sym-links Deling mellem kataloger, en fil kan have mange forgængere Hvad med delete? Ved delete af et sym-link, fjernes kun linket. Intet behov for reference counting eller garbage collection Et typisk Unix-filsystem understøtter denne form for katalog-struktur, et symbolsk link skabes med ln -s <file> <symlnk> 15
[Click] Træstruktur med sym-links Hvad så med sidste delete på en fil? A. Sletter alle symlinks B. Efterlader symlinks ødelagte C. Har ingen virkning hvis der findes symlinks D. Ændrer et symlink til et link E. Ved ikke 16
Bottom-up: Hvor lagres filer?... filer lagres typisk på en harddisk...... head, track, sector, cylinder... Rotationshastighed fx 10000 RPM, Læse/skrivehast. 50 MB/s 17
Adgang til harddisken en harddisk er et block device, adgang via device driver Logiske disk-blokke af f.eks. 1KB 0 1 2 3 4 5 6 7 Disk device driver... bloknummer oversættes til (head,track,sector,cylinder)... Disk controller 18
Filsystemer... en disk opdeles i partitions som hver har et filsystem... BOOT: indlæs og kør kode fra MBR indlæs og kør kode fra boot block på aktiv partition opbygger datastrukturer i kernen jvf. super block 19
Administration af ledige blokke Filsystemet skal også holde styr på ledige blokke, samme problematik som ved lageradministration... Kædet liste Bitmap over ledige blokke En kæde af enkelt blokke er ineffektivt... Blokke allokeres og frigøres oftest i sammenhængende grupper Lav kæde af grupper af sammenhængende blokke... Ledige blokke kan også samles i en speciel fil... 20
Organisering af filer: samlet blok... en fil er en samling blokke på disken... Ide nr. 1: en fil lagres i sammenhængende blokke... 21
Organisering af filer: samlet blok... en fil er en samling blokke på disken... Ide nr. 1: en fil lagres i sammenhængende blokke...... simpelt, effektivt at læse en fil, men...... ved dynamisk brug fås fragmentering og spildt plads... 21
Organisering af filer: FAT Ide nr. 2: en fil lagres som en kædet liste af blokke... 22
Organisering af filer: FAT Ide nr. 2: en fil lagres som en kædet liste af blokke...... god udnyttelse af diskplads...... kun den sidste blok i en fil kan være delvis tom... 22
Hvor lagres den kædede liste? Hvis pointere gemmes som en del af blokkene:... random access: ekstremt langsomt - kræver gentagne opslag på disken... Hvis pointere gemmes i en FAT tabel, som indlæses i RAM:... random access kræver nu kun gentagne opslag i RAM...... tabellens størrelser svarer til antal blokke på disken... 23
Organisering af filer: i-nodes Ide nr. 3: en fil lagres som en træ-struktur af blokke 24
Organisering af filer: i-nodes Ide nr. 3: en fil lagres som en træ-struktur af blokke... filens attributter og blokke beskrives af dens i-node... 24
UNIX i-node i-node fra UNIX V7's filsystem... ialt 64 bytes... 25
UNIX i-node i-node fra UNIX V7's filsystem... ialt 64 bytes...... i-nodes for åbne filer gemmes i lageret...... random access kræver få søgninger på disk... 25
Hierarki af blokke Hvor mange blokke kan en fil bestå af?... afhænger af blokstørrelsen og antal bytes i en disk-adresse... 26
Implementation af kataloger... et katalog knytter navne til filer... i-node... i UNIX V7 er en indgang i et katalog 16 bytes... 27
[Q/A] Hvilke attributter kan flyttes til kataloget, for en UNIX V7 i-node? We is cute, can play with all files 28
Et typisk UNIX filsystem Superblok beskriver antal i-nodes, ledige datablokke,... Datablokke er typisk 1KB... Root-kataloget ligger i fast blok... Linux bruger ofte ext# (-Linux: ext2, nyeste: ext4) http://e2fsprogs.sourceforge.net/ext2.html 29
UNIX systemkald, kataloger 30
UNIX systemkald, kataloger Links mellem filer er blot flere henvisninger til samme i-node... 30
UNIX systemkald, filer Åbne filer identificeres med en file descriptor: stdout (0), stdin (1), stderr (2) 31
Søgning efter en fil /usr/ast/mbox 32
File descriptors... en file descriptor udpeger i-node og info om filposition...... file descriptors er lokale for en proces, men info skal deles... 33
Filtyper og rettigheder i UNIX... 16 bit mode fås ved et OR af følgende bitmønstre... 1111 0000 0000 0000 bitmask for the file type bitfields 1100 0000 0000 0000 socket 1010 0000 0000 0000 symbolic link 1000 0000 0000 0000 regular file 0110 0000 0000 0000 block device 0100 0000 0000 0000 directory 0010 0000 0000 0000 character device 0001 0000 0000 0000 fifo 0000 1000 0000 0000 set UID bit 0000 0100 0000 0000 set GID bit (see below) 0000 0010 0000 0000 sticky bit (see below) 0000 0001 1100 0000 mask for file owner permissions 0000 0001 0000 0000 owner has read permission 0000 0000 1000 0000 owner has write permission 0000 0000 0100 0000 owner has execute permission 0000 0000 0011 1000 mask for group permissions 0000 0000 0010 0000 group has read permission 0000 0000 0001 0000 group has write permission 0000 0000 0000 1000 group has execute permission 0000 0000 0000 0111 mask for permissions for others (not in group) 0000 0000 0000 0100 others have read permission 0000 0000 0000 0010 others have write permisson 0000 0000 0000 0001 others have execute permission 34
Eksempel: Ændring af rettigheder s = chmod(name, mode) $ ls -l total 44 drwx------ 3 eernst users 4096 Nov 12 09:24 Desktop drwx------ 7 eernst users 4096 Nov 13 20:02 Mail drwxrwxr-x 2 eernst users 4096 Oct 10 22:17 bin drwxrwxr-x 3 eernst users 4096 Sep 10 15:45 cvs -rwxr-xr-x 1 eernst users 24 Nov 13 12:46 foo.sh $ $ chmod 700 foo.sh $ $ ls -l total 44 drwx------ 3 eernst users 4096 Nov 12 09:24 Desktop drwx------ 7 eernst users 4096 Nov 13 20:02 Mail drwxrwxr-x 2 eernst users 4096 Oct 10 22:17 bin drwxrwxr-x 3 eernst users 4096 Sep 10 15:45 cvs -rwx------ 1 eernst users 24 Nov 13 12:46 foo.sh 35
Eksempel: Ændring af rettigheder s = chmod(name, mode) $ ls -l total 44 drwx------ 3 eernst users 4096 Nov 12 09:24 Desktop drwx------ 7 eernst users 4096 Nov 13 20:02 Mail drwxrwxr-x 2 eernst users 4096 Oct 10 22:17 bin drwxrwxr-x 3 eernst users 4096 Sep 10 15:45 cvs -rwxr-xr-x 1 eernst users 24 Nov 13 12:46 foo.sh $ $ chmod 700 foo.sh $ $ ls -l total 44 drwx------ 3 eernst users 4096 Nov 12 09:24 Desktop drwx------ 7 eernst users 4096 Nov 13 20:02 Mail drwxrwxr-x 2 eernst users 4096 Oct 10 22:17 bin drwxrwxr-x 3 eernst users 4096 Sep 10 15:45 cvs -rwx------ 1 eernst users 24 Nov 13 12:46 foo.sh 700 i octal er 0000000111000000 i binær 35
Delt adgang til filer Hvad sker der hvis flere processer har adgang til samme fil?... UNIX understøtter shared og exclusive locks på dele af filer... 36
[Click] Hvordan er forholdet mellem shared og exclusive locks? A. En applikation skal vælge om den vil bruge shared eller exclusive locks, det er et spørgsmål om stil B. På et givet område må der højst være én exclusive lock og k shared locks C. En shared lock kan holdes af mere en en proces, en exclusive lock holdes altid af højst én proces D. Opdatering kræver en exclusive lock, aflæsning kan nøjes med shared lock E. Ved ikke 37
Performance, caching... gem ofte brugte diskblokke i RAM... 38
Performance, caching... gem ofte brugte diskblokke i RAM...... skriv til disk med jævne mellemrum (sync)... 38
Performance vs. blokstørrelse Lille blokstørrelse, lille pladstab i sidste blok, mange blokke... Stor blokstørrelse, stort pladstab i sidste blok, få blokke... 39
Opsummering Filbegrebet: data på sekundært lagermedie, fortolkes Attributter: Navn, type, størrelse, rettigheder OS støtte: Dir.mgmnt, Basic FS, Device org. Katalogstrukturer: træ, DAG, løkker, dog symlinks Filstruktur Styring af diskblokke, inkl. ubrugte i-nodes, indirect/double/triple blocks Samtidig brug af filer fra >1 proces Cache, performance 40