Quel système de fichiers Linux choisiriez-vous pour la meilleure vitesse dans le scénario suivant:
- cent millions de fichiers
- ~ 2k taille de fichier en moyenne
- > 95% d'accès en lecture
- joli accès aléatoire
- haute simultanéité (> 100 processus)
Remarque: Les fichiers sont stockés dans une arborescence hiérarchique profonde pour éviter les répertoires volumineux. Chaque répertoire feuille contient environ mille fichiers.
Comment le compareriez-vous?
Réponses:
Voici quelques résultats comparant tous les principaux FS Linux avec Bonnie ++ que vous pouvez utiliser comme point de départ.
En termes de recherche aléatoire, Reiser gagne, suivi de EXT4, suivi de JFS. Je ne suis pas sûr que cela corresponde exactement aux recherches dans l'annuaire, mais il semble que ce soit un indicateur. Vous devrez faire vos propres tests pour cela en particulier. EXT2 bat tout le pantalon pour tout le temps de création de fichier, probablement en raison de son absence de journal, EXT4 bat toujours tout sauf Reiser que vous ne voudrez peut-être pas utiliser en raison du statut actuel de hans reiser.
Vous voudrez peut-être examiner les lecteurs prenant en charge NCQ et vous assurer que votre installation est configurée pour l'utiliser. Sous forte recherche, il devrait fournir un coup de pouce de vitesse.
Enfin, assurez-vous que votre machine a une tonne de bélier. Comme les fichiers ne sont pas souvent mis à jour, Linux finira par mettre en cache la plupart d’entre eux dans la RAM si elle dispose de l’espace libre. Si vos habitudes d'utilisation sont correctes, cela vous donnera un gain de vitesse considérable.
la source
Je suis d'accord avec la plupart des propos d'Andrew, sauf que je recommanderais Reiser4 ou l'ancien ReiserFS (mais mieux pris en charge) . Comme ces tests (et la documentation de ReiserFS) l'indiquent, il est conçu pour la situation à propos de laquelle vous vous posez la question (grand nombre de petits fichiers ou de répertoires). J'ai utilisé ReiserFS dans le passé avec Gentoo et Ubuntu sans aucun problème.
En ce qui concerne le statut de Hans Reiser, je ne considère pas que cela pose un problème avec le code ou la stabilité du système de fichiers lui-même. Reiser4 est même sponsorisé à la fois par la DARPA et Linspire. Par conséquent, bien que je convienne que le développement ultérieur du système de fichiers Reiser est indéterminé, je ne pense pas que cela devrait être un facteur déterminant pour décider si quelqu'un doit l'utiliser ou non.
la source
Je sais que ce n'est pas une réponse directe à votre question, mais dans ces cas, je pense qu'une base de données pourrait être plus appropriée pour héberger cela. Les petits fichiers peuvent être stockés au format binaire dans une table de base de données et récupérés au format wil. Le logiciel qui utilise ces fichiers devrait pouvoir supporter cela cependant ...
la source
Quelqu'un sur Unix StackExchange a créé un benchmark (avec source) pour tester uniquement ce scénario:
Q: Quel est le système de fichiers Linux le plus performant pour stocker de nombreux petits fichiers (disque dur, pas SSD)?
Les meilleures performances de lecture semblent provenir de ReiserFS.
la source
D'après mon expérience, ext2 souffle ext4 hors de l'eau pour les petits fichiers. Si vous ne vous souciez pas de l'intégrité de l'écriture, c'est génial. Par exemple, subversion crée de nombreux petits fichiers que ext4 et d'autres systèmes de fichiers (XFS) bloquent (exécuter un travail cron qui synchronise les données vers ext4 d'ext2 toutes les demi-heures environ résout 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, sauf si vous exécutez sync avant qu'il ne se bloque). Ces commandes n’ont pratiquement aucun effet sur ext4 avec de petits fichiers.
la source
Je suppose que ext3 (ou ext4), peut-être que JFS serait une bonne solution. Je me méfierais avec ext4 et btrfs (les systèmes de fichiers sont délicats - préparez-vous avec des sauvegardes si vous voulez utiliser les éléments les plus récents et les plus récents).
Il existe également différents paramètres que vous pouvez modifier pendant le temps de mkfs pour ajuster le système de fichiers à votre guise.
Je recommanderais certainement contre XFS. Pas parce que c'est un mauvais système de fichiers, mais la création / suppression est une opération coûteuse.
Pour éviter les problèmes de recherche dans les annuaires, utilisez un schéma de nommage intelligent, par exemple:
ou des systèmes similaires, plus compliqués. Cela accélérera vos recherches dans l'annuaire et donc les vitesses d'accès globales. (C'est un vieux truc Unix, de retour de la V7, je pense)
la source
La plupart des FS vont s'étouffer avec plus de 65K fichiers dans un répertoire, je pense que cela reste vrai pour ext4. Les systèmes de fichiers Reiser n’ont pas cette limite (les gens de mp3.com ont payé pour s’assurer de cela). Pas sûr de rien d'autre, mais c'est l'un des scénarios d'utilisation pour lequel ReiserFS a été conçu.
la source
ls
ou que vous complétez la tabulation, cela fonctionne rapidement. Probablement à cause de l'index.