Tout d’abord, et je me rends compte que ce n’était pas l’un des termes de votre question, vous devez comprendre les métadonnées . Succinctement, et volées sur Wikipedia, les métadonnées sont des données sur des données. C'est-à-dire que les métadonnées contiennent des informations sur une donnée. Par exemple, si je possède une voiture, je dispose d’un ensemble d’informations sur la voiture mais qui ne fait pas partie de la voiture elle-même. Des informations telles que le numéro d'enregistrement, la marque, le modèle, l'année de fabrication, les informations sur les assurances, etc. Toutes ces informations sont collectivement appelées métadonnées. Comme vous le verrez, dans les systèmes de fichiers Linux et UNIX, les métadonnées existent à plusieurs niveaux d’organisation.
Le superbloc est essentiellement constitué de métadonnées de système de fichiers et définit le type, la taille, le statut et les informations du système de fichiers, ainsi que des informations sur d'autres structures de métadonnées (métadonnées de métadonnées). Le superbloc est très critique pour le système de fichiers et est donc stocké dans plusieurs copies redondantes pour chaque système de fichiers. Le superbloc est une structure de métadonnées de très "haut niveau" pour le système de fichiers. Par exemple, si le superbloc d'une partition, / var, devient corrompu, le système de fichiers en question (/ var) ne peut pas être monté par le système d'exploitation. Généralement, dans ce cas, vous devez exécuterfsck
qui sélectionnera automatiquement une autre copie de sauvegarde du superbloc et tentera de récupérer le système de fichiers. Les copies de sauvegarde elles-mêmes sont stockées dans des groupes de blocs répartis dans le système de fichiers, les premiers stockés à un bloc décalé à partir du début de la partition. Ceci est important dans le cas où une récupération manuelle est nécessaire. Vous pouvez afficher des informations sur les sauvegardes de superbloc à l'aide de la commande, dumpe2fs /dev/foo | grep -i superblock
ce qui est utile en cas de tentative de récupération manuelle. Supposons que la commande dumpe2fs génère la ligne Backup superblock at 163840, Group descriptors at 163841-163841
. Nous pouvons utiliser ces informations et connaissances supplémentaires sur la structure du système de fichiers, pour tenter d'utiliser cette sauvegarde superblock: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo
. Veuillez noter que j'ai supposé une taille de bloc de 1024 octets pour cet exemple.
Un inode existe dans ou sur un système de fichiers et représente des métadonnées relatives à un fichier. Par souci de clarté, tous les objets d’un système Linux ou UNIX sont des fichiers; fichiers, répertoires, périphériques, etc. Veuillez noter que, parmi les métadonnées contenues dans un inode, il n'y a pas de nom de fichier comme le pensent les humains, ce sera important plus tard. Un inode contient essentiellement des informations sur la propriété (utilisateur, groupe), le mode d'accès (lecture, écriture, autorisations d'exécution) et le type de fichier.
Un dentry est la colle qui maintient ensemble les inodes et les fichiers en liant les numéros d’inodes aux noms de fichiers. Les dentiers jouent également un rôle dans la mise en cache de répertoires qui, idéalement, conserve les fichiers les plus fréquemment utilisés à portée de main pour un accès plus rapide. La traversée du système de fichiers est un autre aspect du métier car elle maintient une relation entre les répertoires et leurs fichiers.
Un fichier , en plus d'être ce à quoi les humains pensent en général lorsqu'il est présenté avec le mot, n'est en réalité qu'un bloc de données arbitraires liées logiquement. De manière relativement très ennuyeuse compte tenu de tout le travail effectué (ci-dessus) pour en garder une trace.
Je suis tout à fait conscient que quelques phrases ne fournissent pas une explication complète de l’un de ces concepts, alors n'hésitez pas à demander des détails supplémentaires au moment voulu.
Fichier
Un fichier signifie simplement un groupe d'octets disposés dans un certain ordre. C'est ce que les gens normaux appellent le contenu d'un fichier. Lorsque Linux ouvre un fichier, il crée également un objet fichier, qui contient des données sur l'emplacement du fichier et sur les processus qui l'utilisent. L'objet fichier (mais pas les données de fichier elles-mêmes) est jeté à la fermeture du fichier.
Inode
Un inode (abréviation de "index node") est un ensemble d'attributs concernant un fichier stocké par Linux. Il existe un inode pour chaque fichier (bien qu'avec certains systèmes de fichiers, Linux doit créer ses propres inodes car les informations sont réparties autour du système de fichiers). L'inode stocke des informations telles que le propriétaire du fichier, sa taille et l'identité de celui qui est autorisé à l'ouvrir. Chaque inode contient également un numéro unique pour la partition du système de fichiers; c'est comme un numéro de série pour le fichier décrit par cet inode.
Dentry
Un dentry (abréviation de "entrée de répertoire") est ce que le noyau Linux utilise pour garder une trace de la hiérarchie des fichiers dans les répertoires. Chaque dentry mappe un numéro d'inode à un nom de fichier et à un répertoire parent.
Superbloc
Le superbloc est une structure de données unique dans un système de fichiers (bien qu'il existe plusieurs copies pour se protéger contre la corruption). Le superbloc contient des métadonnées sur le système de fichiers, telles que l'inode est le répertoire de niveau supérieur et le type de système de fichiers utilisé.
la source
superblock , le nœud d'index (ou inode ), l'entrée de répertoire (ou dentry ) et enfin, l' objet de fichier font partie du système de fichiers virtuel (VFS) ou du commutateur de système de fichiers virtuel . Le but d'un VFS est de permettre aux applications clientes d'accéder à différents types de systèmes de fichiers concrets de manière uniforme.
Relations des objets majeurs dans le VFS
Un inode est une structure de données sur un système de fichiers Unix / Linux. Un inode stocke des métadonnées sur un fichier, un répertoire ou un autre objet du système de fichiers standard. Inode agit comme une interface entre les fichiers et les données. Un inode peut faire référence à un fichier, un répertoire ou un lien symbolique à un autre objet. Il contient un numéro unique (le numéro i), les attributs du fichier, y compris les autorisations de nom, date, taille et lecture / écriture, ainsi qu'un pointeur sur l'emplacement du fichier. C'est la contrepartie de la table FAT dans le monde DOS / Windows.
Les programmes, services, textes, images, etc. sont tous des fichiers . Les périphériques d'entrée et de sortie, et généralement tous les périphériques, sont considérés comme des fichiers , selon le système.
Le superbloc est le conteneur de métadonnées de haut niveau sur un système de fichiers. Le superbloc est une structure qui existe sur le disque (en fait, plusieurs emplacements sur le disque pour la redondance) et également en mémoire. Il fournit la base pour traiter le système de fichiers sur disque, car il définit les paramètres de gestion du système de fichiers (par exemple, nombre total de blocs, blocs libres, nœud d'index racine).
Dentry est l'interface entre les fichiers et les inodes. Les dentiers jouent également un rôle dans la mise en cache de répertoires qui, idéalement, conserve les fichiers les plus fréquemment utilisés à portée de main pour un accès plus rapide.
La source
la source
En termes simples, dentry et inode sont la même chose, une abstraction de fichier ou de répertoire. Les différences entre dentry et inode sont que dentry est utilisé pour faciliter les opérations spécifiques à un répertoire. Inode est simplement une collection de métadonnées sur un fichier ou un répertoire. Superblock est l'abstraction du système de fichiers.
struct file
, dans le noyau Linux, est mal nommé comme beaucoup d’autres (par exemplestruct address_space
) et n’est pas une abstraction d’un véritable "fichier" (par exemple, / etc / passwd). Il représente un "fichier" ouvert ou un répertoire.struct file
est créé parsys_open
dans le noyau, ainsi un processus peut avoir beaucoup destruct file
s pour le même fichier.Pourquoi avons-nous besoin de dentry? Il est utilisé pour accélérer la traduction de nom de chemin (par exemple, / etc / passwd) en inode. Le noyau Linux utilise inode pour manipuler "fichier" ou répertoire, pas leur nom.
la source
Notez que ces termes ne sont pas spécifiques à Linux mais au système de fichiers. La plupart des systèmes de fichiers utilisés par les systèmes Unix actuels et similaires sont soit dérivés, soit inspirés du système de fichiers Unix d'origine qui définissait les idiomes de superbloc et d'inode. Linux peut également monter plusieurs systèmes de fichiers avec lesquels il n’existe aucune notion de superbloc et / ou d’inode, le plus courant étant FAT. Un autre, ZFS, n’utilise pas de superblocs mais überblocks.
la source