La taille des répertoires ne vaut pas nos efforts

C'est un petit post complètement inutile, sans application pratique, mais amusant sur les répertoires dans les systèmes *nix. C'est vendredi après tout.

Lors des entretiens, des questions ennuyeuses sur les inodes apparaissent souvent, des questions auxquelles peu de gens peuvent répondre de manière sensée. Mais si l'on creuse un peu, on peut trouver des choses intéressantes.

Pour comprendre le post, quelques points :

  • tout est fichier. un répertoire est aussi un fichier.
  • dans l'inode, les métadonnées du fichier sont stockées, mais le nom du fichier n'est pas stocké là.
  • le nom du fichier est stocké dans les données du répertoire.
  • la taille du répertoire, celle qui est affichée dans ls et par défaut 4 Ko, dépend du nombre de fichiers dans le répertoire et de la longueur de leurs noms.
  • Il est évident que plus il y a de fichiers, plus la taille du répertoire est grande.

Et maintenant, ce qui est intéressant : créons un répertoire avec un million de fichiers, vérifions la taille du répertoire, puis supprimons tous les fichiers et regardons la taille du répertoire.

$ mkdir niceDir && cd niceDir
# selon la vitesse du support, la commande suivante peut prendre 2 à 10 minutes
$ for ((i=1;i<133700;i++)); do touch long_long_looong_man_sakeru_$i ; done
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug 2 13:37 .
$ find . -type f -delete
$ ls -l
total 0
$ ls -lhd .
drwxr-xr-x 2 user user 8.1M Aug  2 13:37 .

Comme on peut le voir, la taille du répertoire n'a pas changé, bien que cela semble paradoxal 🙂.

Réparer la taille du répertoire (sans supprimer) ne peut se faire qu'avec fsck (et l'option -D) dans un état démonté.

Et quand j'ai cherché pourquoi cela se produisait, j'ai découvert que ce comportement avait déjà été rapporté il y a 10 ans a été discutée dans lkml. Et selon les développeurs, la correction ne vaut tout simplement pas l'effort investi.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster