I. Système de Gestion de Fichiers Un SGF est la partie d un système d exploitation chargée de : Établir la correspondance entre l organisation logique (vue utilisateur) et l organisation physique. Fournir une interface à l utilisateur. Optimiser en espace et en temps l utilisation des disques. Assurer le stockage permanent des données. Assurer l intégrité (blocs endommagés, corrompus, etc.) Assurer le partage et la protection des données (attributs, droits). II. Fichiers sous Unix/Linux Sous Unix/Linux, tout est fichier. C est-à-dire qu un fichier est un objet permettant de manipuler un flot d octets : Fichiers ordinaires. Répertoires (ou catalogues, en anglais directories). Fichiers spéciaux (périphériques, tubes, liens, sockets). II.1. Arborescences et chemins Un répertoire est associé à un ensemble de fichiers et d autres répertoires. Tout répertoire a un père et un seul. Il existe un seul répertoire n ayant pas de père, appelé la racine. Il existe un chemin unique dans l arborescence pour atteindre chacun des descendants. Le chemin d un élément est la concaténation de tous les répertoires en partant de la racine. Un fichier peut être accédé par plusieurs chemins, éventuellement avec des noms différents. Les autres noms d un fichier sont des liens. II.2. Disque, partition, volume, montage Un disque est un support non volatile de données. L unité d allocation d un disque s appelle un secteur. Un disque dur classique est organisé en secteurs (contenant de 512 à 16384 octets), cylindres (contenant de 20 à 200 secteurs) et plateaux (contenant de 800 à 4000 cylindres) par exemple. On ne manipule (lectures / écritures) pas les octets individuellement mais plutôt des blocs physiques composé de plusieurs octets (typiquement 512 ou 1024). Éric Hervet - 1/8 - Hiver 2015
Une partition est une portion du disque. Un volume est composé d une ou plusieurs partitions. Un volume comporte un système de gestion de fichiers (filesystem). Le montage d un volume est l opération qui consiste à intégrer le répertoire racine d un volume à un point donné du répertoire général courant, appelé le point de montage. SSD : solid-state drives Les SSD sont constitués de mémoires à semi-conducteurs à l état solide, (mémoire flash) par opposition aux disques durs classiques où les données sont écrites sur un support magnétique en rotation rapide. Les SSD sont matériellement plus solides que les disques durs classiques. Leurs plateaux sont le plus souvent en verre depuis 2003. Ils sont de ce fait beaucoup plus résistants aux chocs et aux vibrations. Ils sont également beaucoup plus performants (débit de lecture/écriture, latence inexistante, consommation). Par contre en 2012 le rapport prix/espace d un SSD est environ 10 fois plus qu un disque dur mécanique. Depuis environ une dizaine d années, les disques durs mécaniques tournent à 7200 tours/minute. Le temps moyen de recherche est souvent compris entre 8ms et 12ms, et le temps d accès moyen entre 12ms et 16ms. Les SSD suppriment en théorie le problème des temps d accès, ramené à l ordre de 0.1ms. Ils sont nettement plus performants en lecture, mais pas nécessairement beaucoup plus en écriture du fait qu ils ne peuvent réécrire que des zones bien plus grandes qu un secteur disque. La mémoire flash est un type d EEPROM 1 qui permet la modification de plusieurs espaces mémoires en une seule opération. La cellule de base d une mémoire flash est un transistor MOS 2 possédant une grille flottante. Il existe trois types de mémoires flash : SLC 3 où chaque cellule peut stocker un seul bit (deux valeurs), la MLC 4 où chaque cellule peut stocker le plus souvent deux bits (quatre valeurs), et la TLC 5, variante de MLC avec trois bits (huit valeurs). La technologie flash peut prendre deux formes : NOR ou NAND selon le type de porte utilisée pour chaque cellule de stockage. Le flash NOR (Toshiba & Intel, 1988) possède une interface d adressage permettant un accès aléatoire et rapide à n importe quelle position et permet d exécuter des instructions directement à partir du flash (XIP, execute In Place). Le flash NOR est bien adapté pour contenir les systèmes d exploitation de téléphones portables, appareils photos, cartes mères, etc. 1. Electrically-Erasable Programmable Read-Only Memory. 2. Metal Oxide Semiconductor. 3. Single Level Cell. 4. Multi Level Cell. 5. Triple Level Cell. Éric Hervet - 2/8 - Hiver 2015
Le flash NAND (Toshiba, 1989) est plus rapide que NOR à l écriture et à l effacement, et offre une plus grande densité et un coût moins élevé par bit. Par contre son interface d entrée/sortie n autorise que l accès séquentiel, ce qui limite la vitesse de lecture. Le flash NAND est normalement plus utilisé pour le stockage d informations (cartes SD, MMC, etc.). Mais à cause de son plus faible coût, il est utilisé aussi pour les téléphones portables en utilisant la mémoire RAM par blocs et avec un système de gestion des erreurs (ECC, Error Code Correction). Il existe des systèmes de fichiers spécialement conçus pour les mémoires flash : JFFS(2) 6, UBIFS 7, etc. http://linuxfr.org/news/les-systèmes-de-fichiers-pour-disques-ssd La commande Unix/Linux mkfs permet d installer un type de système de fichier dans un volume. Ex. : mkfs -t ext4 /dev/sda1 La commande mount permet de monter un volume à un point de montage (répertoire racine de l arborescence du volume). Ex. : mount -t vfat /dev/sda2 /home/moi/windows Du point de vue conceptuel, un système de gestion de fichiers fournit une méthode d organisation des fichiers et répertoires d un volume : Il découpe le volume en blocs (clusters), un bloc étant l unité d adressage. Il comporte un certain nombre de blocs réservés au système pour sa propre gestion (espace libre, etc.). Les autres blocs sont des blocs de données. Il a des algorithmes spécifiques pour organiser les données. II.3. Algorithmes et fragmentation Il existe plusieurs types d algorithmes pour écrire et lire des fichiers sur un disque : Allocation contigüe : on doit déplacer un fichier lorsque sa taille augmente. Allocation par liste chaînée (non contigüe) : un fichier est divisé en blocs et on doit : Déterminer la taille optimale des blocs. 6. Journaling Flash File System. 7. Unsorted Block Images File System. Éric Hervet - 3/8 - Hiver 2015
Gérer les espaces libres. Représenter l ensemble des blocs constituant un fichier. Allocation par liste chaînée avec table d allocation. Allocation par noeud d index (index-node ou inode). Selon le type adopté, un phénomène de fragmentation se produit : L utilisation de blocs de taille fixe introduit de la fragmentation interne. L allocation par liste chaînée n introduit aucune fragmentation externe. L allocation contigüe introduit de la fragmentation externe. II.4. Performance et fiabilité Les performances d un système de gestion de fichiers dépendent du compromis entre l algorithme d allocation et la fragmentation que l on permet (optimisation physique / optimisation logique). La fiabilité est le résultat direct d une bonne consistance du système de gestion de fichiers. Il faut la vérifier de temps en temps. Sous Unix/Linux, la commande fsck permet de : Vérifier la consistance des blocs. Vérifier la consistance des fichiers. Vérifier la cohérence des blocs alloués / blocs libres. Vérifier les compteurs de références des i-noeuds. II.5. Journalisation La journalisation est une forme d optimisation qui consiste à retarder dans le temps les opérations, longues, de modification du système de fichiers, car : Les disques durs sont (très) lents. Les mémoires vives (RAM) permettent de stocker beaucoup plus d informations, en quantité et en temps. Les écritures, souvent en petite quantité, prennent énormément de temps en comparaison des capacités de traitement des machines actuelles. Le journal est une fraction du système de fichiers dans lequel sont enregistrées (sur le disque) les modifications qui seront réalisées plus tard. Éric Hervet - 4/8 - Hiver 2015
II.6. I-noeud (inode) En interne, un fichier est décrit par un i-noeud qui contient : Des éléments binaires pour coder les droits d accès, le type du fichier. Le numéro du propriétaire et son numéro de groupe principal. La taille du fichier. La date et l heure des derniers accès en lecture et en écriture. La date et l heure de dernière modification de l i-noeud. Le nombre de liens physiques. Des pointeurs vers les blocs de données. Il est à noter que la structure d i-noeud ne contient pas le nom du fichier. Les i-noeuds sont spécifiques à un volume. FIGURE 1 Structure d un i-noeud. Éric Hervet - 5/8 - Hiver 2015
II.7. Répertoire Un répertoire est en fait un fichier qui contient la liste des noms de fichiers / répertoires qu il contient et leurs numéros i-noeuds associés (Fig. 2). FIGURE 2 Structure d un répertoire (directory). II.8. Liens Liens physiques (ou liens durs) Un lien physique est une association nom de fichier => i-noeud. Une entrée de répertoire est donc un lien physique. Un i-noeud peut être référencé plusieurs fois. Liens symboliques Problème avec les liens physiques : ils sont spécifiques à un volume. Les liens physiques ne sont donc pas utilisables dans toute l arborescence. Un lien symbolique est un fichier spécial contenant le chemin du fichier référencé. Un lien symbolique n incrémente pas le compteur de référence d un i-noeud. Si le fichier cible est effacé, le lien est pendant (dangling). II.9. Système de Gestion de Fichiers ext2 La Fig. 3 montre la structure du système de gestion de fichiers ext2 (second extended file system). Ext2 a été conçu par Rémy Card en 1993 et a été utilisé pendant des années pour les systèmes Linux. Superblock : contient des informations sur la géométrie et l occupation du groupe. Group Descriptor : contient l emplacement des cartes de blocs et i-noeuds libres. Block Bitmap : contient la liste des blocs inutilisés. Inode Bitmap : contient la liste des i-noeuds libres dans la table des i-noeuds. Éric Hervet - 6/8 - Hiver 2015
FIGURE 3 Structure d un répertoire (directory). Les limites théoriques de ext2 sont : Taille d un bloc 1Ko 2Ko 4Ko 8Ko Taille maximale fichier 16Go 256Go 2To 2To Taille maximale volume 4To 8To 16To 32To II.10. Système de Gestion de Fichiers ext3 Ext3 a ajouté une extension à ext2 : la journalisation. Ext3 a été introduit en 2001 par Stephen Tweedie avec le noyau Linux 2.4.15. Un journal est simplement un outil qui trace les opérations d écriture tant qu elles ne sont pas terminées en vue de garantir l intégrité des données en cas d arrêt brutal. Les limites théoriques de ext3 sont les mêmes que pour ext2. II.11. Système de Gestion de Fichiers ext4 Ext4 (sortie expérimentale fin 2006) est le successeur de ext3 et est considéré comme stable à partir du noyau Linux 2.6.28 (Ubuntu 9.10, Fedora 11, etc.). Ext4 permet de gérer les volumes d une taille allant jusqu à 1 exbi-octets (2 60 octets, soit 1 152 921 504 606 846 976 octets!), et des tailles de fichiers jusqu à 16 tebi-octets (1 tebi-octets = 2 40 octets, soit 1 099 511 627 776 octets). Mais sa fonctionnalité majeure est l allocation par extent qui permettent la pré-allocation d une zone contigüe pour un fichier, afin de minimiser la fragmentation. De plus, ext4 a une compatibilité descendante avec ext3, ce qui signifie qu une partition ext3 peut être montée comme ext4. L inverse est possible à la condition que la partition ext4 n ait jamais utilisé l allocation par extent pour sauvegarder des fichiers, mais seulement l allocation binaire comme dans ext3. Éric Hervet - 7/8 - Hiver 2015
II.12. Système de Gestion de Fichiers Btrfs Btrfs 8 est un système de fichiers encore en développement (introduit en 2007) basé sur le Copy-On-Write, qui devrait succéder à ext4. Lorsqu un processus crée une copie de lui-même, les pages de la mémoire qui doivent être modifiées soit par le processus, soit par sa copie, sont marquées copy-on-write. Lorsque le processus modifie une page mémoire, le noyau du système d exploitation copie la page mémoire pour que les changements de la mémoire d un processus n affectent pas celle d un autre. Btrfs ajoute aussi d autres fonctionnalités à ext3/4, par exemple la possibilité de créer un système de gestion de fichiers qui regroupe plusieurs périphériques (disques classiques, disques RAID, mémoire flash, etc.) pouvant être ajoutés ou supprimés dynamiquement. La taille maximale d un fichier sous Btrfs est 16 exbi-octets (2 64 octets) et la taille maximale d un volume 16 exbi-octets (2 44 octets). 8. B-tree file system, souvent prononcé Better FS. Éric Hervet - 8/8 - Hiver 2015