Formater une partition pour stocker un grand nombre de petits fichiers

wpid1682-df-i2.pngRécemment, j’ai été confronté à un petit problème technique pour lequel je vais vous faire un petit retour d’expérience.
Je souhaitais préparer un disque pour y stocker plus de 3 millions d’images miniatures de très petite taille.
Chaque vignette faisais 5Ko. J’avais calculé que le tout devait faire environ 20Go.

J’ai donc formaté ma partition en EXT4 après avoir longtemps comparé les benchmarks entre ce système et ReiserFS.
J’ai ensuite exécuté mon script PHP qui a commencé à me générer les miniatures à l’aide de la bibliothèque GD.

Le problème

wpid1680-df-h.png

Arrivé à 16Go de miniatures, mon script m’a répondu que le disque était plein.
J’ai vérifié l’occupation disque avec un « df -h » et le système m’a répondu qu’il restait 23Go libres sur cette partition (/miniatures).

Si ce n’était pas l’espace disque qui était plein, alors c’est qu’il était impossible pour le système d’allouer de nouvelles unités aux fichiers.

J’ai vérifié le nombre d’inodes de cette partition à l’aide de « df -i ». Effectivement, pour ma partition de 40Go, le formatage avait alloué 2.621.440 inodes.
Si c’est suffisant pour la plupart des utilisations, ce ratio de bytes/inode n’était pas adapté à mon cas particulier.

wpid1681-df-i.png

La solution

wpid1683-mkfs_ext4_-n.png

J’ai donc reformaté ma partition pour l’utilisation que je voulais en faire.
En clair, j’ai demandé au système de découper cette partition en un nombre beaucoup plus conséquent de cases pour stocker des fichiers beaucoup plus petits.

mkfs -N 64000000 /dev/vdb1

Un nouveau « df -i » m’a permis de voir que même si la taille de la partition n’avait pas changé, le nombre d’inode était maintenant largement suffisant pour moi.

wpid1682-df-i2.png

N’hésitez pas à laisser un petit commentaire si ce billet vous a été utile ou si vous avez des précisions à apporter. Il pourra servir aux internautes qui vont vous suivre sur ce site.

Vous pouvez également faire part de vos retours sur twitter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *