Implementazione del File System

Transcript

Implementazione del File System
File System
• 
• 
• 
• 
• 
• 
• 
Struttura del File System
Implementazione del File System
Implementazione Directory
Metodi di Allocazione
Free-Space Management
Performance: cache
Log
1
Requisiti dell'immagazzinamento dati a lungo termine:
•  Deve essere possibile conservare grosse quantita' di dati
•  L'informazione deve sopravvivere alla terminazione del processo
che la usa
•  Piu' processi devono essere in grado di accedere alle informazioni
concorrentemente.
uso di dispositivi esterni (dischi, nastri..)
file
meccanismo di astrazione che fornisce all'utente una visione
logicamente uniforme dell'informazione conservata, che prescinde da
dove e come essa viene conservata. (device independence)
persistenza le informazioni conservate in un file non sono influenzate
dalla creazione/terminazione del processo
FILE (Management) SYSTEM parte del so per la gestione file. Fornisce a
utenti e applicazioni i servizi per manipolare e memorizzare i file
2
File-System Structure
•  Struttura di un file system:
–  Unità logica di memorizzazione persistente (punto di vista
dell’utente)
–  Collezione di informazioni riguardanti il punto di vista
dell’utente (attributi, operazioni permesse, struttura del
directory..)
–  Algoritmi e strutture dati per il mapping file system logicodispositivo fisico
•  blocco = unità di trasferimento di un file tra le memorie
(corrispondente a 1/più settori)
•  Il file system è organizzato a livelli.
•  File control block/file descriptor –struttura di memorizzazione
delle informazioni relative al file
3
Obiettivo del FSM
•  Soddisfare esigenze di data management e user requirement,
incluso memorizzazione dati ed esecuzione operazioni
•  Garantire validità del FS
•  Ottimizzare le prestazioni dal punto di vista del sistema (throughput)
e dal punto di vista dell’utente
•  Fornire il supporto per l’I/O su diversi tipi di dispositivi fisici di
memorizzazione
•  Evitare la perdita di dati
•  Fornire un insieme di routine standard di interfaccia di I/O
•  Fornire il supporto necessario in caso di sistemi multiuser
4
User requirement
Ogni utente
•  Deve poter creare, cancellare, modificare un file
•  Può avere accesso controllato (security) ai file di altri utenti
•  Può controllare quali tipi di accesso consentire agli altri utenti
del proprio file
•  Deve poter muovere dati da un file all’altro
•  Deve poter fare backup e recovery di un file
•  Deve poter accedere i file con nome simbolico
5
Punto di vista dell'utente
naming file name , file extension.
tipo
es:. tipi file Unix: file regolari | directory | file spec. (a blocchi e a
caratteri)
struttura (file regolari) visibilita' di un file dal SO: byte stream |
sequenza di record di lunghezza fissa | alberi di record (con chiave) di
lunghezza variabile.
formato (file regolari) ASCII file (testo - sequenza linee terminate da
carrege return e/o line feed) binary file (organizzazione interna dei file
binari: es. file eseguibile, archivio!)
accesso
sequenziale |random
attributi
informazioni sul file (es. tempo di creazione, protezioni..)
operazioni
create | delete | open | close | read | write | append |
seek | get attribute | set attribute | rename
6
Possibili attributi di un file
7
File memory mapped
Molti sistemi operativi, incluso linux, forniscono un
meccanismo di mappatura dei file nell’address space di
un processo in esecuzione
il file diventa la backing store della regione di memoria
Quando il processo finisce il file viene aggiornato
definitivamente su disco
Il file mapping elimina esplicite operazioni di I/O su disco,
rendendo più semplice ed efficace la programmazione
problemi:
- limite dell’address space per la dimensione del file
- condivisione (gestita come shared memory)
8
directory
E' associato ad ogni collezione di file
Contiene informazioni sui file, incluso
attributi, locazione e dimensione,
ownership ed altre informazioni per il access control (l’owner del
file puo' garantire opportuni privilegi di accesso ad altri user)
informazioni per gestire l’uso concorrente del file
registrazione della storia delle attivita’ sul file
LLe informazioni sono fornite indirettamente (attraverso le SVC del
S.O.) all’utente
9
gerarchia di directory
Il directory mantiene il mapping (es. Memorizza) tra i file che contiene
e le informazioni che li caratterizzano (attributi e allocazione su disco)
punto di vista dell’utente:
- permette di gestire sistemi con un gran numero di utenti
- ogni user può avere quante directory vuole ed organizzarci i file in
10
modo rispondente alle sue esigenze
Path Name
•  Il filesystem Unix rappresenta in
un unico albero tutte le risorse
accessibili, compresi i device che
vengono rappresentati da file
speciali
•  Un directory contiene
informazioni sui file che contiene
(in Unix: file normali, directory, file
speciali, pipe)
•  Unix inode: incapsula gli attributi
di un file ed riferimenti alla sua
collocazione in memoria
•  Un directory Unix è una lista di
coppie (filename,inode)
Un directory tree UNIX
11
Operazioni sul Directory
Create
Delete
Opendir
Closedir
Readdir
Rename
Link
Unlink
12
File Access right
FSM deve permettere il controllo del modo in cui un file e’
acceduto
Un utente e’ designato come owner del file. In genere e’ chi lo
ha creato.
L’accesso puo’ essere garantito alle seguenti classi:
• specific user identificato da un User ID
• User Group insieme di utenti non definiti individualmente. Il
sistema deve tener traccia della membership
• All tutti gli utenti ! file pubblici
13
Security in UNIX
modi di protezione file
14
Shared Files
E’ utile che i file condivisi
compaiano simultaneamente su
directory differenti –Link
Il FS diventa un DAG
Problema:
Se il directory è implementato
con entry contenenti copia degli
indirizzi, aggiungere un blocco
da B (o C) non può essere visto
da C (o B), agendo essi su copie
separate
•  i-node risolve anche se da
nessuno dei directory che
condividono i file si può risalire
agli altri
•  symbolic link
15
Shared File
Link sinbolico: B fa un link ad un file di C creando un nuovo file di tipo link
che contiene il path name del file a cui è linkato.
Quando B legge il file, il SO
•  vede che è un link
• Trova tramite il nome il file e lo legge
16
Livelli del File System
Gestisce i metadati - strutture
del FS (struttura directory, file
descriptor..) Gestisce mapping blocchi logiciblocchi fisici (compresa traduzione) e
spazio libero*
Invia i comandi ai device driver
per leggere/scrivere blocchi file
* è a conoscenza dei file e dei loro blocchi logici e
dei blocchi fisici
17
Implementazione del File System
Il progettista di un file system si occupa dei seguenti aspetti
- Come memorizzare file e directory
- Come gestire lo spazio disco
- Come rendere ogni attività connessa col file system
efficiente ed affidabile
18
Strutture presenti nel disco
•  Boot control block (Unix boot block, NTFS partition boot sector)
- contiene le informazioni necessarie per avviare il SO da quella
partizione (altrimenti, se il disco non contiene un SO, vuoto)
•  Partition control block (Unix superblocco, NTFS master file
table) - dettagli relativi alla partizione: numero e dimensione dei
blocchi, contatore blocchi liberi e riferimenti relativi, contatori
descrittori file liberi e riferimenti relativi
•  File descriptor (Unix i-node) - contengono gli attributi dei file
(permessi, dimensioni, link, date ultime operazioni, indirizzi blocchi
19
boot
•  Una row partition è una partizione priva di file system (es. swap
device)
•  nella fase di avviamento si esegue il montaggio della root partition
–  sequenza di blocchi la cui immagine viene caricata in memoria
“non-FS”
–  contiene il kernel ed eventuali altri file di sistema. L’avvio avviene
sempre da una posizione precisa.
•  La root partition può contenere un boot loader capace di
interpretare diversi FS e SO e che una volta caricato può avviare un
diverso SO
•  Ogni partizione può avere un file system di diverso formato
20
Strutture mantenute in memoria dal FS
•  Partition table - contiene informazioni su ciascuna
partizione montata
•  Struttura dei directory contenuti in memoria (che i processi
hanno utilizzato di recente)
•  Tabella dei file aperti •  Tabella dei file aperti per ciascun processo Nota: Unix tratta i directory con le stesse system call dei file,
NT tratta i directory con system call distinte
Target: gestione del file system e caching efficiente
21
un possibile layout di file system
Partition Table contiene indirizzi inizio e fine di ogni partizione, una è attiva
Super block contiene tutti i parametri chiave per la gestione del FS e viene
letto in memoria al boot o quando in FS viene riferito
Master Boot Record usato al boot del computer
- Trova la partizione attiva
- Legge il 1o blocco, Boot block, e lo esegue
Il layout di una partizione disco varia fortemente con FS/OS
22
• 
Alcune considerazioni su open
La creazione/apertura di un file permette di collezionare in memoria le
informazioni sul file per gestire efficientemente le operazioni di I/O.
•  open - passa al FS un pathname che permette di recuperare il file nel directory
accedendo così i suoi attributi (es. collezionati in i-node)
• 
Alcune porzioni del directory sono mantenute in memoria dal FS per accelerare
le operazioni su directory (es. dentry object di Linux)
• 
Il file control block (es. i-node), accresciuto di informazioni dinamiche sullo
stato attuale di utilizzo del file , và inserito (se non c’è già) nella tabella dei file
aperti (l’entry in tabella contiene informazioni sul n° procressi che hanno aperto
il file) e in una per process file table (nota: l’inserimento può essere un
semplice puntamento - file descriptor in unix o file handle in NT).
• 
Le entry di apertura conterranno permessi e offset per le operazioni rw
• 
Quando un processo chiude un file, l’entry della per process file table viene
cancellata e il contatore di aperture nella tabella generale viene decrementato.
–  Quando il contatore di aperture è azzerato, si aggiorna la struttura del
directory su disco e si elimina l’entry nella tabella generale dei file aperti
23
Contenuti di un File Control Block (es. i-node)
24
Strutture In-Memory del File System
(a)  Apertura di un file
(b)  Accesso in lettura
al file
25
Virtual File Systems
Molti SO sono in grado di gestire diversi FS
contemporaneamente
•  Virtual File Systems (VFS) fornisce un modello “objectoriented” per supportare implementazioni distine di FS
compreso NFS.
•  VFS permette l’uso della stessa interfaccia di system call
( API) per tipi differenti di FS.
•  L’API è quella del VFS interface piuttosto che quella
specifica del FS.
26
Strati del FS
1.  Interfaccia del file system: per le chiamate open, read, write..
2.  VFS: separa le operazioni generiche di FS dalla implementazione specifica
tramite una interfaccia uniforme alle diverse implementazioni di FS montati
localmente o accessibili dalla rete.
•  Una struttura unica, il v-node, rappresenta un file locale o remoto (con un
indicatore numerico univoco)
•  Il VFS distingue i file locali
dai remoti e attiva le
operazioni specifiche del
FS locale e invoca le
procedure del protocollo
NFS per richieste remote
(attraverso la creazione e
gestione di opportuni file
handle)
1.  Strato della implementazione
locale del FS o di realizzazione del protocollo NFS
27
Secondary storage management
In memoria secondaria un file consiste di una collezione di
blocchi.
Il SO/FS e’ responsabile dell’allocazione dei blocchi nei file:
!
1. per ogni file deve essere allocato (allocation policy) lo
spazio di memoria secondaria
2. e’ necessario tener traccia dello spazio disponibile per
l’allocazione (free space management)
questi due task sono correlati
28
File allocation
Problematiche
1. quando si crea un nuovo file, occorre allocare subito il massimo
spazio richiesto per esso?
2. Lo spazio viene allocato per un file come una o più unità
(blocchi) contigue (portions).
•  La dimensione di una porzione può variare dal singolo
blocco all’intero file.
•  Che dimensione scegliere per tale porzione?
3. Che struttura dati usare per tener traccia delle porzioni
assegnate? (File Allocation Table - FAT)
29
30
Preallocation vs. Dynamic Allocation
Preallocazione nel momento in cui e’ richiesta la
creazione di un file si dichiara la sua massima
dimensione
(soluzione adatta ai casi in cui questa dimensione e’ prevedibile, come
compilazione di programma, trasferimento di file da un sistema ad un altro
attraverso la rete..)
Allocazione dinamica alloca spazio al file, in porzioni,
quando occorre (se non e’ possibile la stima della dimensione del file,
non occorre sovrastima)
31
Portion size 1/2
Trade-off tra efficienza dal punto di vista del singolo file ed efficienza
dell’intero sistema.
La contiguità di spazio migliora le prestazioni, specialmente per le operazioni
di retrieve-next, e soprattutto nell’esecuzione di transazioni nei sistemi operativi
transaction oriented.
Avere un gran numero di piccole porzioni incrementa la dimensione delle
tabelle per gestire l’informazione di allocazione
Avere porzioni di dimensione fissa (es.blocchi o multipli, pagine!) semplifica
la riallocazione dello spazio
Avere porzioni di dimensione variabile o piccole porzioni di dimensione
32 fissa
minimizza lo spreco di spazio causato dalla sovrallocazione.
Portion size 2/2
soluzioni alternative:
variable large contiguous portion offre le migliori prestazioni
nell’accesso, la dimensione variabile evita lo spreco di spazio e
la file allocation table e’ piccola ma il riuso dello spazio e’
difficile
Blocchi - piccole porzioni di dimensione fissa offrono maggiore
flessibilità di allocazione. Richiede dimensioni maggiori per la
tabella di allocazione.
La contiguità viene abbandonata; i blocchi vengono allocati
quando occorre.
33
metodi di allocazione - file allocation method
Come vengono allocati i disk block di un file :
•  Contiguous allocation
•  Linked allocation
•  Indexed allocation
34