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 n'ai pas pu trouver le problème à première vue.
df
a montré 50% d'espace disponible. Après avoir cherché pendant environ une heure, j'ai vu un message sur le forum où le gars a utilisé df -i
. L'option recherche l'utilisation des 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 faire en sorte que le système ait plus d'inodes? Doit/peut-il être défini lors du formatage du disque? Avec les inodes 3.2M, combien de fichiers pourrais-je avoir?
Il semble que vous ayez beaucoup plus de fichiers que prévu.
Je ne sais pas s'il existe une solution pour modifier dynamiquement la taille de la table d'inode. J'ai peur que vous 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 énorme 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 que vous puissiez 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.
Avec 3,2 millions d'inodes, vous pouvez avoir 3,2 millions de fichiers et répertoires au total (mais plusieurs liens physiques vers un fichier n'utilisent qu'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
peut tous définir le nombre d'inodes. J'utilise généralement -i
, après avoir comparé la sortie de du -s
et find | wc -l
pour une collection de fichiers similaire et permettant une certaine marge.
Non, il ne peut pas être modifié sur place sur un système de fichiers existant. Toutefois:
resize2fs
pour étendre le système de fichiers. Cela ajoute plus d'inodes en proportion de l'espace ajouté, à peu près. Si vous voulez éviter de manquer d'inodes avant l'espace en supposant que les futurs fichiers ont en moyenne la même taille, définissez un pourcentage de bloc réservé suffisamment élevé en utilisant tune2fs -m
.Comme autre solution de contournement, je pourrais suggérer d'envisager de regrouper d'énormes collections de fichiers dans une archive non compressée (!) tar
, puis d'utiliser archivemount
pour le monter en tant que système de fichiers. Une archive tar est meilleure 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 censée être en lecture seule, squashfs
peut être une option, mais elle nécessite certaines options activées dans le noyau, et la compression xz
est également disponible pour tar avec les mêmes performances .
J'ai des solutions alternatives à 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 partition. Mais dans ces solutions, vous pourrez utiliser l'espace restant de la partition sans formatage it.
$ df -i # see list ( I need just one free inode here so move just one file into other PARTITION)
/dev/part1 1000 999 1 99.9% /data
$ dd if=/dev/zero of=/data/new_data
$ mkfs.ext4 /data/new_data
$ mkdir /data1
$ mount /data/new_data /data1
pour montage permanent
$ echo "/data/new_data /data1 ext4 defaults 0 1" >> /etc/fstab
J'ai récemment rencontré ce problème lors de l'utilisation de la mise à niveau d'apt ou d'aptitude.
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 5.1G 2.3G 70% /
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 521497 2791 100% /
Commande émise:
du /|sort -k1 -n
La plupart des fichiers révélés se trouvaient dans des sous-dossiers pour plusieurs versions du noyau dans:
/usr/src/linux-headers
Suppression de ces sous-dossiers et problème d'inode a été corrigé.
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 524288 104986 419302 21% /
essayez du -s --inodes * 2>/dev/null |sort -g
le cd dans le dernier dir en sortie et répéter.
Divulgation complète: tous les OS ne sont pas pris en charge --inodes
flag pour la commande du (ce n'est pas le cas de mon Mac OS) mais de nombreux OS Linux le font.