45 votes

Quel protocole de partage de fichiers réseau offre les meilleures performances et fiabilité ?

Nous avons une configuration avec quelques serveurs web étant équilibrés en charge. Nous voulons avoir un stockage partagé en réseau auquel tous les serveurs web peuvent accéder. Il sera utilisé comme un endroit pour stocker les fichiers téléchargés par les utilisateurs. Tout fonctionne sous Linux.

Devrions-nous utiliser NFS, CIFS, SMB, fuse+sftp, fuse+ftp? Il y a tellement de choix disponibles pour les protocoles de partage de fichiers en réseau, il est très difficile d'en choisir un. Fondamentalement, nous voulons simplement monter en permanence cette ressource partagée sur plusieurs machines. Les fonctionnalités de sécurité sont moins importantes car elle ne sera pas accessible en réseau depuis un autre endroit que les serveurs qui le montent. Nous voulons juste que cela fonctionne de manière fiable et rapidement.

Lequel devrions-nous utiliser?

33voto

Istvan Points 2542

Je vote pour NFS.

NFSv4.1 a ajouté la capacité Parallel NFS pNFS, ce qui permet un accès parallèle aux données. Je me demande quels types de clients utilisent le stockage. Si ce sont seulement des systèmes de type Unix, alors je choisirais NFS en fonction des performances.

25voto

Josh Bush Points 1938

La réponse courte est d'utiliser NFS. Selon ce tir à gogo et ma propre expérience, c'est plus rapide.

Mais, vous avez plus d'options! Vous devriez envisager un système de fichiers en cluster comme GFS, qui est un système de fichiers auquel plusieurs ordinateurs peuvent accéder en même temps. Fondamentalement, vous partagez un périphérique de bloc via iSCSI qui est un système de fichiers GFS. Tous les clients (initiateurs dans le jargon iSCSI) peuvent y lire et écrire. Redhat a un livre blanc. Vous pouvez également utiliser le système de fichiers en cluster d'oracle OCFS pour gérer la même chose.

Le document de redhat fait un bon travail en listant les avantages et les inconvénients d'un système de fichiers en cluster par rapport à NFS. Fondamentalement, si vous voulez beaucoup d'espace pour évoluer, GFS vaut probablement l'effort. De plus, l'exemple de GFS utilise un SAN Fibre Channel comme exemple, mais cela pourrait tout aussi bien être un RAID, un DAS ou un SAN iSCSI.

Enfin, assurez-vous de vous intéresser aux trames jumbo, et si l'intégrité des données est critique, utilisez la somme de contrôle CRC32 si vous utilisez iSCSI avec des trames jumbo.

20voto

cabbey Points 370

Nous avons un cluster web de 2 serveurs de répartition de charge. Nous avons essayé les méthodes suivantes pour synchroniser le contenu entre les serveurs :

  • Des disques locaux sur chaque serveur synchronisés avec RSYNC toutes les 10 minutes
  • Un partage central CIFS (SAMBA) vers les deux serveurs
  • Un partage central NFS vers les deux serveurs
  • Un lecteur SAN partagé exécutant OCFS2 monté sur les deux serveurs

La solution RSYNC était la plus simple, mais cela prenait 10 minutes pour que les modifications apparaissent et RSYNC mettait tellement de charge sur les serveurs que nous devions le limiter avec un script personnalisé pour le mettre en pause toutes les secondes. Nous étions également limités à ne pouvoir écrire que sur le lecteur source.

Le lecteur partagé le plus performant était le lecteur clusterisé OCFS2 jusqu'à ce qu'il devienne fou et fasse crasher le cluster. Nous n'avons pas pu maintenir la stabilité avec OCFS2. Dès que plus d'un serveur accède aux mêmes fichiers, la charge monte en flèche et les serveurs commencent à redémarrer. Il s'agit peut-être d'un échec de formation de notre part.

Le suivant le plus fiable était NFS. Il a été extrêmement stable et tolérant aux pannes. C'est notre configuration actuelle.

SMB (CIFS) a eu quelques problèmes de verrouillage. En particulier, les modifications apportées aux fichiers sur le serveur SMB n'étaient pas détectées par les serveurs web. SMB avait également tendance à se bloquer lors d'un basculement sur le serveur SMB.

Notre conclusion était qu'OCFS2 a le plus de potentiel mais nécessite BEAUCOUP d'analyse avant de l'utiliser en production. Si vous voulez quelque chose de simple et fiable, je recommanderais un cluster de serveurs NFS avec Heartbeat pour la bascule en cas de panne.

5voto

Je vous suggère POHMELFS - il a été créé par le programmeur russe Evgeniy Polyakov et c'est vraiment, vraiment rapide.

3voto

Matt Simmons Points 20098

En termes de fiabilité et de sécurité, probablement CIFS (alias Samba) mais NFS "semble" beaucoup plus léger, et avec une configuration soigneuse, il est possible de ne pas exposer complètement vos données précieuses à chaque autre machine sur le réseau ;-)

Aucune insulte à ces trucs FUSE, mais cela semble encore...nouveau, si vous voyez ce que je veux dire. Je ne sais pas si je lui fais confiance encore, mais cela pourrait juste être moi étant un vieux grincheux, mais parfois le vieil esprit grincheux est justifié quand il s'agit de données d'entreprise précieuses.

Si vous souhaitez monter en permanence un partage sur plusieurs machines, et que vous pouvez composer avec certaines bizarreries (surtout les problèmes d'UID/GID), alors utilisez NFS. Je l'utilise, et ce depuis de nombreuses années.

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