Syst `emes de fichiers
La notion de fichier et de r ´epertoire La notion de syst `eme de fichiers mount
Partage et protection
Repr ´esentation des fichiers
Repr ´esentation des r ´epertoires Espace libre
La notion de fichier
Selon les syst `emes, un fichier peut avoir diff ´erente structure
•
Aucune: un s ´equence de bytes•
Une s ´equence d’enregistrements de taille fixe•
Une s ´equence d’enregistrements de taille variable De nos jours, toujours le premier casD’autres structures ajout ´ees par dessus (l’insu du SE)
Attributs d’un fichier
Identifiant: un nombre unique; aussi appel ´e inode Type: fichier simple, r ´epertoire, lien symbolique, ...
Taille
Lieu: o `u trouver ses donn ´ees sur le disque
Dates: cr ´eation, derni `ere modification, dernier acc `es, ...
Protection: possesseur, droits d’acc `es
Attributs d’un fichier
Identifiant: un nombre unique; aussi appel ´e inode Type: fichier simple, r ´epertoire, lien symbolique, ...
Taille
Lieu: o `u trouver ses donn ´ees sur le disque
Dates: cr ´eation, derni `ere modification, dernier acc `es, ...
Protection: possesseur, droits d’acc `es
Nom: g ´en ´eralement, n’est pas un attribut du fichier!
Op ´erations sur fichier
Create: g ´en ´eralement commence vide Open: Trouver un fichier pour y op ´erer
Read: Lire un certains nombre de bytes d’un fichier Write: ´Ecrire par dessus, ou ´etendre un fichier
Truncate: Effacer une partie de la fin du fichier Close: Indiquer qu’on a finit d’op ´erer
• read(pos,size)
etwrite(pos,size,bptr)
• read(size)
etwrite(size,bptr)
etseek(pos)
Pourquoi Open+Close
Permet de s ´eparer op ´erations co ˆuteuses:
•
Recherche dans les r ´epertoires•
Trouver les m ´eta-donn ´ees du fichier•
V ´erification des droits d’acc `esPermet aussi de maintenir un ´etat entre plusieurs op ´erations
•
Eviter d’effacer un fichier en cours d’usage´•
Garder un pointeur sur la position courante•
Eviter l’acc `es concurrent (locking´ )Donne une certaine information d’intention au SE
Synchronisation: file locking
Etonnamment probl ´ematique en g ´en ´eral´ Deux approches:
•
Mandatory: acc `es interdit si on a pas le verrou•
Advisory: les verrours sont l `a, si vous voulez les utiliser V ´erouiller le contenu d’un fichierV ´erouiller le nom d’un fichier (i.e. une entr ´ee de r ´epertoire) V ´erouiller une partie de son contenu (une tranche de bytes)
R ´epertoire
Le r ´epertoire est une table de traduction nom
⇒
fichier Stock ´ee aussi sur le disque•
Create: cr ´eation d’une nouvelle entr ´ee•
Delete: Enlever une entr ´ee•
Lookup/Search: Trouver une entr ´ee•
List: ´enum ´erer les entr ´ees de la tableG ´en ´eralement structure hi ´erarchique: un r ´epertoire est un fichier sp ´ecial
•
MakeDirectory: cr ´eer un nouveau r ´epertoireArbre de fichiers
Graphe de r ´epertoires
Un fichier peut ˆetre r ´ef ´erenc ´e par plusieurs noms
Probl `emes de graphes
Lors d’un Delete, v ´erifier si l’objet devient inaccessible
En g ´en ´eral, propri ´et ´e globale: recherche sur tout le disque!
Solution: compteurs de r ´ef ´erences
•
Ne marche pas en cas de cycle•
Interdire les cyclesD ´etecter un cycle, en g ´en ´eral, tr `es co ˆuteux
•
Une seule r ´ef ´erence par r ´epertoire (⇒
pas de cycles)•
Liens symboliques pour compenserPartitions et syst `emes de fichiers
Syst `eme de fichiers: arborescence de fichiers sur un disque Appliqu ´e `a un disque logique (e.g. partition)
mount: placer un syst `eme de fichiers dans un autre arbre
•
Cache une entr ´ee existante par une nouvelle arborescence Action purement en m ´emoire, pas d’effet sur le disqueLa mount table associe mount points
⇒
syst `eme de fichiers Lors de l’ouverture d’un fichier:1. Consulter la mount table pour trouver le syst `eme de fichiers 2. Consulter le syst `eme de fichiers pour trouver le fichier
Avant mount
Apr `es mount
Partage et protection
Contr ˆole d’acc `es Contr ˆoler qui:
•
Certains utilisateur (user ID)•
Certains groupes Contr ˆoler quels acc `es:•
Lecture, ´Ecriture, Ex ´ecution du fichier/r ´epertoire•
Ajout d’une r ´ef ´erence dans un r ´epertoire•
Enlever une r ´ef ´erenceVirtual File System (VFS)
Plusieurs types de syst `emes de fichiers: ext4, tmpfs, ntfs, nfs, hfs, ...
VFS est l’API qui interface le SE avec un syst `eme de fichier particulier S ´eparer op ´erations g ´en ´eriques
Cacher d ´etails d’implantation Modulariser
Sp ´ecifique `a un SE
Un ensemble de types:
•
file, superbloc, dentry, ...Un ensemble d’op ´erations:
•
open, read, link, ...Structure d’un syst `eme de fichiers
G ´en ´eralement constitu ´e des ´el ´ements suivants:
•
blocs: les blocs de donn ´ee•
inode: structure d ´ecrivant un fichier; num ´erot ´e•
r ´epertoire: type sp ´ecial de fichier•
superbloc: structure d ´ecrivant le syst `eme de fichiers•
free map: table des blocs libres•
indexes: table des blocs constituant un fichierStructure d’un r ´epertoire
R ´epertoire est une table String
⇒
InodeNb (plus, si entente) Peut ˆetre implant ´e comme:•
Liste s ´equentielle d’entr ´ees•
Table de hachage•
Arbre ´equilibr ´e, e.g. B-TreeMais “lin ´earis ´e” en un ensemble de blocs
Important: minimiser le nombre d’acc `es de blocs
•
Pour la recherche (lookup), surtout•
Aussi pour l’insertion et l’ ´elimination d’entr ´eesM ´ethodes d’allocation
Comment placer les blocs d’un fichier
•
Allocation contigu ¨e•
Chaˆın ´e•
Index•
ExtentsG ´en ´eralement on veux allouer les blocs de mani `ere contigu ¨e Mais taille du fichier pas connue `a l’avance
Allocation contigu ¨e
Id ´eal, sauf pour la fragmentation (externe)!
Allocation en chaˆıne
Inode contient index du premier bloc Chaque bloc contient index du suivant
Pas de probl `eme de fragmentation Pas besoin de compacter
Acc `es direct inefficace
Risque: acc `es s ´equentiel inefficace Compacter n ´ecessaire quand m ˆeme
Allocation index ´ee
Inode contient un emphindex de tous les blocs
•
Permet acc `es al ´eatoire efficace•
Pas de fragmentation•
Ni besoin de compacterL’index peut occuper plusieurs blocs
•
Index contigu?•
Chaˆın ´e?•
Ou index ´e?Indexation indirecte progressive
Syst `eme “Unix File System”
Allocation par extents
Extent: ensemble de blocs contigus
Inode contient liste ou index des extents d’un fichier
•
Fichier contigu: comme allocation contigu ¨e•
Fichier fragment ´e: pire qu’allocation index ´ees Fichiers fragment ´es = probl `eme de toute fac¸on•
Profite des efforts de d ´efragmentation des fichiers•
En g ´en ´eral, beaucoup plus compact qu’un index classique•
Plus compact⇒
plus rapide(D ´e)Fragmentation
Allocation par bloc
⇒
pas de probl `eme de fragmentation externe Autre Fragmentation: le fait qu’un fichier n’est pas contiguD ´efragmentation p ´eriodique: pas n ´ecessaire Eviter la fragmentation:´
•
Comprendre la source de la fragmentation•
Placer un nouveau fichier l `a o `u il reste de la place•
Eviter de bloquer un fichier encore ouvert avec un nouveau fichier´•
Allocation paresseuseGestion des blocs libres
Syst `eme de fichiers doit garder trace des blocs libres Peuvent ˆetre maintenu dans
•
Une liste chaˆın ´ee•
Un bitmap•
ExtentsStocker la liste chaˆın ´ee dans les blocs libres!
Liste chaˆın ´ee peu pratique pour trouver des blocs contigus/proches Co ˆut du bitmap n ´egligeable: 1bit/4kB