3 votes

Le fait d'avoir trop de fichiers sur un système de fichiers a-t-il un impact significatif sur les performances io ?

Mon administrateur système me dit que nous devrions supprimer les anciens fichiers statiques d'un serveur et les stocker dans une base de données, car le fait d'avoir trop de fichiers sur un système de fichiers a un impact sur les performances générales du système. L'impact est-il significatif ? Nous avons environ 20 000 fichiers dans un répertoire en ce moment, et nous nous attendons à atteindre 100 000 dans les prochaines années. Ceci sur un système Ubuntu LTS relativement récent. Si 100 000 n'est pas significatif, quel chiffre le serait ?

Edit : Ceci est différent de Nombre maximum de fichiers dans un répertoire ext3 tout en obtenant des performances acceptables ? parce que je ne me soucie pas des performances des répertoires, mais plutôt des performances totales du système si le nombre de fichiers sur un système atteint un nombre arbitraire. Dans mon cas précis, l'administrateur système affirme qu'Apache va ralentir en raison du nombre total de fichiers sur l'ensemble du système.

3 votes

À titre d'information, le stockage des fichiers dans une base de données semble complètement stupide. Une structure de répertoires avec moins de fichiers par répertoire est la direction que vous devriez probablement suivre.

0 votes

@MichaelHampton Je suis d'accord avec vous au sujet du db. J'ai édité ma réponse car pour montrer que je ne suis pas concerné par les performances du répertoire pour le moment.

0 votes

Et, votre administrateur système doit aller lire ce Q&A.

1voto

Amyunimus Points 163

Depuis ext3, la manipulation des fichiers dans le système de fichiers est au moins aussi rapide que la recherche d'une ligne indexée dans une base de données. C'est ce qu'on appelle le HTree (en fait, de nombreux index dans les bases de données utilisent encore un BTree).

http://en.wikipedia.org/wiki/HTree

Les anciens systèmes commençaient à avoir des problèmes à partir de 1 000 fichiers parce que la recherche était linéaire (commencer par le premier fichier, et parcourir tout le répertoire pour trouver le fichier qui vous intéresse).

Pourquoi utiliser une base de données alors ?

PRO

Il suffit ensuite de transporter la base de données d'un ordinateur à l'autre (pensez à un système en nuage...), surtout si vous voulez utiliser la réplication automatique entre les ordinateurs.

CON

Toute la base de données que vous envoyez à la base de données passe par le réseau ! Cela signifie un énorme goulot d'étranglement. Si vous ne prévoyez pas d'utiliser la fonction de réplication de votre base de données, c'est suffisant (pour moi) pour éviter d'utiliser la base de données. Cela aura un impact ÉNORME sur votre système. Utilisez directement le système de fichiers, puisque de toute façon la base de données fera la même chose : enregistrer les données dans un fichier !

P.S. Votre administrateur semble venir du passé...

P.P.S. "Les index HTree de ext3 sont disponibles dans ext3 lorsque la fonction dir_index est activée". -- J'utilise ext4 donc je ne m'inquiète pas trop à ce sujet, bien qu'il puisse être désactivé dans ext4 ; espérons qu'il est activé sur votre serveur...

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