Maison > Article > Opération et maintenance > Tutoriel sur l'utilisation des inodes sous Linux
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 :
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 :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 :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épertoireOn 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!