Nous avons un problème sous Linux avec les inodes de répertoire qui deviennent plus volumineux et lents à naviguer dans le temps, car de nombreux fichiers sont créés et supprimés. Par exemple:Inodes de répertoire Unix - fragmentation et vidage du contenu du répertoire
% ls -ld foo
drwxr-xr-x 2 webuser webuser 1562624 Oct 26 18:25 foo
% time find foo -type f | wc -l
518
real 0m1.777s
user 0m0.000s
sys 0m0.010s
% cp -R foo foo.tmp
% ls -ld foo.tmp
drwxr-xr-x 2 webuser webuser 45056 Oct 26 18:25 foo.tmp
% time find foo.tmp -type f | wc -l
518
real 0m0.198s
user 0m0.000s
sys 0m0.010s
Le répertoire d'origine a 518 fichiers, prend 1,5 Mo pour représenter, et prend 1,7 secondes pour traverser.
Le répertoire reconstruit a le même nombre de fichiers, prend 45K à représenter et 0,2 seconde à parcourir.
Je me demande ce que cela pourrait causer. Ma supposition est la fragmentation - ce n'est pas supposé être un problème avec les systèmes de fichiers Unix en général, mais dans ce cas nous utilisons le répertoire pour les fichiers de cache à court terme et ainsi créons, renommons et supprimons constamment un grand nombre de petits fichiers . Je me demande aussi s'il existe un moyen de vider le contenu binaire littéral du répertoire - c'est-à-dire lire le répertoire comme s'il s'agissait d'un fichier - ce qui me donnerait peut-être un aperçu de la taille de ce répertoire. Ni lu() ni sysread() de Perl me permettra de:
swartz> perl -Mautodie -MPOSIX -e 'sysopen(my $fh, "foo", O_RDONLY); my $len = sysread($fh, $buf, 1024);'
Can't sysread($fh, '', '1024'): Is a directory at -e line 1
Informations système:
Linux 2.6.18-128.el5PAE #1 SMP Wed Dec 17 12:02:33 EST 2008 i686 i686 i386 GNU/Linux
Merci!
Jon
Peut-être que vous devriez expérimenter avec différents systèmes de fichiers. Essayez xfs. – Artelius
Veuillez spécifier le système de fichiers que vous utilisez. – camh