J'ai eu un problème (nouveau pour moi) la semaine dernière. J'ai un système de fichiers ext4 (Fedora 15). L'application qui s'exécute sur le serveur s'est soudainement arrêtée. Je ne pouvais pas trouver le problème au premier regard.
df
a montré 50% d'espace disponible. Après avoir cherché pendant environ une heure, j’ai vu un post sur le forum où le gars s’était servi df -i
. L'option recherche l'utilisation d'inodes. Le système était à court d'inodes, un problème simple que je n'avais pas réalisé. La partition n'avait que 3,2 millions d'inodes.
Maintenant, mes questions sont: Puis-je donner au système plus d’inodes? Devrait-il / peut-il être défini lors du formatage du disque? Avec les inodes 3.2M, combien de fichiers puis-je avoir?
Réponses:
Il semble que vous ayez beaucoup plus de fichiers que prévu normalement.
Je ne sais pas s'il existe une solution pour changer la taille de la table inode de manière dynamique. Je crains que vous n'ayez besoin de sauvegarder vos données, de créer un nouveau système de fichiers et de restaurer vos données.
Pour créer un nouveau système de fichiers avec une si grande table d'inodes, vous devez utiliser l'option '-N' de mke2fs (8).
Je recommanderais d'utiliser d'abord l'option '-n' (qui ne crée pas le fs, mais affiche les informations utiles) afin de pouvoir obtenir le nombre estimé d'inodes. Ensuite, si vous en avez besoin, utilisez '-N' pour créer votre système de fichiers avec un numéro d'inode spécifique.
la source
mke2fs -i
pour spécifier le nombre d'inodes. Sa documentation indique qu '«il n'est pas possible d'augmenter le nombre d'inodes sur un système de fichiers après sa création».-i
options spécifient la taille de l'inode, pas son nombre. L'-N
option définit le nombre d'inodes.Comme autre solution de contournement, je pourrais suggérer d’envisager de regrouper d’énormes collections de fichiers dans une
tar
archive non compressée (!) , Puis de l’utiliserarchivemount
pour le monter en tant que système de fichiers. Une archive tar est préférable pour le partage qu'une image de système de fichiers et offre des performances similaires lors de la sauvegarde sur un cloud ou un autre stockage.Si la collection est supposée être en lecture seule, cela
squashfs
peut être une option, mais certaines options doivent être activées dans le noyau et laxz
compression est disponible pour tar avec les mêmes performances.la source
Avec 3,2 millions d'inodes, vous pouvez avoir 3,2 millions de fichiers et de répertoires, au total (mais plusieurs liens durs vers un fichier utilisent un seul inode).
Oui, il peut être défini lors de la création d'un système de fichiers sur la partition. Les options
-T usage-type
,-N number-of-inodes
ou-i bytes-per-inode
peuvent toutes définir le nombre d'inodes. J'utilise généralement-i
, après avoir comparé la sortie dedu -s
etfind | wc -l
pour une collection de fichiers similaire et en tenant compte de la marge.Non, il ne peut pas être modifié sur place sur un système de fichiers existant. Pourtant:
resize2fs
pour développer le système de fichiers. Cela ajoute plus d'inodes plus ou moins proportionnellement à l'espace ajouté. Si vous voulez éviter de manquer d'inodes avant l'espace, en supposant que les fichiers futurs aient en moyenne la même taille, définissez un pourcentage de bloc réservé suffisamment élevé à l'aide detune2fs -m
.la source
J'ai une solution alternative pour cette situation. Disons que vous avez 1000 inodes dans une partition de 10G. Mais en raison de la limite d'inodes, vous n'êtes pas censé utiliser tout l'espace de la partition . Mais dans cette solution, vous pourrez utiliser l’espace restant de la partition sans le formater .
pour montage permanent
la source
$
) pour distinguer clairement les commandes de la sortie (s'il ne s'agissait que d'une commande, l'invite est normalement laissée de côté). J'ai également changé le slogging lors de la phase audacieuse, ce que je pense que vous vouliez. Vous pouvez annuler les modifications si je présente mal les chosesRécemment rencontré ce problème lors de l’utilisation d’apt ou d’aptitude upgrade.
Commande émise:
La plupart des fichiers révélés se trouvaient dans des sous-dossiers pour plusieurs versions du noyau dans:
Suppression de ces sous-dossiers et le problème d'inode a été corrigé.
la source
du
commande. L'utilisation concerne la racine du système de fichiers dans l'exemple ci-dessus, en regardant uniquement l'espace. La sortie est canalisée pour trier afin de montrer quels répertoires contiennent le plus de fichiers. Dans l'exemple ci-dessus pour les fichiers, le nombre de fichiers de votre question ne contient pas le décompte. Les sources du noyau étaient le coupable indiqué dans ladu
sortie; par exemple, de nombreux petits fichiers, des sous-dossiers de compilations antérieures, ce qui convient parfaitement à la suppression pour libérer des inodes. Il restait encore un examen manuel, humain de ladu
production,/usr/src/linux-headers
était alors évident.essayez
du -s --inodes * 2>/dev/null |sort -g
le cd dans le dernier répertoire en sortie et recommencez.Divulgation complète: l'
--inodes
indicateur de prise en charge de tous les systèmes d'exploitation pour la commande du (pas mon Mac OS), mais de nombreux systèmes d'exploitation Linux le sont.la source