53 votes

système de fichiers pour des millions de petits fichiers

Quel système de fichiers Linux choisiriez-vous pour meilleure vitesse dans le scénario suivant :

  • cent millions de fichiers
  • Fichier de ~2k en moyenne
  • >95% d'accès en lecture
  • accès assez aléatoire
  • forte concurrence (>100 processus)

Remarque : Les fichiers sont stockés dans une arborescence profonde afin d'éviter les grands répertoires. Chaque répertoire feuille contient environ un millier de fichiers.

Comment l'évaluez-vous ?

22voto

Josh Bush Points 1938

En termes de recherche aléatoire, c'est Reiser qui l'emporte, suivi d'EXT4, puis de JFS. Je ne suis pas sûr que cela corresponde exactement aux recherches dans les répertoires, mais cela semble être un indicateur. Vous devrez faire vos propres tests pour cela. EXT2 bat tout le monde pour les temps de création de fichiers, probablement en raison de l'absence de journal. EXT4 bat tout le monde, sauf Reiser, que vous ne voudrez peut-être pas utiliser en raison de l'état actuel de Hans Reiser.

Vous devriez peut-être rechercher des lecteurs qui prennent en charge le NCQ et vous assurer que votre installation est configurée pour l'utiliser. En cas de recherche intensive, il devrait permettre d'augmenter la vitesse.

Enfin, assurez-vous que votre machine dispose d'une grande quantité de mémoire vive. Comme les fichiers ne sont pas souvent mis à jour, Linux finira par mettre en cache la plupart d'entre eux dans la mémoire vive s'il a de l'espace libre. Si vos habitudes d'utilisation sont correctes, cela vous permettra d'augmenter considérablement votre vitesse.

7voto

Mateo Points 909

Je suis d'accord avec la plupart des propos d'Andrew, à l'exception du fait que je recommanderais Reiser4 ou l'o R .

A

3voto

thenickdude Points 341

Quelqu'un sur Unix StackExchange a créé un benchmark (avec la source) pour tester ce scénario :

Q : Quel est le système de fichiers Linux le plus performant pour stocker un grand nombre de petits fichiers (sur disque dur, pas sur disque SSD) ?

Les meilleures performances de lecture semblent provenir de ReiserFS.

3voto

Jason Hall Points 31

D'après mon expérience, ext2 surpasse ext4 pour les petits fichiers. Si vous ne vous souciez pas de l'intégrité d'écriture, c'est parfait. Par exemple, subversion crée beaucoup, beaucoup, beaucoup de petits fichiers sur lesquels ext4 et d'autres systèmes de fichiers (XFS) s'étouffent (exécuter une tâche cron qui rsyncise les données vers ext4 à partir d'ext2 toutes les demi-heures environ résout pratiquement le problème).

L'exécution de ces commandes rend ext2 encore plus rapide (même si la plupart de ces options rendent le système de fichiers instable après un crash, à moins que vous n'exécutiez sync avant qu'il ne se plante). Ces commandes n'ont pratiquement aucun effet sur ext4 avec de petits fichiers.

echo 15 > /proc/sys/vm/swappiness
echo 10 > /proc/sys/vm/vfs_cache_pressure
echo 99 > /proc/sys/vm/dirty_ratio
echo 50 > /proc/sys/vm/dirty_background_ratio
echo 360000 > /proc/sys/vm/dirty_expire_centisecs
echo 360000 > /proc/sys/vm/dirty_writeback_centisecs
echo "2000" > /proc/sys/vm/vfs_cache_pressure

1voto

automatonic Points 2830

La plupart des FS s'étouffent avec plus de 65K fichiers dans un répertoire, je pense que c'est encore vrai pour ext4. Les systèmes de fichiers Reiser n'ont pas cette limite (les gens de mp3.com ont payé pour s'en assurer). Je ne suis pas sûr qu'il en soit de même pour le reste, mais c'est l'un des scénarios d'utilisation pour lequel ReiserFS a été conçu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X