Sisteme de Operare
Curs Implementarea sistemelor de
fi iere
Suport curs
OSC
Capitolul File-System Implementation
Sec iunile 8
MOS
Capitolul File Systems
Sec iunile 4
Cuprins
Structura sistemului de fi iere
Alocarea spa iului pe disc
Implementarea directoarelor i link urilor
Gestiunea spa iului liber
Considerente de performan
Consisten a sistemelor de fi iere
Sisteme de fi ire jurnalizate
Sistemul de fi iere MINIX FS
Sistemul de fi iere
Perspectiva utilizatorului
Ierarhie de directoare i fi iere
Nume drepturi de acces utilizator grup
timpi de acces
Perspectiva sistemului de operare
Structuri i algoritmi de stocare eficient i
scalabil a informa iei
Suport persistent
Implementarea unui sistem de
fi iere
Un sistem de fi iere este un mod de
organizare a datelor pe un suport
persistent
Dou roluri
Oferirea unei interfe e facile utilizatorului
Fi iere directoare ierarhie
Atribute (drepturi nume timpi)
Algoritmi de alocare i organizare a
informa iei pe suportul fizic
Translatare cereri de la utilizator n sectoare
Interfe e de
utilizare implementare
Structura sistemului de fi iere
Fi ierul
Entitatea de baz a unui sistem de fi iere
Abstractizeaz datele informa iile
n Unix totul e un fi ier dac nu e fi ier
atunci e proces
Un fi ier este descris de date i metadate
Date blocurile de date efective
Metadate informatie despre date structur
specializat
File Control Block (i node n Unix)
De la descriptor de fi ier la FCB
fi ier
deschis
copie FCB
n memorie FCB
Tabela de descriptori a
procesului
cached data
data
user space kernel space disc
Alocarea spa iului pe disc
Mecanismul prin care sistemul de operare
gestioneaz spa iul liber
Alocare contigu
Alocare cu liste
Alocare indexat
Alocarea spa iului pe disc n sistemele de
fi iere obi nuite se face la nivel de bloc
Un bloc are dimensiunea multiplu de sector octeti)
Alocare contigu
Fiecare fi ier este stocat ca o secven
contignu pe disc
Avantaje
Identificare blocurilor fi ierului se face simplu: blocul
de start dimensiunea fi ierului n blocuri
Viteza mare la citire
Dezavantaje
Fragmentare extern
Utilizatorul trebuie s specifice dimensiunea fi ierului
la crearea acestuia
Alocare contigu
Alocare cu liste
Blocurile fi ierului con in pointeri c tre
urm torul bloc
Avantaje
Nu mai exist fragmentare extern
Este necesar doar primul bloc pentru a localiza
fi ierul pe disc
Dezavantaje
Timpul de acces pentru ultimele blocuri este extrem
de mic
Alocare cu liste
Tabela de alocare a fi ierelor
Pointerii c tre blocurile fi ierului nu se
mai in la un loc cu datele ci ntr o zon
separat FAT
Dac FAT ul are dimesiune redus se
poate ncarc n memorie
Dac nu la deschiderea fisierului se pot
citi din FAT o parte a blocurilor de date
ale fisierului n memorie
Se reduce semnificativ timpul de acces
Tabela de alocare a fi ierelor
Alocare indexat
Fiecare fi ier are alocat un index block = i node
i node-ul con ine o tabel care mapeaz
blocurile logice ale fi ierului n blocuri fizice
Avantaje
Nu exist fragmentare extern
Timp de acces bun
Dezavantaje
Num rul de intr ri n tabela de indexare este limitat
Ultimele intr ri con in pointeri c tre alte tabele de
indec i deci laten a cre te la accesarea acestor
blocuri
Alocare indexat
Exemplu de i node
Directory entry
Numele unui fi ier este reprezentat de o
structur directory entry dentry
struct dirent POSIX
WIN FIND DATA Win
Pe disc structura dentry con ine numele
fi ierului i un identificator al FCB i node
number
n sistemele Unix numele dentry este
separat de FCB i node
Implementarea directoarelor
Un director este un tip de fi ier care con ine
structuri dentry
Un director dispune de un FCB i node intrare
n tabela FAT)
Intr rile i sunt speciale
Dimensiunea unui director este dat structurile
dentry con inute
ls ld /
drwxr-xr-x 4 root root 8 /
ls ld etc
drwxr-xr-x 6 root root 0 etc
Implementare de director n
ext
Link uri
Hard links
Dou structuri dentry care refer acela i i-
node
Nu pot fi folosite ntre sisteme de fi iere
diferite de ce Hint ce con ine un dentry )
Sym bolic links soft links
i node specializat
i node-ul con ine numele fi ierului referit
Pe ext numele se stocheaz n inode dac are
sub de caractere
Link uri
touch a
ln a b
ls -l -i
|
-rw-r -r-- |
|
razvan |
razvan |
|
08 05- 1 |
:26 |
a |
|
-rw-r -r-- |
|
razvan |
razvan |
|
08 05- 1 |
:26 |
b |
a c
ln
-s
ls
-l
|
-rw-r -r-- |
|
razvan |
razvan |
|
08 05- 1 |
:26 |
a |
|
|
|
-rw-r -r-- |
|
razvan |
razvan |
|
08 05- 1 |
:26 |
b |
|
|
|
lrwxrwxrwx |
|
razvan |
razvan |
|
08 05- 1 |
:27 |
c |
> |
a |
|
rm |
b |
|
|
ls |
-l |
-i |
|
-rw-r -r-- |
|
razvan |
razvan |
|
08 05- 1 |
:26 |
a |
|
|
|
|
lrwxrwxrwx |
|
razvan |
razvan |
|
08 05- 1 |
:27 |
c |
> |
a |
|
Gestiunea spa iului liber
Vector de bi i
blocul este liber
blocul este ocupat
Liste nl n uite
Se men ine o list nl n uit n care primul bloc liber
con ine un pointer c tre al doilea etc.
Capul listei este inut n memorie
O versiune mai bun este cea n care se men in
tabele de blocuri libere
Se poate optimiza n plus dac se men in zone
contigue n tabele
Gestiunea spa iului liber
Spa iul necesar pentru lista vectorul de
bi i de blocuri libere pentru un disc de
GB cu blocuri de KB i adresa unui
bloc pe de bi i
List ^ = ^
de blocuri
Vector ^ = ^ = de
blocuri
Considerente de performan
Pentru a spori performan ele sistemelor
de fi iere se folosesc mecanisme de
Caching
Free-behind/Read ahead
Reducerea timpului de seek vezi i
planificarea opera iilor de I O)
Page cache
Folose te pagini n loc de blocuri
Folosit de memory mapped files
Apelurile read write folosesc buffer cache
Pentru flush scrierea pe disc a paginilor
modificate
msync pentru page cache
fsync pentru buffer cache
Este posibil ca discul s aib un cache intern
la scriere
Buffer cache
Men ine n memorie blocurile recent citite
de pe disc
Dimensiunea cache-ului este relativ mare =>
se folosesc tabele hash pentru a verifica dac
un bloc se afl sau nu n cache
Algoritmi de nlocuire FIFO LRU second
chance
LRU este mult mai u or eficient de
implementat datorit faptului c referirea
unei pagini se face mult mai rar
Non unified buffer cache
Unified buffer cache
Alte cache uri
Cache-ul pentru i noduri icache
n sistemele UNIX atributele fi ierelor sunt men inute
n inoduri dar sunt afi ate de comnezi uzuale (ls)
Cache-ul pentru rezolvarea numelor n inode- uri dcache
O rezolvare de nume > inode poate avea ca efect
citirea mai multor blocuri (se parcurge ntreaga cale)
Pentru a m ri viteza de c utare se folosesc tabele
hash
Backup uri
Backup uri
Sunt toate informa iile salvate
Da => full backup
Nu, numai cele care nu au fost salvate de la
ultimul backup => incremental backup
Sunt salvate toate blocurile sistemului de
fi iere
Da => physical dump; nu se pot face backup uri
incrementale
Nu => logical dump
Consisten a sistemelor de
fi iere
Datorit faptului c SO cite te modific i scrie
mai t rziu blocuri pot ap rea inconsisten e
La blocurile de date: nu se poate detecta, nu sunt
foarte grave pentru consisten a ntregului sistem de
fi iere
La blocurile auxiliare metadate): se pot detecta pot
avea efecte grave asupra ntregului sistem de fi iere
dac nu sunt corectate
La boot are dac sistemul de fi iere nu a fost
demontat se verific consisten acestuia
fsck scandisk
Teste de consisten pentru blocuri
Se creaz dou tabele, una pentru blocuri libere i una pentru
blocuri utilizate
Se parcurg i node urile i tabelele de indec i i se
incrementeaz corespunz tor n tabela de blocuri utilizate
Se parcurge lista de blocuri libere i se incrementeaz
corespunz tor n tabela de blocuri libere
Test de consisten pentru fi iere
Se creaz o tabel cu num rul de referiri ale fi ierelor
Se parcurg intr rile de directoare i se incrementeaz
corespunz tor n tabela de referiri ale fi ierelor
fsck scandisk
Se repar inconsisten ele
Blocuri
Se verific ca un bloc sa fie contorizat o singur
dat numai ntr una din tabele
Dac nu se repar inconsisten a (vezi slide ul
urm tor
Fi iere
Contorul de utilizare n i node ul fi ierului nu
corespunde contorului din tabel > se for eaz n
i node valoarea din tabel
fsck scandisk
a SF consistent
b bloc pierdut
c bloc duplicat in lista
de blocuri libere
d bloc de date duplicat
Sisteme de fi iere jurnalizate
Journaling file systems ext ReiserFS
JFS
Opera iile sunt scrise ntr un jurnal
nainte de efectuare sunt sumarizate n jurnal
n forma unor tranzac ii
Dup ncheiere tranzac ia este tears din
jurnal
Tipuri de jurnalizare
TODO
Sisteme de fi iere jurnalizate
La montarea sistemului de fi iere se
consult jurnalul i se efectueaz
opera iile din tranzac ii replay rollback)
Avantaje
Reduce drastic timpul de verificare a
consisten ei
Reduce posibilitatea de a pierde date n urma
unui crash
Dezavantaje
ncetine te sistemul de fi iere
VFS
Virtual File System
Opera iile generice ale SF sunt separate
de implementare
vnode entitate ce identific n mod unic
un fi ier din sistem
Pe baza vnode-ul se determin tipul
sistemului de fi iere i se activeaz opera iile
specifice
VFS n Linux IFS n Windows
VFS
Sistemul de fi iere MINIX FS
Variant simplificat a unui sistem de
fi iere UNIX
Folosit ini ial de Linux
nlocuit de ext apoi de ext ext )
Simplu ca i FAT
Folosit n sisteme embedded
Structura MINIX FS
Superblocul
Inode bitmap
Men ine un vector de bi i pentru a
identifica inode urile libere i cele
ocupate
Intrarea nu este folosit din motive
dictate de implementare
Func ia care caut un inode liber ntoarce
dac nu mai exist inode-uri libere
Zone bitmap
O zon un num r de blocuri puteri ale
lui folosite pentru alocarea datelor unui
fi ier
Men ine zonele libere cu un vector de bi i
S au folosit zone pentru a ine blocurile
aceluia i fi ier la un loc i astfel a reduce
timpul de seek
Probleme de securitate
Date reziduale n zon
Inode ul
Structura directoarelor
Un director con ine n zona de date un
vector de intr ri de director dentry)
O intrare de director este format din
Numarul inode-ului
Numele fisierului de octeti V V )
Cuvinte cheie
sistem de fi iere
date metadate
FCB
FAT
i node
dentry
hard link
symbolic link
page cache
buffer cache
icache dcache
consisten a SF
fsck scandisk
jurnalizare
VFS
superbloc
bitmap
|