Quel est le nombre maximum de dossiers autorisés dans un dossier sous Linux?

17

Utiliser Redhat, si cela fait une différence.

Y a-t-il une limite par défaut? Peut-il être changé? Sinon, existe-t-il des solutions de contournement pour augmenter le nombre de dossiers autorisés dans un répertoire?

chris
la source

Réponses:

22

Cela dépend du système de fichiers utilisé par votre distribution. Si vous utilisez une distribution de bureau plus récente (c'est-à-dire Ubuntu 9.10, une version récente de Fedora), vous utilisez probablement ext4. Si vous utilisez quelque chose de plus ancien, c'est probablement ext3.

Matthieu
la source
11

En ext2, 32 768 selon Wikipedia - http://en.wikipedia.org/wiki/Ext2fs#File_system_limits . Cela dépend du système de fichiers que vous utilisez.

Pekka soutient GoFundMonica
la source
3
Oui. Le nombre de dossiers est attaché au système de fichiers, pas au système d'exploitation.
Satanicpuppy
On dirait des bosses ext4 qui se limitent à un 64k dur mais supportent encore plus que cela grâce à des ajustements
basszero
4

Vous voudrez peut-être envisager des alternatives à tout ce que vous essayez de faire. Même si vous restez sous la limite du système de fichiers (par exemple, 32 Ko pour ext2), le stockage de dizaines de milliers de fichiers dans un seul répertoire peut être pour le moins lourd.

Une possibilité est que vous essayez d'utiliser le système de fichiers pour quelque chose qui serait plus adapté à une base de données. Pensez à stocker vos données dans une base de données PostgreSQL, MySQL ou même une base de données sqlite. Il n'y a pas trop de systèmes de fichiers qui gèrent bien un grand nombre de fichiers - le déplacement ou la sauvegarde de vos données sera lent.

Si vous avez vraiment besoin de stocker de nombreux fichiers, envisagez d'autres structures de répertoires. Par exemple, vous pouvez séparer vos fichiers par ordre alphabétique, par exemple:

a/aaron.dat
a/alex.dat
a/alan.dat
b/bill.dat
b/brian.dat

Cette approche peut évoluer en augmentant la profondeur de votre séparation, par exemple:

a/a/aaron.dat
a/l/alex.dat
a/l/alan.dat

Ou si vous saisissez des fichiers journaux quotidiens ou recevez des livraisons quotidiennes, vous pouvez les séparer par date, par exemple:

2009-10-04/logfile-01.txt
2009-10-05/logfile-01.txt
2009-10-05/logfile-02.txt

Dans ce cas particulier, vous souhaiterez probablement également créer un travail pour empaqueter les anciens journaux dans des archives tar compressées afin de réduire le nombre de fichiers.

Ryan Bright
la source
1

Les limites de dossiers sont la raison pour laquelle les systèmes d'entreprise qui doivent traiter un nombre arbitraire de fichiers seront stockés dans un ou deux sous-répertoires en fonction d'un hachage du nom de fichier. Par exemple, md5 () le nom de fichier et utilisez les quatre premiers octets comme sous-dossier pour stocker le fichier; pour les niveaux supplémentaires, utilisez les 4 suivants pour un sous-dossier supplémentaire, ou les 4 suivants après cela, etc. La plupart des systèmes ne dépasseraient jamais 2 niveaux en profondeur.

MightyE
la source