====== Système de Gestion de Fichiers ====== On considèrera, tout au long de ce TD, un exemple d'implantation de système de fichiers dont les valeurs numériques proposées ne sont pas courantes, mais se contentent d'illustrer les principes généraux de fonctionnement. ===== Structure physique du système de fichiers ===== Un système de fichiers réside sur une partie d'un disque qu'on appelle **partition**. Une partition est une suite contigüe de //N// **blocs** (ou **secteurs**) numérotés de //0// à //N-1//. La taille d'un bloc est, suivant le système considéré, habituellement compris entre 512 et 8192 octets. ===== Notion et contenu d'i-noeud ===== L'accès à n'importe quel fichier se fait dans le système de fichiers par l'intermédiaire d'un i-noeud associé au fichier qu'il référence. Il contient, entre autres, les informations et la structure suivantes : {{ :inoeud.png?100 | Exemple de i-noeud}} * la catégorie du fichier (ordinaire ou répertoire) ; * le nombre de liens sur ce fichier (i.e. le nombre d'entrées de répertoire qui désignent ce fichier) ; * la taille en octets du fichier ; * les numéros des premiers blocs de données contenant le fichier. Dans notre figure d'exemple il s'agit des 7 premiers blocs. On parle d'adresses //directes// ; * le numéro d'un bloc de simple indirection permettant l'adressage des blocs de données (à partir du bloc 8 dans notre exemple). En d'autres termes, un bloc de données est sacrifié afin de stocker des adresses directes ; * le numéro d'un bloc de double indirection qui contient lui-même des numéros de blocs de simple indirection pour les derniers blocs du fichiers. **Dans notre exemple, il n'y a pas d'indirection triple (cela est pourtant le cas dans d'autres systèmes)**. {{ :inode.png?600 | Exemple d'adressage}} ===== Questions (à faire éventuellement avec le chargé de TD) ===== * On considère pour les questions suivantes que les blocs font 960 octets et qu'une adresse de bloc est représentée sur 5 octets. Notre i-noeud est construit autour de 7 adresses de direction, 1 adresse d'indirection et 1 adresse de double indirection. - Combien de blocs de données pourra contenir au maximum notre formatage ? - Donnez la taille maximale d'un fichier. Pour cela il vous faudra déterminer le nombre de numéros de blocs (i.e. d'adresses) qu'il est possible de stocker à partir d'un i-noeud. - Pour un fichier de taille maximale, donner les nombres totaux minimaux et maximaux de blocs utilisés. - Quel est l'intervalle de tailles possibles pour le fichier d'exemple de la figure d'illustration fournie en exemple ? - Considérons que notre table des i-noeuds possède 15000 entrées. Cela signifie que notre SGF pourra héberger au plus 15000 fichiers/dossiers. Son occupation disque est de 20 Mio (1 Mio = 2^20 octets) est fixe. Si l'on suppose que l'on ne stocke que des fichiers de taille maximale et occupant un maximum de blocs, quelle serait la taille de partition nécessaire si l'on souhaite saturer la table des inoeuds ? Attention à bien considérer que la taille d'un fichier diffère de son occupation disque. ===== Questions (à faire seul) ===== * On considère pour les questions suivantes que les blocs font 1152 octets et qu'une adresse de bloc est représentée sur 24 bits. Notre i-noeud est construit autour de 6 adresses de direction, 3 adresses d'indirection, 2 adresses de double indirection et 1 adresse de triple indirection. La table des i-noeuds est construite sur la base de 1.10^6 entrées. Elle occupe un espace disque de 100 Mio. - Combien de blocs de données pourra contenir au maximum ce formatage ? - Quelle est la taille maximale d'un fichier ? - Quelle est l'occupation maximale d'un fichier de taille maximale ? - Quelle est l'occupation minimale d'un fichier de taille maximale ? - Si l'on envisage de créer exclusivement des fichiers de taille maximale, quelle est la taille minimale du disque que l'on doit acquérir si l'on veut saturer notre système de fichiers ? Discutez cette question