1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che...

49
1 File System Concetti e tecniche generali

Transcript of 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che...

Page 1: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

1

File System

Concetti e tecniche generali

Page 2: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

2

Il file system• Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente• Tipicamente le astrazioni fornite sono:

– File : unità di informazione memorizzata in modo persistente– Directory : astrazione che permette di raggruppare assieme più file

Page 3: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

3

Struttura di un File

• Come può essere strutturata l’informazione all’interno di un file – sequenze di byte, sequenze di record , alberi con chiave

Page 4: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

4

Accesso ai File

• Accesso diretto (random)– i byte/record possono essere letti in qualsiasi ordine– una read può essere specificata …

• specificando la posizione del dato da accedere ad ogni chiamata, …

• usando una speciale operazione (la seek) per posizionare la testina prima di iniziare più letture

– nei moderni sistemi operativi tutti i file sono automaticamente ad accesso diretto

Page 5: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

5

Tipici attributi di un file

Page 6: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

6

Operazioni su File

1. Create

2. Delete

3. Open

4. Close

5. Read

6. Write

7. Append

8. Seek

9. Get attributes

10.Set Attributes

11.Rename

Page 7: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

7

A B C

f B1 B2Ss.c C1

C2

ed

root directory

C3

File system gerarchici

• Tutti i file system attuali sono gerarchici– utilizzano i path name visti in Unix

– separatori root diversi

Page 8: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

8

Operazioni sulle directory

1. Create

2. Delete

3. Opendir

4. Closedir

5. Readdir

6. Rename

7. Link

8. Unlink

Page 9: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

9

Implementazione di un File System (1)

• Come rappresentare i file ?– i dati sono memorizzati in unità (blocchi) di ampiezza fissa (tipicamente 1,2 KB)– si devono memorizzare gli attributi e la posizione dei singoli blocchi

• Come rappresentare le directory ?– generalmente sono file con uno speciale formato

• Come organizzare lo spazio disco ?– allocazione dei blocchi relativi ad un singolo file– gestione blocchi liberi– tenere traccia della root directory

Page 10: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

10

Implementazione di un FS: Unix (2)

I-nodi

Superblocco

Riservato al boot block

Blocchi di dati

MBR

Tabella delle partizioni

Part 1 Part 2 Part k...

Free mgm root d.

Page 11: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

11

Implementazione dei File (1)• Allocazione contigua dello spazio disco

– ogni file viene memorizzato in un gruppo di blocchi contigui (run)– es :

Situazione iniziale (tutti i blocchi sono liberi)

Situazione dopo l’allocazione del File A (4 blocchi)

run

Page 12: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

12

Allocazione contigua (2)

File A (4 blocchi)

File B (3 blocchi)

File C (6 blocchi)

File D (3 blocchi)

File E (5 blocchi)

File G (3 blocchi)

Situazione dopo l’allocazione del File A (4 blocchi) e B (3 blocchi)

Situazione dopo la cancellazione di B e D

Blocchi liberi

Page 13: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

13

Allocazione contigua (3)

• Fenomeno della frammentazione interna :

– se l’ultimo blocco non è del tutto pieno si spreca dello spazio

Page 14: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

14

Allocazione contigua (4)

• Vantaggi dell’allocazione contigua:– è facile tenere traccia dei blocchi che appartengono a

ciascun file • indirizzo su disco del blocco iniziale (B)

• lunghezza del file (in blocchi)

– se voglio l’indirizzo del blocco X del file• ind(X) = B + X

– le prestazioni della lettura sono eccellenti• basta una seek ed è possibile leggere tutto il file in blocchi

contigui (senza rotational delay …)

Page 15: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

15

Allocazione contigua (5)

• Svantaggi dell’allocazione contigua:– (1) frammentazione esterna : es

– dopo un po’ il disco sarà frammentato in un insieme di buchi (hole), troppo piccoli per contenere un file (es. file R 5 blocchi)

– de-frammentazione del disco :

Situazione dopo la cancellazione di B e D

Page 16: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

16

Allocazione contigua (6)• Svantaggi dell’allocazione contigua (cont.):

– (2) l’ampiezza massima di un file deve essere decisa al momento della creazione

• dobbiamo riservare un numero adeguato di blocchi per la sua crescita futura

• ancora spazio sprecato

• difficile da stimare ed utilizzare : es prima di iniziare ad editare un file di testo devo dire quanto sarà lungo … altrimenti l’editing può fallire!!!!

Page 17: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

17

Allocazione contigua (7)• Svantaggi dell’allocazione contigua (cont.):

– (2) l’ampiezza massima di un file deve essere decisa al momento della creazione

• dobbiamo riservare un numero adeguato di blocchi per la sua crescita futura

• ancora spazio sprecato• difficile da stimare ed utilizzare : es prima di iniziare ad editare

un file di testo devo dire quanto sarà lungo … altrimenti l’editing può fallire!!!!

• L’allocazione contigua viene utilizzata nei FS dei CD ROM e DVD !!

Page 18: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

18

File: lista concatenata di blocchi

Memorizzazione come lista concatenata di blocchi

Page 19: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

19

File: lista concatenata di blocchi (2)

• Vantaggi della lista concatenata :– non c’è frammentazione esterna

– per ogni file è necessario mantenere solo il puntatore al primo blocco

• Problemi :– lettura di tutto il file molto lenta

– accesso random molto lento

– perdita di un certo numero di byte iniziali• l’ampiezza di blocco non è più una potenza di 2

• diventa più costoso il calcolo del blocco ...

Page 20: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

20

File: lista concatenata di blocchi (3)

• Es. indirizzi di 4 byte, blocchi fisici di 1 K– se voglio effettuare una read di 40 byte

dall’indirizzo 2046– divido 2046 per (1024 -4=1020) :

• risultato = 2, resto = 6• devo leggere 40 byte, in blocco 2 a partire dal byte 6

– le divisioni per numeri arbitrari sono operazioni estremamente costose

– le divisioni per potenze di 2 sono shift !!

Page 21: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

21

Liste concatenate con FAT

La FAT si trova in memoria centrale

terminatore

Page 22: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

22

Liste concatenate con FAT

• Vantaggi : – l’ampiezza di blocco è una potenza di due– accesso casuale più veloce (non accede alla

memoria secondaria

• Svantaggi :– tutta la FAT deve stare in memoria– disco 20 GB, blocchi 1K

• ampiezza FAT = 4* 20M ! • Paginazione, lentezza etc ...

Page 23: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

23

Index-node (i-node)

• Es. i-node di un file Unix

Attributi

Ind blocco 1Ind blocco 2

Single indirect

Ind blocco N...

Dati su disco

...

Double indirect

Triple indirect

Page 24: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

24

Index-node (i-node) (2)

• Vantaggi :– solo gli i-node dei file in uso devono risiedere in RAM

– lo spazio è proporzionale al numero massimo di file aperti e non dipende dall’ampiezza del disco

– l’efficienza decresce con l’ampiezza del file

Page 25: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

25

Implementazione delle Directory (1)• Devono permettere di recuperare tutte le

informazioni relative ai file contenuti

• Punto fondamentale : associare il nome del file (una stringa di caratteri) ad attributi e dati (indirizzo/i dei blocchi)– diversi formati – diverse restrizioni sui possibili nomi dei file

• lunghezza fissa o arbitraria

• case sensitiveness : pippo e PiPPo

Page 26: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

26

Implementazione delle Directory (2)

• Soluzione più semplice :– la directory contiene una tabella con un

elemento per ogni file– attributi e indirizzi del blocchi del file X sono

memorizzati direttamente nell’elemento della tabella relativo ad X

– è la soluzione usata dai FS FAT-16, FAT-32

Page 27: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

27

Implementazione delle Directory (3)

attributi

attributi

attributi

work attributi

news

games

mail

Blocco/i

Blocco/i

Blocco/i

Blocco/i

Page 28: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

28

Implementazione delle directory (4)Una directory in un sistema con i-node

– es da Unix V7

12 e

16 ..(punto punto)

4 .(punto)

18 d

C2

ed

4

16

1218

C1Numero dii-node

Blocco dati relativo alladirectory C2

Page 29: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

29

• Due modi di trattare i nomi di file “lunghi” – (a) In linea (b) In un heap

Implementazione delle directory (5)

Page 30: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

30

• Ricerca di un file X in una directory– tipicamente i nomi dei file non sono in ordine (ricerca lineare)– se aspettiamo directory con centinaia di file si possono usare

hash table

Implementazione delle directory (6)

nomefile Funzione hash (0..N-1)

tabella

0

N-1

Es : H(nomefile)=f(nomefile)%N

Ricerca:1. X= H(nomefile)2. Ispeziono la lista che parte da X3. Se nomefile non sta nellalista non c’è

X

Page 31: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

31

Implementazione delle directory (7)

• Ricerca di un file X in una directory– tipicamente i nomi dei file non sono in ordine

(ricerca lineare)– se aspettiamo directory con centinaia di file si

possono usare hash table – alternativamente si può fare il caching di file

acceduti recentemente (Berkley FFS)

Page 32: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

32

Gestione dello spazio disco (1)• Praticamente tutti i file system:

– dividono i file in blocchi di ampiezza fissata ed eseguono letture e scritture su blocchi o multipli

– i blocchi non sono contigui su disco

• Problema 1 : come scegliere l’ampiezza del blocco?– Blocchi piccoli usano meglio lo spazio disco

• diminuiscono la frammentazione interna

– Blocchi grandi velocizzano gli accessi• diminuiscono seek e rotational delay

Page 33: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

33

Gestione dello spazio disco (2)• Problema 2 : come tenere traccia dei blocchi liberi

su disco ?– Free list

• lista concatenata di blocchi pieni di indirizzi di blocchi liberi

– Bitmap• una mappa di bit con un bit per ogni blocco

• es. 0 blocco libero, 1 blocco in uso

• mantiene la contiguità dei blocchi (allocare un file su blocchi vicini diminuisce il tempo di seek in letture consecutive

Page 34: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

34

Gestione dello spazio disco (3)

Free list Bitmap

Page 35: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

35

Gestione dello spazio disco (4)

(a) blocco di puntatori ai blocchi liberi quasi pieno (RAM)- tre blocchi di puntatori su disco

(b) situazione dopo aver liberato un file di 3 blocchi(c) strategia alternativa per gestire i 3 blocchi

- gli elementi in grigio puntano a blocchi di disco liberi

Page 36: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

36

Gestione dello spazio disco (4)

Il meccanismo delle quote per tener traccia dello spazio disco utilizzato da ciascun utente

Tabella dei file aperti

Attributi userid = 8

pun_quota

Tabella delle quote

….

Quota utente 8(una struct per ogniutente con fileaperti)

Hard file limit

Current # file

# file warning left

Current # blocks

Soft block limit

Hard block limit

# block warning left

Soft file limit

Page 37: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

37

Affidabilità di un file system

• Problemi legati all’hw del disco– settori difettosi

• sostituzione con spare sectors

– blocchi corrotti • raccolti in file fittizi (bad block files)

Page 38: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

38

Gestione degli errori del disco

• Una traccia con un settore difettoso • Sostituzione del settore difettoso con un settore di

riserva • Slittamento dei settori per evitare quello difettoso

Page 39: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

39

Affidabilità di un file system (2)

• Backup periodici– copia delle informazioni del FS per poterle

utilizzare in caso di • crash del disco, alluvioni etc ...

• cancellazioni accidentali

– backup fisico • si copiano tutti i blocchi del disco (su tape o altro)

– backup logico• si copiano file e directory modificati dopo una certa data

Page 40: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

40

Stable Storage• Permette di mettersi al riparo da errori che si verificano durante una scrittura :

– sto effettuando una write()– dopo la scrittura calcolo i codici correttori di errore (ECC) che segnalano un malfunzionamento– a questo punto il vecchio valore del settore è andato perso ed il nuovo è sbagliato!

• Nello stable storage, ogni volta che eseguiamo una write si garantisce che il valore scritto è corretto oppure è uguale a quallo vecchio

Page 41: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

41

Stable Storage (2)Come viene realizzato lo stable storage:

• due dischi, più software

• assunzioni :– quando effettuiamo una write() si scrive una valore corretto o scorretto– un valore scorretto può essere determinato rileggendo il valore e controllando gli ECC – la probabilità che lo stesso settore X abbia malfunzionamenti su due dischi diversi è trascurabile

Page 42: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

42

Stable Storage (3)Implementazione :

– Ogni blocco viene implementato usando due blocchi con lo stesso indirizzo sui due dischi. • Scritture : scrive la stessa infromazione prima nel primo disco (blocco X) e poi nel secondo (blocco X)

• Letture : legge dal primo disco e se ci sono errori dal secondo

– Recovery dopo un crash• si leggono tutti i blocchi dei due dischi e si confrontano

• se uno dei due ha l’ECC sbagliato, viene sovrascritto con l’altro

• se sono diversi ma corretti, il blocco del primo disco viene scritto sul secondo

Page 43: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

43

Stable Storage (4)

– Casi possibili di crash in uno stable storage

Page 44: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

44

Consistenza di un File System (1)• Problema:

– tipicamente i file system leggono un bloccho, lo modificano e scrivono la copia aggiornata più tardi– se avviene un crash prima della scrittura della copia aggiornata il FS può trovarsi in uno stato inconsistente– il problema è ancora più preoccupante se si tratta di i-node, informazioni di una directory o informazioni sui blocchi liberi

• Ci sono utility che – controllano la consistenza di un file system – lo riportano in uno sttao consistente (eventualmente con la perdita di dati)– es: scandisk (Windows) fsck (Unix)

Page 45: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

45

Consistenza di un File System (2)Funzionamento di fsck• Verifica la consistenza dei blocchi

– scandisce i-node e blocchi liberi– costrisce tabella blocchi liberi e tabella blocchi in uso

• 00 missing block - viene aggiunto alla lista libera• 20 duplicate free block - viene ricostruita la lista libera• 02 duplicate data block - viene duplicato il blocco per avere una copia diversa in ciascun file

• Verifica la consistenza delle directory– scandisce le directory– costruisce la tabella di occorrenza file– controlla la consistenza fra la tabella di occorrenza ed il conto degli hard link nell’i-node

• se differiscono si modifica l’i-node

Page 46: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

46

Consistenza di un File System (3)

(a) consistente (consistent)(b) blocco mancante (missing block)(c) blocco duplicato nella lista libera (duplicate free block)(d) blocco dati duplicato (duplicate data block)

Numero di blocco Numero di blocco

(c) (d)

Page 47: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

47

Prestazioni di un File System (1)

• Strutture dati per il cache dei blocchi• Hash su dispositivo::indirizzo del blocco• I blocchi critici per la consistenza del FS vengono scritti subito (i-node, directory, lista libera)

Block cache Buffer cache

Page 48: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

48

Prestazioni di un File System (2)• Si effettua la lettura anticipata (read ahead)

– si controlla il pattern di accesso del disco e se ne tiene traccia nell’i-node

– se l’accesso è sequenziale si leggono in anticipo i prossimi blocchi della sequenza e si memorizzano nella cache

• Si cerca di allocare blocchi di disco “vicini” per blocchi logici vicini di uno stesso file

• Si ottimizza l’allocazione degli i-node– si cerac di minimizzare il tempo di seek quando si segue un

path name

Page 49: 1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.

49

Prestazioni di un File System (3)

(a) Gli i-node sono piazzati all’inizio del disco (b) Il disco è diviso in gruppi di cilindri, ognuno con i suoi

blocchi ed i suoi i-node