Est-il raisonnable d'utiliser NFS sur un serveur Web de production?
NFS peut-il être raisonnablement utilisé sur des serveurs de production comme moyen de connecter un serveur de calcul à un serveur de stockage, en supposant que la connexion s'effectue via une connexion LAN 1Gbe ou 10Gbe?
Il y a évidemment une surcharge du réseau et NFS semble particulièrement plus lent avec les écritures si le mode de synchronisation est activé. Sinon, il semble raisonnablement léger et capable de s'adapter à ce que je peux dire, mais j'ai peu d'expérience avec lui personnellement. Ai-je tort?
Le problème est que j'ai actuellement un serveur qui fait à la fois office de serveur de stockage et de serveur Web, mais je vais finir par devoir diviser les deux dans le futur, et étant donné que certaines demandes doivent passer par la couche d'application Web pour l'authentification avant d'initialiser le transfert de fichiers, cela devient un peu délicat avec ce logiciel. Un montage réseau fs est l'option la plus simple. Je ne sais pas si c'est une bonne option.
Je prévois également d'essayer d'utiliser la mise en cache locale avec NFS, ce qui devrait améliorer un peu les performances, mais je ne suis pas sûr que cela suffise.
En ce qui concerne les alternatives, il n'y a que iSCSI que je connais en tant que véritable concurrent, et la plupart des gens semblent recommander NFS par rapport aux autres moins connus.
Réponses
NFS est très bien, sauf si certains autres critères spécifiques sont remplis, à savoir:
- Les systèmes impliqués sont tous deux capables d'utiliser NFS de manière native. Windows ne compte pas ici, cela fonctionne en quelque sorte , mais il a beaucoup de bizarreries et il est souvent difficile de travailler avec NFS dans un environnement multiplateforme (et si ce n'est que Windows, utilisez SMB3, cela élimine la plupart des autres problèmes avec NFS). Notez que du côté client, cela signifie une prise en charge au niveau du noyau, car une implémentation au niveau de l'utilisateur doit soit gérer les problèmes d'efficacité inhérents à l'utilisation de quelque chose comme FUSE, soit être liée directement à l'application qui doit accéder au partager.
- Vous avez correctement vérifié comment le client NFS gère un redémarrage du serveur NFS. Cela inclut à la fois le système d'exploitation lui-même (ce qui devrait convenir dans la plupart des cas) et le logiciel qui accédera au partage. En particulier, une attention particulière est nécessaire sur certaines plates-formes clientes lorsque le logiciel utilisant le partage maintient les fichiers ouverts pendant de longues périodes, car toutes les implémentations de client NFS ne gèrent pas correctement les redémarrages du serveur en remontant et revalidant explicitement les verrous et les descripteurs de fichiers comme ils le devraient (ce qui conduit à toutes sortes de problèmes pour le logiciel client). Notez que vous devez revérifier ceci chaque fois qu'une partie de la pile est mise à niveau ou reconfigurée.
- Vous êtes prêt à configurer le mappage approprié des identifiants d'utilisateur / de groupe. C'est gros, car sans cela, vous devez soit mettre en miroir les mappages UID / GID entre les systèmes (faisable, mais je me méfierais de configurer SSO contre un réseau interne pour un système connecté à Internet) ou vous vous retrouvez avec un risque potentiellement sérieux les implications de sécurité (à savoir, ce que vous voyez sur un système pour les autorisations ne correspond pas à ce que vous voyez sur les autres).
- Vous utilisez une liaison réseau sécurisée ou êtes prêt à configurer correctement l'authentification pour le partage. Sans authentification, n'importe qui sur le lien peut y accéder (et un client malveillant peut facilement contourner les contrôles d'accès discrétionnaires UNIX de base).
En supposant que vous remplissez tous ces critères et que vous disposez d'un réseau raisonnablement rapide, tout devrait bien se passer. De plus, si vous pouvez exécuter des trames jumbo, faites-le, elles aident beaucoup pour tout système de fichiers réseau ou stockage de blocs en réseau.
NFS est tout à fait OK et est préféré à iSCSI car NFS est beaucoup plus facile à gérer, partager et sauvegarder.
Nous utilisons NFS depuis des années pour connecter notre SAN à nos serveurs VMware ESXi, en exécutant des centaines de machines virtuelles dessus. Aucun problème.
Le goulot d'étranglement est plutôt le système de stockage que le protocole réseau.
La connexion réseau doit bien sûr être suffisamment rapide, c'est-à-dire 10 Gb Ethernet ou fibre. Nous ne nous soucions même plus d'un réseau de stockage séparé.
iSCSI pourrait être un peu plus rapide ...
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/storage_protocol_comparison-white-paper.pdf
https://www.hyper-v.io/whos-got-bigger-balls-testing-nfs-vs-iscsi-performance-part-3-test-results/
... mais NFS comme tout autre redirecteur de réseau (SMB3, AFS / AFP, etc.) permet un accès multiple simultané, ce qui est délicat avec iSCSI ou d'autres protocoles de bloc.
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392