File System

Transcript

File System
File System
63
Caratteristiche generali
• Struttura gerarchica;
• Files senza struttura ("byte stream");
• Protezione da accessi non autorizzati;
• File & device independence;
• Semplicità.
64
Caratteristiche generali
• I tipi (principali) di files sono tre:
- Files ordinari
- Directories
- Files speciali
• Il sistema assegna biunivocamente a ciascun file un identificatore
numerico, detto i-number ("index-number"), che gli permette di rintracciarlo
nel file system.
65
Files ordinari
• Sono sequenze di byte ("byte stream");
• Possono contenere informazioni qualsiasi (dati, programmi sorgente,
programmi oggetto,...);
• Il sistema non impone nessuna struttura.
R
O
M
A
eoln
M
text file
00II0I0I 0I000000
IIIIIIII
0III0III
IIII0000
binary file
66
Organizzazione dei files
Per consentire all'utente di rintracciare facilmente i propri files, Unix
permette di raggrupparli in directories, organizzate in una (unica) struttura
gerarchica.
ROOT DIRECTORY
: directory
: file ordinario
directory (vuota)
file speciale
67
Directories
• Sono sequenze di bytes come i files ordinari;
• Differiscono dai files ordinari solo perché non possono essere scritte da
programmi ordinari;
• Il loro contenuto è una serie di directory entries, che definiscono
l'associazione fra gli i-number (usati dal sistema) e i filename mnemonici
((usati dall'utente).
)
entry
entry
••••
••••
i-number (2 bytes in SV)
fil
filename
(14 bytes
b t in
i SV)
68
Directories
Ogni directory ha sempre almeno 2 entries:
"•"
la directory stessa
"••"
la directoryy p
padre
a
107
b
202
c
253
•
202
d
289
••
107
c
253 d
289 eof
69
Byte Offset in
Directory
Inode Number
(2 bytes)
File Name
(14 bytes)
0
202
.
16
107
..
32
253
c
48
289
d
Struttura directory /a/b
Filename sinonimi (Links)
Un file può avere più filename (ma
sempre un solo i-number).
a
89
d
210
b
c
107 e
Esempio:
p Il file 107 ha 3 links
f
402
89
107
•••
b
107
c
107
210
d
210 •••
••• e
107
f
402 •••
402
70
In un sistema Unix ci sono due tipologie di link a file.
Hard link
• E’ un file contenente un puntatore al file referenziato. I file referenziati
–
–
devono trovarsi nello stesso file system
non possono essere directory
• Il file esiste almeno fino a quando c’è un hard link che punta ad esso.
Symbolic link (o soft link)
• Non ha informazioni effettive sul file referenziato ma solo la posizione su dove si trova.
–
–
Il file può trovarsi in un file system distribuito come NFS
È possibile linkare anche le directory
• Se il file di destinazione viene eliminato allora il link diventa inconsistente.
Pathname assoluto
Ogni file viene identificato univocamente specificando il suo pathname
assoluto, che individua il cammino dalla root-directory al file.
/
/dir/dir/..../dir/filename
di /di /
/di /fil
root
separatori
bin
etc
usr
.........
dev
roberto
mario
prog
prog
a
x
y
a
b
c
/usr/mario/prog
/usr/roberto/prog/a
71
Tipiche directories di sistema
/bin
comandi eseguibili
/dev
files speciali (I/O devices)
/etc
files per l'amministrazione del sistema, ad esempio:
/etc/passwd
/etc/termcap
/lib
librerie di programmi
/tmp
area temporanea
/
/usr
h
home
di
directories
t i
N.B. La struttura varia da versione a versione
72
Home directories
• Ad ogni utente viene assegnata, ad opera del system administrator, una
directory di sua proprietà (home directory) che ha come nome lo username
del suo proprietario;
• Ad essa
essa, l'utente
l utente potrà appendere tutti i files (o subdirectories) che desidera;
• Spesso (ma non sempre) le home directories sono sotto /usr.
/
usr
ggigi
g
mario
roberto
73
Working directory
• Ogni utente opera, ad ogni istante, su una directory corrente, o working
directory;
• Subito dopo il login, la working directory è la home directory dell'utente;
• L'utente può cambiare la working directory con apposito comando (cd).
74
Pathname relativo
/
bi
bin
usr
etc
t
.........
d
dev
working
directory
roberto
mario
Ogni file può essere identificato
univocamente specificando
solamente il suo pathname relativo
alla
ll working
ki directory.
di t
prog
prog
/usr/mario/prog
••/mario/prog
•/••/mario/prog
a
a
x
b
c
y
/usr/roberto/prog/a
prog/a
•/prog/a
75
Files speciali
• Ogni device di I/O viene visto, a tutti gli effetti, come un file (file speciale);
• Richieste di lettura/scrittura da/a files speciali causano operazioni di
input/output dai/ai devices associati.
/
dev
tt 1
tty
tt 2
tty
••••••
tty 3
modem
76
Files speciali
File & device independence: In Unix i programmi non sanno se operano
su un file o su un device.
Dischi
Comandi
UNIX
Stampanti
UNIX
File
System
Programmi
utente
Nastri
Terminali
Linee di
com nica ione
comunicazione
Pipes
stessa interfaccia
per ogni tipo di file
77
I/O Subsystem
mknod
od /de
/dev/tty13
/ y 3 c 2 13
3
Crea un file di device:
/dev/tty13: nome del file
c: file speciale a caratteri ( b: file speciale a blocchi)
2: major number
p di device che corrisponde
p
ad una entry
entri appropriata
pp p
Indica il tipo
nella character(o block) device switch table.
13: minor number:
N
Numero
di unità
ità del
d ld
device
i nella
ll classe
l
cuii appartiene.
ti
51
Attributi
Per ogni file (ordinario, directory, speciale) Unix mantiene le seguenti
informazioni nel descrittore del file:
Tipo
Posizione
Dimensione
Numero di links
Proprietario
Permessi
Creazione
Modifica
A
Accesso
ordinario, directory, speciale?
dove si trova?
quanto è grande?
quanti nomi ha?
chi lo possiede?
chi può usarlo e come?
quando è stato creato?
quando è stato modificato più di recente?
quando
d è stato
t t l'accesso
l'
più
iù recente?
t ?
78
File system “montabile”
• Un file system Unix è sempre unico, ma può avere parti residenti su
d i rimuovibili
device
i
ibili ((es. di
dischetti);
h tti)
• Queste parti devono essere:
montate prima di potervi accedere (mount)
- "montate"
- "smontate" prima di rimuovere il supporto (umount)
Root file system
• La stessa tecnica si usa per
suddividere il file system fra
diversi device, anche se non
rimuovibili.
i
ibili
\
(root)
a
b
c
(root)
d
Mounted file
system
e
f
79
Mount Table
Tabella sempre
p residente,, aggiornata
gg
da mount e umount,, che
contiene, per ogni file system montato:
- major e minor number del device;
- puntatore al superblocco del file system;
- puntatore alla root del file system a cui è montato;
- puntatore alla directory su cui è montato;
82
Storia
• Il file system Unix, negli anni, si è evoluto da sistema di files locali a
sistemi di files distribuiti (ad esempio nfs);
• L’interfaccia (system calls) verso il file system è rimasta invece abbastanza
stabile;
• Oggi normalmente il kernel è in grado di supportare file system multipli,
((coesistenti sulla stessa macchina);
);
• Nel seguito si descrive s5fs (il file system originale di System V).
80
Tipiche tipologie di file systems supportati in SVR4
File System
Description
S5fs
Original System V file system
ufs
Berkeley Fast File System adapted to vnode/vfs interface
vxfs
Veritas journal file system
specfs
A file system for device special files
NFS
Network File System
RFS
Remote File System
fifofs
A file system for first-in, first-out files
/proc
File System which represent each process as file
bfs
Boot File System
s5fs: Organizzazione del disco
• Ogni disco è suddiviso in zone contigue dette dischi logici (o volumi, o
partizioni);
• Ogni file system è interamente contenuto in un volume, ed ogni volume
può contenere un solo file system;
• Per creare un file system si usa il comando mkfs;
• La dimensione dei volumi è fissa
fissa, e specificata al momento della creazione
del file system.
81
s5fs: Organizzazione del disco
Un file system può essere montato su altri file system mediante il comando
mount (e smontato mediante il comando umount)
File System 1
dev
bin
usr
FS 2
staff
VOLUME
/dev/dk/1
/dev/dk/2
FS 3
/d /dk/3
/dev/dk/3
DISCO
82
s5fs: Organizzazione del disco
• Ogni volume è suddiviso in blocchi di dimensione fissa (512, 1024, 2048 o
più bytes a seconda della versione di sistema);
• Un blocco costituisce la unità di allocazione a un file e la unità di accesso
al disco
........
83
s5fs: Organizzazione del disco
Un volume è suddiviso in quattro aree distinte;
Le aree hanno dimensione fissa definita al momento della configurazione
del sistema
Area di bootstrap
Area di controllo (o superblocco)
A
Area dei descrittori di file (i‐list)
d id
itt i di fil (i li t)
Area dei blocchi dati
Volume
84
s5fs: Area di bootstrap
• Non serve per gestire i files: contiene il programma di bootstrap per la
inizializzazione del sistema;
• Si usa l'area di bootstrap
p del volume che contiene il root file system
y
((ma
per uniformità c’è su ogni volume).
85
s5fs: Area dei blocchi dati
• Contiene i blocchi dati di tutti i file del file system, e i blocchi liberi, che
possono essere allocati ai files;
• I blocchi vengono allocati ai vari file e deallocati quando necessario:
pertanto i blocchi di un file non sono necessariamente contigui;
• Tutti i blocchi liberi sono collegati in una free-block list, la cui testa è nel
superblocco;
p
;
d
descrittore
itt
d l file
del
fil
• Gli indirizzi dei blocchi dati
di un file sono nel descrittore
d l fil
del
file ((contenuto
t
t nella
ll ii-list).
li t)
di i-number n
(64 bytes)
Area blocchi dati
3
01 ... n .........max
Super
blocco
1
2
2
3
1
File A
File B
Free
86
s5fs: Area dei descrittori di file (i-list)
• È una tabella di descrittori di file denominati i-node (“index-node”);
• Ciascun i-node è accessibile attraverso il suo indice nella tabella (i-number).
descrittore del file
di i‐number n
(64 bytes) Area blocchi dati
3
01 ... n .........max
Super
blocco
i list
i‐list
1
2
2
3
1
File A
File B
Free
87
Campo
Dimensioni (byte)
Descrizione
di_mode
2
Tipo di file, permessi, etc.
di_nlinks
2
Numero di hard links al file
di_uid
2
UID proprietario
di_gid
2
GID proprietario
di_size
4
Dimensione in bytes
di_addr
39
di_gen
1
Generation number
di_atime
4
Tempo di ultimo accesso
di_mtime
4
Tempo dell’ultima modifica
di_ctime
4
Tempo ultima modifica inode
Array degli indirizzi dei blocchi
Struttura di un inode
s5fs: i-node
Tipo di file
Nu mero di (h ard) lin k al file
UID del proprietario
GID del proprietario
Permessi di accesso
Dimen sion e del file in bytes
Tabella degli in dirizzi dei blocch i dati
Un i-node contiene gli attributi di un file.
Ora e data dell'u ltimo accesso
Ora e data dell'u ltima modifica
Ora e data dell'u ltima modifica dell'i-n ode
88
s5fs: i-node
R
W
X
per il proprietario
Permessi: 12 bit
R
W
X
R
per il gruppo
W
X
per gli altri
Sticky bit: permette di richiedere al
kernel che l’immagine
l immagine di un
processo resti allocata nell’area di
swap anche dopo la sua
terminazione (utile per programmi
frequentemente utilizzati, es. vi)
SETUID: set user-id
SETGID: set group-id
SETGID
id
Sticky bit
89
s5fs: i-node
Sticky bit:
• permette
tt di richiedere
i hi d
all kernel
k
l che
h l’i
l’immagine
i di un processo resti
ti allocata
ll
t
nell’area di swap anche dopo la sua terminazione (utile per programmi
frequentemente utilizzati, es. vi);
• comando unix: chmod +t program-file;
• un eseguibile con lo sticky bit settato non viene
rimosso dalla memoria primaria anche se nessun
processo lo sta usando;
• solo il super-user puó settare lo sticky bit (perché?);
• Lo sticky bit viene disabilitato - all’apertura del file in scrittura
- chmod -t program-file
p g
- rm file
- unmount filesystem of file
- kernel out of space in swap device
90
s5fs: i-node
Set-Uid bit (S):
• L’obiettivo è quello di concedere temporaneamente i privilegi di un utente ad un
altro;
process id
process-id
real user id
possessore del file
in esecuzione
effective user id
possessore del processo
(chi lo ha lanciato)
• normalmente,, i privilegi
p
g di un p
processo (q
(quali p
permessi p
possiede)) sono q
quelli
dell’utente che ha lanciato il processo.
91
s5fs: i-node
Set-Uid bit (S):
Consideriamo un programma PIPPO appartenente all
all’utente
utente A,
A ed un utente B
che esegue PIPPO.
92
s5fs: i-node
Set-Uid bit (S):
93
s5fs: i-node
1 accesso
0
1
2 accessi
La tabella degli indirizzi è composta di
13 indirizzi, e si basa su una struttura a
quattro livelli.
livelli
9
10
11
3 accessi
12
4 accessi
i-node
blocchi dati
94
Esempio 1
Ipotesi:
blocco:
indirizzo:
1024/4 =
1 Kb
4 bytes
256 indirizzi per blocco
Come accedere al byte 12500 di un file?
12500/1024 = 12 con resto 212
Quindi devo accedere al 212
212-esimo
esimo byte del 13
13-esimo
esimo blocco del file
file.
95
Esempio 2
Ipotesi:
blocco:
indirizzo:
1024/4 =
1 Kb
4 bytes
256 indirizzi per blocco
Qual è la dimensione massima indirizzabile?
10 * 1 Kb
256 * 1 Kb
256 * 256 * 1 Kb
256 * 256 * 256 * 1 Kb
= 10 Kb
= 256 Kb
= 64 Mb
= 16 Gb
+
+
+
=
> 16 GB per file
NB: In ogni caso, poichè 32 bit indirizzano solo fino a 4 Gb (232), la
dimensione è limitata a 4 Gb per file.
96
s5fs: prestazioni
La struttura di indirizzamento a un file privilegia i file piccoli rispetto ai file grandi.
Nota:
In una tipica installazione Unix, la maggior parte dei file ha dimensioni molto
piccole. Ad esempio, uno studio su un campione di circa 20.000 files ha dato
questi risultati:
48%
85%
dei files
dei files
<= 1 Kb
<= 8 Kb
[Mullender Tanenbaum
[Mullender,
Tanenbaum, Immediate Files
Files, in Software Practice and Experience
Experience, Aprile 1984]
97
s5fs: superblocco
È un singolo blocco, e contiene informazioni globali sul volume:
• dimensione del volume (# blocchi)
• informazioni per gestione blocchi liberi (numero dei blocchi liberi nel
volume, testa della free-block list, flag di lock della free-block list)
• dimensione della i-list
• informazioni per gestione i-nodes liberi (numero degli i-node liberi,
cache degli i-node liberi, flag di lock per la lista degli i-node liberi)
• flag che indica se il superblocco è stato modificato
98
s5fs: superblocco
• Nel superblocco viene mantenuto un elenco di i-number di i-node liberi
(“caching”);
• Quando serve un i-node libero, dalla cache viene prelevato un i-number (se
c è);
c’è);
• Quando la cache è vuota, la si rialimenta scandendo la i-list per cercare altri
i-node liberi ((campo
p “tipo-file”
p
a 0))
(Ci si ricorda l’ultimo i-node letto nella i-list, e la prossima ricerca riparte da lì);
• In tal modo, gli i-node liberati vengono riutilizzati
(Q
(Questo
t approccio
i non è utilizzabile
tili
bil per i bl
blocchi
hi lib
liberi,
i perché
hé questi
ti non
sono riconoscibili).
99
s5fs: free-block list
n el
s uperblocco
(co pia in memo ria)
49
Free b lo cks add re ss b locks
49
0
49
0
0
...
...
...
...
con t at ore
pun t at ori
s ign ificat iv i
...
...
Free b lo cks
Vantaggi: Con 1 accesso al disco (al massimo) posso:
- ottenere gli indirizzi di molti blocchi liberi
- liberare molti blocchi
(Una normale lista lineare permetterebbe di ottenere un solo blocco alla
volta)
lt )
102
s5fs: superblocco
Per motivi di efficienza, copia del superblocco sta normalmente in
memoria...
... e il sistema lo registra
g
p
periodicamente su disco,, se è stato modificato
MEMORIA
CENTRALE
Copia del
superblocco
DISCO
all'inizio
superblocco
periodicamente
(flag di modifica alto)
100
s5fs: superblocco
Il superblocco è un’area critica, senza la quale l’intero file system non è più
accessibile.
Che cosa p
può capitare:
p
- Il blocco fisico di disco su cui risiede può rovinarsi
- Il sistema può cadere prima dell'allineamento fra superblocco in
memoria
i e su di
disco
Architettura molto pericolosa!
101
Risoluzione pathname
/usr/f1
Pathname del file da accedere:
Visione logica:
/
Visione fisica:
NB: Si suppone per semplicità che tutti i file e la i-list
occupino
i un solo
l bl
blocco.
i‐list
bin
usr
Area blocchi dati
f1
usr
f1
f2
/
<dati>
...
...
...
f2
f1
1
57
4
..... 112
bin
x
user
57
112
103
Risoluzione del pathname per /usr/ast/mbox
L’i-node indicizzato dall’i-number 60 contiene l’indirizzo del blocco per il file mbox
Miglioramenti rispetto a s5fs:
–
–
Lunghezza massima dei nomi portata a 256 caratteri
Più di 65535 inodes nel File System
Miglioramenti rispetto a s5fs:
–
–
Lunghezza massima dei nomi portata a 256 caratteri
Più di 65535 inodes nel File System
Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni
di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati.
track2
track1
track0
Sector 0
Sector 1
head 0
Cylinder 0
platters
head 1
Cylinder 1
head 2
Miglioramenti rispetto a s5fs:
–
–
Lunghezza massima dei nomi portata a 256 caratteri
Più di 65535 inodes nel File System
Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni
di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati.
Il superblocco è copiato in mirroring in ciascun gruppo di cilindri al fine di aumentare la
sicurezza.
Miglioramenti rispetto a s5fs:
–
–
Lunghezza massima dei nomi portata a 256 caratteri
Più di 65535 inodes nel File System
Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni
di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati.
Il superblocco è copiato in mirroring in ciascun gruppo di cilindri al fine di aumentare la
sicurezza.
File System diversi possono avere block size diversi: 4096 bytes, 8192 bytes, etc.
–
due livelli di accesso indiretto bastano per 4 Gb
Miglioramenti rispetto a s5fs:
–
–
Lunghezza massima dei nomi portata a 256 caratteri
Più di 65535 inodes nel File System
Ogni partizione è suddivisa in gruppi di cilindri contigui, ciascuno con proprie informazioni
di servizio. Ciò permette di adottare particolari strategie per tenere vicini dati correlati.
Il superblocco è copiato in mirroring in ciascun gruppo di cilindri al fine di aumentare la
sicurezza.
File System diversi possono avere block size diversi: 4096 bytes, 8192 bytes, etc.
–
due livelli di accesso indiretto bastano per 4 Gb
Un blocco è suddiviso in n frammenti da 1, 2, …, 8 (minima dimensione 512 bytes).
Un file in FFS è composto da un insieme di blocchi sul disco completi
–
l’ultimo blocco del file può essere parziale (1 o più frammenti contigui)