Qu'est-ce que les métadonnées et comment cela aide-t-il dans le processus «fsck»?


8

Si je comprends bien, "fsck" est utilisé dans les systèmes UNIX pour vérifier la cohérence interne des disques après un crash. Je me demandais alors comment il utilise les "métadonnées" pour s'assurer que tout dans le système de fichiers est cohérent, par exemple quelles étapes le processus fsck doit prendre pour restaurer et réparer?

-> modifier: il serait également utile que quelqu'un clarifie ce à quoi "l'écriture synchrone" fait également référence dans cette image.


Il semble que ce serait plus sur le sujet sur U&L, peut-être.

Réponses:


13

Les métadonnées sont des informations sur les données. Si vous pensez à un fichier texte, la séquence de lettres de ce fichier texte correspond aux données réelles qu'il contient. Cependant, le fichier a un nom, un propriétaire, une date de création, un emplacement sur le support de stockage, etc. Toutes ces informations sont des métadonnées. Notez que les métadonnées peuvent être traitées de la même manière que les données. Par exemple, Unix stocke les métadonnées des fichiers dans des fichiers de données appelés répertoires (ou dossiers dans cette nouvelle ère de l'informatique :-)

Le système de fichiers Unix utilise une unité de stockage de base appelée inodes . Un inode individuel peut contenir des données de fichier réelles, des informations de répertoire (métadonnées) ou être inutilisé (gratuit). Notez que l'acte de création d'un nouveau fichier implique de changer l'état d'un inode de libre à alloué, d'écrire des données dans le nouveau fichier et d'écrire des métadonnées dans un fichier de répertoire. Il est possible qu'un ordinateur tombe en panne au milieu de ce type d'opération, auquel cas le système de fichiers peut être corrompu .

La vérification du système de fichiers consiste à lire tous les inodes et à tenter de résoudre autant de problèmes de corruption que possible. Par exemple, supposons qu'un inode ne figure pas sur la liste des inodes libres, mais il n'y a aucune entrée de répertoire qui indique que cet inode fait partie d'un fichier dans l'un des répertoires connus du système de fichiers. Cet inode peut être replacé sur la liste des inodes libres.

L'écriture synchrone est un moyen d'effectuer l'écriture sur le disque de manière à garantir que si un crash se produit, le système de fichiers peut être récupéré. Par exemple, lorsque vous créez un nouveau fichier, vous devez allouer un inode, créer l'inode avec son jeu de métadonnées, puis mettre à jour le fichier contenant les informations de répertoire. Avec l' écriture synchrone , ces opérations sont effectuées en tant qu'actions distinctes, une à la fois, dans cet ordre. Si le plantage se produit avant l'écriture du répertoire, l'inode peut être replacé sur la liste libre et la création de fichier n'a pas eu lieu.

D'autres types de vérifications du système de fichiers sont également possibles.


6

Dans le contexte des systèmes de fichiers Unix ou Linux, les «métadonnées» sont des informations sur un fichier: l'ID utilisateur qui le possède, les autorisations, le type de fichier (spécial, régulier, canal nommé, etc.) et les blocs de disque que le fichier utilise. Tout cela est généralement conservé dans une structure sur disque appelée "inode". L'une des informations contenues dans un inode est le nombre de «liens» vers le fichier. Un fichier normal en a généralement 1, mais un répertoire (qui est principalement un fichier avec une marque de type de fichier spéciale "Je suis un répertoire") a au moins 2 liens. Tout ce qui est visible dans un système de fichiers a un lien depuis le répertoire dans lequel il apparaît, mais puisque chaque répertoire a un "." nom ainsi que son nom ordinaire, ils ont 2 liens.

fsckpeut analyser les "blocs d'inode" d'un système de fichiers (les blocs de disque qui contiennent les structures de données d'inode) pour trouver les inodes qui ont un nombre de liens supérieur à 0. Un fichier représenté par un inode avec un nombre de liens supérieur à 0 devrait apparaître dans un répertoire quelque part. Si cet inode n'apparaît pas dans un répertoire, fsckplace le fichier dans un répertoire bien connu, généralement "perdu + trouvé" en haut du système de fichiers. Notez que les systèmes de fichiers Unix / Linux n'ont généralement pas de métadonnées dans un inode sur le répertoire auquel l'inode appartient, seulement des informations dans le fichier de répertoire sur les fichiers que le répertoire contient.

fsckpeut utiliser d'autres métadonnées comme les blocs de disque contenant les données d'un fichier. fsckpeut vérifier si les blocs de disques qui, selon un inode, appartiennent à un fichier apparaissent dans la "liste non allouée" du système de fichiers de blocs de disques. fsckPeut potentiellement vérifier si deux ou plusieurs inodes contiennent les mêmes blocs de disque, ce qui indiquerait une sorte de corruption d'allocation multiple.

L'allocation de blocs de disque aux fichiers apparaît dans les inodes du disque. L'arborescence d'appartenance à un répertoire d'un système de fichiers apparaît dans les répertoires. Les inodes n'apparaissent pas et ne sont pas alloués aux répertoires. fsckprofite de cette séparation pour effectuer des réparations. Ceci est assez différent de systèmes comme MS-DOS ou Windows primitif, où une "table d'allocation de fichiers" contenait à la fois une structure arborescente (appartenance au répertoire) et une allocation de blocs de disques. Corrompre le "FAT" et vous devez aller scanner les blocs de disques pour voir ce qu'ils contiennent et comment ils pourraient s'emboîter.


5

Les métadonnées sont des «données sur les données».

Dans le cas du système de fichiers * nix, les métadonnées utilisées par fsckun en-tête sur chaque bloc de données pointent vers une entrée de répertoire ou le bloc de données suivant et les entrées correspondantes dans le répertoire. fsckanalyse les blocs et vérifie que les entrées du répertoire correspondent et que les pointeurs de transfert vers le bloc suivant sont corrects.

Cela varie considérablement d'un système de fichiers à l'autre. En fait, quelles métadonnées sont stockées et où elles sont stockées est ce qui différencie le plus les différents systèmes de fichiers * nix. Les plus modernes conservent également un fichier journal des modifications apportées aux structures de répertoires.


Juste curieux, mais savez-vous comment ou où les implémentations modernes stockent les métadonnées sur le disque?
Kaitlyn Mcmordie

1
@KaitlynMcmordie, dépend du fs. Pour ext [234], la plupart des métadonnées sont stockées dans l'inode du fichier. Le (s) nom (s) est / sont stocké (s) dans les répertoires, c'est-à-dire la partie données des fichiers qui ont l'indicateur de répertoire et un format spécifique pour leurs données principales. Les données de fichier sont stockées dans des blocs de données et les inodes sont stockés dans les tables d'inodes, qui sont allouées lorsque le fs est formaté. Les autres données de l'inode incluent le propriétaire, les autorisations, les horodatages d'accès et les pointeurs vers les blocs de données.
psusi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.