[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: parcours de millions de fichiers



Le 08/10/2014 20:47, Stéphane GARGOLY a écrit :
Bonjour à tous les utilisateurs et développeurs de Debian :

Le mercredi 8 octobre 2014 à 17:03, admini <admini@freeatome.com> a écrit :
je dois parcourir, de façon resursive, pas mal de millions (25M) de
fichiers pour trouver tous les owners de tous les fichiers.

25 millions de fichiers !! J'ai bien cru halluciner... o_O

ben, c'est de la production quoi.


Travailles-tu sur un - très gros - serveur de fichiers ?

non, je travaille sur des baies SAN en fibre channel. ce sont des baies Netapp.


j'ai d'abord fait une expérience sur seulement 7Millions, avec

find .  -type d > listdir

ca a pris 30minutes

puis

while read i ; do stat -c '%n %U %G' $i/* ;done<listdir > listowner

ca a pris 78 minutes.

J'ai tenté l'expérience mais sur l'ensemble de l'arborescence donc avec la
commande "find /  -type d > listdir" puis j'ai passé ta seconde commande.

Je n'ai pas rigoureusement chronométré mais ça m'a pris certainement moins de
5 min pour chacune des deux commandes.

Je ne sais pas quelle est la configuration matérielle de ta machine, mais, pour
ton information, mon ordinateur (de bureau) possède, brièvement, un processeur
dual-core Athlon 64 bits à 3 GHz, une mémoire centrale DDR3 de 8 Go à 800 MHz
et 2 disques durs Western Digital VelociRaptor SATA2 de 1 To à 10'000 tr/min
chacun.

Juste par curiosité, peux-tu nous dire combien pèsent tes deux fichiers listdir
et listowner (qui doivent contenir les informations sur les quelques 7
millions de fichiers) ?


les fichers vont de 1Ko à qqs centaines de Mo. le serveur est virtualisé sous ESX avec un vCPU et 4Go de RAM. la cadence du vCPU est gérée par la ferme ESX. les disques sont des disques SAN en raid5. c'est du sata 7200ppm, mais des disques de stockage quoi. on ne peut pas vraiment faire de comparaison avec des disques dits "grand publique". c'est vrai que le raid5 n'aide pas pour la perfe.



Chez moi, mon listdir contient prés de 20'000 lignes et pèse prés de 660 ko,
mon listowner approximativement 250'000 lignes et 15 Mo !!

le fichier qui list tous les répertoires fait 175000 lignes. il y a donc 175000 répertoires qui contiennent les 7Millions de fichiers. le fichier avec tous les fichiers et leur owner fait 700Mo.



y a t-il un autre moyen plus économique vis à vis du stockage et du
système ( CPU mémoire) de faire de telles choses, je vais le tester
demain sur un lot de 7 Millions de fichiers.

Je n'ai pas de réponse(s) toute(s) faite(s) à te proposer - d'autant que mes
connaissances au niveau de la ligne de commande restent bien limitées - mais
as-tu pensé à regarder du coté des commandes 'ls', 'sed' voire 'awk' ?

ben, j'ai peur que ls parcourt effectivement les répertoires, alors que stat ne lit, me semble -t il que la table d'inodes, ce qui bien moins stressant pour les IO du système. enfin, je crois ....



Cordialement et à bientôt,

Stéphane.



Reply to: