Maison  >  Article  >  Opération et maintenance  >  Tutoriel sur l'utilisation des inodes sous Linux

Tutoriel sur l'utilisation des inodes sous Linux

巴扎黑
巴扎黑original
2017-08-09 15:10:142253parcourir

Cet article vous présente principalement les informations pertinentes sur les inodes sous Linux. L'introduction dans l'article est très détaillée et a une certaine valeur de référence et d'apprentissage pour tous les amis qui en ont besoin peuvent y jeter un œil ci-dessous.

Contexte

J'examinais récemment les commandes Linux, et quand je suis allé sur df, j'ai découvert quelque chose que j'avais ignoré auparavant. Autrement dit, l'option -i répertorie les informations sur l'inode de la partition du système de fichiers. Quel est cet inode ?

À quoi sert l'inode ?

L'inode est la zone utilisée pour stocker les méta-informations du fichier. La traduction chinoise est appelée « nœud d'index ».

Connaissances de base sur les inodes

Passons d'abord en revue certains contenus sur le stockage de fichiers. Nous savons que les fichiers sont stockés sur le disque dur. La plus petite unité de stockage du disque dur est également appelée secteur. La taille d'un secteur est de 512 octets.

Lorsque le système d'exploitation lit des informations sur le disque dur, il lit plusieurs secteurs à la fois, et ces multiples secteurs sont également appelés blocs. En règle générale, la taille du bloc est de 4 Ko, soit environ 8 secteurs. Il est à noter que les blocs lus sont des espaces contigus.

À l'heure actuelle, nous pouvons savoir que les fichiers sont stockés dans des "blocs", tout comme lorsque nous écrivons des programmes en langage C, nous savons que lorsque nous déclarons un tableau, non seulement il sera stocké La valeur placé dans le tableau stockera également les informations correspondantes du tableau, telles que la première adresse du tableau, le type de fichier, la longueur du tableau, etc. De même, vous devez trouver un endroit pour stocker les méta-informations du fichier, similaire au informations liées à la création du fichier, à la longueur du fichier, etc. Et cet endroit s'appelle inode.

Le contenu stocké dans l'inode

L'inode contient les méta-informations du fichier stocké, y compris ces contenus :

  • Le nombre d'octets dans le fichier.

  • L'ID du créateur du fichier.

  • ID de groupe du fichier.

  • Autorisations de lecture et d'écriture des fichiers.

  • L'horodatage pertinent du fichier. Il y en a trois spécifiques : ctime--> L'heure à laquelle l'inode a été modifié pour la dernière fois ; mtime--> L'heure à laquelle le contenu du fichier a été modifié pour la dernière fois ; atime--> L'heure à laquelle le fichier a été ouvert pour la dernière fois.

  • Nombre de liens

  • Bloquer l'emplacement des données du fichier

numéro d'inode

Après avoir vu le contenu de stockage ci-dessus pour la première fois, je pense que tout le monde se posera la même question. Puisque l'inode stocke des informations relatives aux fichiers, pourquoi ne pas stocker des fichiers ? Le nom. La raison en est que les noms de fichiers ne constituent pas la norme pour les systèmes d'exploitation Unix/Linux pour identifier différents fichiers.

Le système d'exploitation identifie différents fichiers grâce à des numéros d'inode.

Dans les systèmes Unix/Linux, le nom du niveau utilisateur est utilisé pour ouvrir le fichier via le nom du fichier. Le niveau système passe principalement par trois étapes pour ouvrir le fichier :

    <.>
  • Trouvez le numéro d'inode correspondant en fonction du nom du fichier.

  • Obtenez des informations sur l'inode via le numéro d'inode.

  • Selon les informations de l'inode, recherchez le bloc où les données du fichier sont stockées et séparez les données.


La fonction spéciale de l'inode

Dans le système Unix/Linux, le numéro d'inode et le fichier name sont séparés. Cela a conduit à des phénomènes particuliers dans le système :

  • Supprimer le nœud inode signifie supprimer le fichier. Certains fichiers peuvent ne pas être supprimés correctement. Dans ce cas, nous pouvons directement supprimer le nœud inode correspondant pour supprimer le fichier.

  • Déplacez ou renommez le fichier sans changer le numéro d'inode, juste le nom du fichier.

  • De manière générale, le système ne peut pas obtenir le nom du fichier via le numéro d'inode. Lorsqu'un fichier est ouvert, le système identifiera le fichier via l'inode et ne prendra plus en compte le nom du fichier.


En raison de l'existence du numéro d'inode, le système peut être mis à jour sans fermer le logiciel. Le système identifie les fichiers en cours d'exécution grâce aux numéros d'inode. Pendant le processus de mise à jour, les fichiers existent avec le même nom de fichier et le même nouvel inode sans affecter les fichiers en cours d'exécution. L'ancienne version originale de l'inode sera recyclée à la prochaine ouverture du logiciel et le nom du fichier pointera automatiquement vers le nouveau numéro d'inode.


Problème d'occupation de l'espace des inodes

Étant donné que les données sont également stockées sur le disque dur, l'inode occupera définitivement le disque dur Lors du formatage du disque dur, le système d'exploitation divisera automatiquement le disque dur en deux zones :

  • zone de données

  • table d'inodes


  • table d'inodes


La zone de données stocke principalement les données de fichiers et la zone de table d'inodes stocke les informations d'inodes.

Spécialement, la taille de la zone occupée par l'inode est déjà donnée par le système d'exploitation lorsque le disque est formaté. La conséquence est que l'espace dans la zone de données n'a pas été utilisé, mais les données ne sont plus accessibles à ce moment-là, car la zone de la table des inodes est pleine et les nouveaux fichiers ne peuvent pas être stockés sur le disque.

Fichier répertoire

On sait que sous Unix/Linux, toute ressource existe sous la forme d'un fichier. Le catalogue aussi. Lorsque nous ouvrons un répertoire, nous ouvrons en fait le fichier répertoire. La structure d'un fichier répertoire est une liste.

Entrée du répertoire = nom du fichier inclus + numéro d'inode correspondant.

Liens physiques et liens logiciels

Je ne couvrirai pas les détails de ce qu'est un lien physique et ce qu'est un lien logiciel dans cet article de blog, je n'entrerai pas dans les détails, considérez-le simplement du point de vue de l'inode.

Du point de vue du numéro d'inode, dans les systèmes Unix/Linux, plusieurs noms de fichiers sont autorisés à pointer vers le même numéro d'inode. À ce stade, si l'un des noms de fichier est supprimé, l'accès à l'autre nom de fichier ne sera pas affecté. Dans le même temps, si le fichier est ouvert via un nom de fichier et que des modifications sont apportées, les modifications peuvent être partagées avec un autre. les noms de fichiers sont ouverts. Alors appelez cela un « lien physique ». Sous Linux, nous pouvons créer des liens physiques via la commande ln.

Comme résumé ci-dessus, dans l'inode, il y a un élément de stockage appelé "nombre de liens", qui enregistre le nombre total de noms de fichiers qui ne veulent que l'inode. Si un nom de fichier est créé pour pointer vers un fichier via un lien physique, le numéro de lien dans le champ de données d'inode correspondant au fichier sera + 1, et vice versa - 1. Lorsque cette valeur est 0, le système n'utilisera par défaut aucun nom de fichier pointant vers l'inode. À ce moment, le numéro d'inode sera recyclé et la zone de bloc correspondante sera recyclée.

Quant au lien symbolique correspondant, supposons qu'il existe le fichier A et le fichier B, et que B est un lien symbolique de A. À l'heure actuelle, les numéros d'inodes de A et B sont différents car ce sont des fichiers différents, mais ! Le contenu de B est le chemin de A. Lors de la lecture de B, le système accédera automatiquement à A, donc quel que soit le fichier ouvert, le fichier A sera accessible. À l’heure actuelle, le fichier B est appelé « lien logiciel » ou « lien symbolique » vers le fichier A.

Dans les systèmes Unix/Linux, nous pouvons créer des liens symboliques via la commande ln -s.

Résumé et petits ajouts

Grâce à la description ci-dessus, nous savons que l'inode est comme le champ pointeur en langage C, le champ de pointeur Il enregistre une variété d'informations et nous dirige vers l'emplacement correct du fichier pour lire les informations requises. (Bien sûr, ce n'est pas exactement la même chose.)

Lors de la création d'un répertoire dans un système Unix/Linux, deux entrées de répertoire seront automatiquement générées :

  • .Répertoire

  • .. Répertoire

Vous pouvez observer ces deux répertoires via la commande ls -al. Le numéro d'inode de ".directory" est le numéro d'inode du répertoire courant, qui est équivalent au lien physique du répertoire courant, tandis que le numéro d'inode du répertoire ".." est le numéro d'inode du répertoire parent du répertoire courant, qui équivaut au lien physique du répertoire parent. Nombre total de liens physiques du répertoire = 2 + nombre total de sous-répertoires (y compris les fichiers cachés).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn