Qu'est-ce qu'un inode orphelin? [fermé]

16

Je comprends ce qu'est un inode mais quelle est la définition exacte d'un inode orphelin? Je ne comprends pas vraiment ce que cela signifie.

MISE À JOUR

Il fut un temps où un serveur que je gérais manquait d'inodes mais quand je faisais un df -h cela me montrait que le serveur n'avait que 60% d'espace utilisé. Je suppose que c'est à cause des inodes orphelins. Comment tous les inodes peuvent-ils être utilisés mais il y a encore de "l'espace" sur le serveur? Pouvez-vous en parler dans vos réponses?

ninjacoder
la source
1
Votre mise à jour est vraiment une question distincte, concernant la différence entre la capacité de stockage d'un système de fichiers et le nombre d'inodes qu'il peut contenir; vous devriez le poser comme une question distincte.
Stephen Kitt
L'exécution df -iaffichera les informations correspondantes pour les inodes.
Kusalananda
L'espace libre / utilisé sur le disque n'est que légèrement corrélé avec les inodes libres / utilisés. Un disque contenant de nombreux petits fichiers manquera d'inodes avant de manquer d'espace.
Kusalananda

Réponses:

17

Un inode orphelin est un inode qui n'est pas attaché à une entrée de répertoire dans le système de fichiers, ce qui signifie qu'il ne peut pas être atteint.

Les inodes orphelins peuvent apparaître pour plusieurs raisons:

  • les fichiers temporaires qui sont supprimés mais maintenus ouverts (une pratique courante) occupent des inodes sur le système de fichiers; si le système redémarre sans s'arrêter correctement, ces inodes restent et sont orphelins
  • la corruption du système de fichiers peut corrompre un répertoire sans affecter les inodes des fichiers qu'il contient; ces inodes sont alors orphelins

fsckcrée de nouvelles entrées de répertoire pour les inodes orphelins dans lost+found.

Stephen Kitt
la source
Merci pour votre réponse @ stephen-kitt. Il fut un temps où un serveur que je gérais manquait d'inodes mais quand je le faisais, df -hcela m'a montré que le serveur n'avait que 60% d'espace utilisé. Je suppose que c'est à cause des inodes orphelins. Comment tous les inodes peuvent-ils être utilisés mais il y a encore de "l'espace" sur le serveur?
ninjacoder
3

Un inode orphelin est un fichier «semi-supprimé»: il n'a plus d'entrée de répertoire, mais il est toujours ouvert dans un certain processus, donc les données sont toujours présentes sur le disque. Lorsque le dernier processus qui a ouvert ce fichier le ferme, le fichier sera entièrement supprimé et l'inode orphelin disparaîtra.

Un inode orphelin utilise à la fois un inode et l'espace disque pour stocker le fichier, donc les deux dfet le df -icompter comme utilisé. Ainsi, si le disque est signalé comme plein mais qu'il dfreste de l'espace, cela ne peut pas être lié aux inodes orphelins. Les inodes orphelins sont l'une des raisons pour lesquelles l'utilisation du système de fichiers signalée par dfet la taille totale du fichier signalée par dupeuvent différer; voir Pourquoi existe-t-il tant de façons différentes de mesurer l'utilisation du disque?pour plus de détails sur ce sujet.

De nombreux systèmes de fichiers ont réservé un nombre fixe d'inodes lors de la création du système de fichiers, ce qui signifie que vous pouvez avoir au maximum autant de fichiers sur le système de fichiers. Le nombre d'inodes est un compromis entre l'espace utilisé par les inodes et la possibilité de créer de nombreux fichiers. S'il n'y a plus d'espace sur le système de fichiers, vous ne pouvez pas agrandir les fichiers existants ou créer de nouveaux fichiers (peut-être pouvez-vous toujours créer des fichiers vides dans les répertoires existants, tant qu'ils ne remplissent que des blocs partiellement utilisés et non nécessitant l'attribution d'un nouveau bloc). S'il n'y a plus d'inode libre, vous pouvez agrandir des fichiers existants mais vous ne pouvez pas créer un nouveau fichier.

Le noyau signale la même erreur aux applications, qu'un système de fichiers soit plein en raison d'un manque d'espace de données ou d'un manque d'inodes. Ainsi, vous pouvez obtenir une erreur «disque plein» même s'il reste de l'espace de données, si l'opération nécessite un nouvel inode et que la table des inodes est pleine. Exécutez df -ipour savoir combien d'inodes sont utilisés et combien il en reste.

Gilles 'SO- arrête d'être méchant'
la source
1
  • Un inode orphelin est celui qui a été dissocié mais qui est toujours ouvert dans un autre processus. Par exemple, en cours d'exécution tail -f {file}dans un shell suivi d' rm {file}un autre. Le système de fichiers en garde la trace afin de pouvoir les nettoyer à la fin du processus.

  • C'est parfaitement normal chaque fois que vous avez un démontage impur. Ce sont simplement des fichiers qui ont été supprimés, mais qui étaient toujours ouverts lorsque le fs a été remonté en lecture seule. Ils ne sont pas la cause, mais simplement un symptôme.


Pour le problème des inodes, exécutez cette requête pour obtenir la liste de la quantité d'inodes utilisée dans tous les répertoires

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Vous pouvez vous référer à ceci et à cela pour plus de méthode à vérifier.

Rahul
la source
@ninjacoder, vous pouvez vérifier ma réponse mise à jour pour votre problème d'inode
Rahul