Qu'est-ce qu'un inode orphelin?

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 veut dire.

METTRE À JOUR

Il y a eu un time où un server que je gérais était à court d'inodes mais quand je faisais un df -h ça m'a montré que le server n'avait que 60% d'espace consommé. Je suppose que c'est à cause des inodes orphelins. Comment tous les inodes peuvent-ils être utilisés mais il rest de l'espace sur le server? Pouvez-vous répondre à cela dans vos réponses?

Un inode orphelin est un inode qui n'est pas attaché à une input de directory dans le système de files, ce qui signifie qu'il ne peut pas être atteint.

Les inodes orphelins peuvent apparaître pour un certain nombre de raisons:

  • les files temporaires qui sont supprimés mais gardés ouverts (une pratique courante) occupent des inodes sur le système de files; si le système redémarre sans s'arrêter correctement, ces inodes restnt et sont orphelins
  • corruption de système de files peut corrompre un directory sans affecter les inodes des files que le directory contient; ces inodes sont alors orphelins

fsck crée de nouvelles inputs de directory pour les inodes orphelins dans lost+found .

Un inode orphelin est un file "semi-supprimé": il n'a plus d'input dans le directory, mais il est toujours ouvert dans un process, donc datatables sont toujours présentes sur le disque. Lorsque le dernier process qui a ce file ouvert le ferme, le file sera complètement supprimé et l'inode orphelin disparaîtra.

Un inode orphelin utilise à la fois un inode et l'espace disque pour stocker le file, de sorte que df et df -i countnt comme utilisé. Ainsi, si le disque est déclaré plein mais que df montre un peu d'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 files rapscope par df et la taille totale du file rapscope par du peuvent différer; voir Pourquoi y a-t-il autant de façons différentes de mesurer l'utilisation du disque? pour plus de détails sur ce sujet.

De nombreux filesystems ont réservé un nombre fixe d'inodes lors de la création du système de files, ce qui signifie que vous pouvez avoir au maximum autant de files sur le système de files. Le nombre d'inodes est un compromis entre l'espace utilisé par les inodes et la capacité à créer de nombreux files. S'il n'y a plus d'espace sur le système de files, vous ne pouvez pas développer de files existants ou créer de nouveaux files (vous pouvez peut-être encore créer des files vides dans des directorys existants, à condition de ne remplir que des blocs partiellement utilisés nécessitant l'atsortingbution d'un nouveau bloc). S'il n'y a plus d'inode libre, vous pouvez agrandir les files existants mais vous ne pouvez pas créer de nouveau file.

Le kernel signale la même erreur aux applications si un système de files est plein en raison d'un manque d'espace de données ou en raison d'un manque d'inodes. Vous pouvez donc get une erreur "disque plein" même s'il rest de l'espace de données, si l'opération nécessite un nouvel inode et que la table d'inodes est pleine. Exécutez df -i pour savoir combien d'inodes sont utilisés et combien en rest.

  • Un inode orphelin est un inode qui a été dissocié mais qui est toujours ouvert dans un autre process. Par exemple, exécuter tail -f {file} dans un shell suivi de rm {file} dans un autre. Le système de files en garde la trace afin de pouvoir les nettoyer lorsque le process se ferme.

  • C'est parfaitement normal chaque fois que vous avez un déassembly impur. Ce sont simplement des files 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 des symptômes.


Pour le problème inode, exécutez cette requête pour get la list de combien d'inodes sont utilisés dans tous les directorys

 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 ceci pour plus de méthode à vérifier.