J'utilise Openfiler 2.3 sur des disques HP ML370 G5, Smart Array P400, SAS combinés en utilisant RAID 1 + 0.
J'ai installé un partage NFS à partir de la partition ext3 en utilisant la configuration Web d'Openfiler et j'ai réussi à monter le partage à partir d'un autre hôte. Les deux hôtes sont connectés à l'aide d'un lien gigabit dédié.
Benchmark simple utilisant dd
:
$ dd if=/dev/zero of=outfile bs=1000 count=2000000
2000000+0 records in
2000000+0 records out
2000000000 bytes (2.0 GB) copied, 34.4737 s, 58.0 MB/s
Je vois qu'il peut atteindre une vitesse de transfert modérée (58,0 Mo / s).
Mais si je copie un répertoire contenant de nombreux petits fichiers ( .php
et .jpg
environ 1 à 4 Ko par fichier) de taille totale ~ 300 Mo, le cp
processus se termine en environ 10 minutes.
NFS n'est-il pas adapté au transfert de petits fichiers comme dans le cas ci-dessus? Ou y a-t-il des paramètres qui doivent être ajustés?
la source
Réponses:
Il existe de nombreuses raisons pour lesquelles le transfert de nombreux petits fichiers sera toujours plus lent que le transfert d'un seul gros fichier. Pour une lecture, les fichiers sont plus susceptibles d'être dispersés autour du disque, ce qui nécessite des recherches partout pour les obtenir. Comme Evan l'a mentionné, il existe également des métadonnées impliquées dans le cas de NFS (ou de tout autre système de fichiers d'ailleurs!), Ce qui complique également les choses.
Vous pouvez essayer d'augmenter vos paramètres
rsize
etwsize
au montage NFS et voir si cela améliorera un peu les performances. Consultez également cette question sur le réglage de NFS pour une latence minimale car il contient de nombreux conseils utiles qui vous aideront dans le cas de nombreux transferts de petits fichiers.la source
Je n'ai pas beaucoup d'expérience NFS, mais mon expérience avec d'autres protocoles de partage de fichiers réseau indique que les performances souffrent dans le scénario "beaucoup de petits fichiers" presque universellement. Vous subissez une latence aller-retour et sur un grand groupe de fichiers, cette latence s'additionne.
la source
Avez-vous essayé avec un système de fichiers différent, comme XFS? Il a résolu tous mes problèmes lors de l'exécution de quantités extrêmes de petits transferts de blocs iSCSI. Je ne sais pas pourquoi.
De plus, iSCSI / NFS est généralement configuré pour des trames de données assez volumineuses (trames jumbo, etc.), cela peut vous blesser si vous copiez de petits fichiers un par un. Peut-être tarer puis transférer vous aiderait.
la source
Vérifiez que vous utilisez une connexion TCP ( mount -t nfs -o tcp host: / mount / target ). Les performances sur les systèmes modernes ne seront pas affectées, mais les petites E / S peuvent s'améliorer considérablement si votre réseau est chargé.
Et vous devriez également essayer un autre système de fichiers; ext3 est fondamentalement le plus lent de tous. C'est solide, bien connu, mais c'est tout à fait inapproprié pour un serveur de fichiers. XFS est bien meilleur, et reiserfs est également bien meilleur pour les petites E / S.
la source
Si vous souhaitez transférer une grande arborescence de répertoires de petits fichiers sur NFS et que vous pouvez vous connecter au serveur, la meilleure façon de le faire est de créer un fichier tar qui est automatiquement extrait sur le client, comme suit:
tar c mon répertoire | ssh user @ host tar -xf - -C destdir
De cette façon, un seul "fichier" est transféré sur le réseau et vous avez immédiatement tous vos fichiers sur l'hôte.
la source
Juste pour ajouter à la réponse d'Evan, vous avez également tous les frais généraux de création des métadonnées (entrées de répertoire, etc.) pour chaque fichier que vous copiez.
la source
Une solution similaire à la réponse de Chris serait de synchroniser régulièrement vos fichiers avec les clients. Si vous souhaitez apporter des modifications bidirectionnelles, vous pouvez également utiliser l'unisson.
la source
Le problème est que votre partage est exporté avec l'
sync
option (par défaut). Utilisezasync
pour accélérer considérablement les écritures. Voir nfs.sourceforge.net/nfs-howto/ar01s05.htmlla source