Réponse : oui si le système de fichiers peut être élargi / agrandi, non sinon.
Notre supervision nous alerte : bien qu'il y ait assez d'espace libre sur un système de fichiers ext4, le nombre d'inodes libres vient de passer en dessous de 20 %. Après vérification, l'apparition soudaine de plein de petits fichiers est légitime. Peut-on avoir plus d'inodes sans détruire les données ?
Je l'ai déjà écrit : un fichier se résume à un identifiant que l'on nomme inode (le numéro d'inode d'un fichier s'obtient avec la commande stat
). Dans un système de fichiers, on a donc une table des inodes. Plus d'inodes permet de stocker plus de fichiers, mais cela nécessite une table des inodes plus grande, ce qui réduit l'espace disque réellement utilisable pour le stockage des fichiers. Moins d'inodes = moins de fichiers = une table plus petite = plus d'espace libre.
Le nombre d'inodes est fixé à la création d'un système de fichiers. Il ne peut pas être modifié par la suite. Il est automatiquement calculé en fonction de la taille totale du système de fichiers (un inode par tranche de xxxx octets disponibles sur le support de stockage ‒ mais attention, cela ne signifie pas qu'un inode gère / est responsable d'un fichier d'une taille inférieur à xxxx octets, non, il est l'identifiant de tout un fichier, peu importe sa taille ‒), voir le manuel de mkfs.ext4. Il est possible de le forcer avec le paramètre « -T » de mkfs
.
Donc, le nombre d'inodes varie en fonction de la taille du système de fichiers. Sur un disque de 2 To, un ratio largefile
(un inode par tranche de 1 Mo) procure environ 1 907 324 inodes. Sur un disque de 142 Go, ce paramètre procure environ 145 000 inodes.
Pour avoir plus d'inodes, et si c'est possible, il suffit d'agrandir la partition et le système de fichiers.
Si ce n'est pas possible, il y a rien à faire, un formatage sera nécessaire.
Pour retrouver le ratio octets/inode d'un système de fichiers déjà créé : df
=> prendre le nombre de blocs de 1 ko. Multiplier ce nombre par 1024 (on a donc le nombre de blocs de 1 octet). Récupérer le nombre total d'inodes avec df -i
. Diviser le premier nombre par le deuxième. Attention : il ne faut pas mélanger ce ratio avec la taille d'un inode que l'on récupère avec tune2fs -l
. Un espace de stockage plus grand pour chaque inode permet de stocker des métadonnées supplémentaires concernant un fichier, comme des attributs étendus.