unfs3
est mort pour autant que je sache; Ganesha est le projet de serveur NFS de l'espace utilisateur le plus actif à l'heure actuelle, bien qu'il ne soit pas complètement mature.
Bien qu'il serve différents protocoles, Samba est un exemple de serveur de fichiers réussi qui fonctionne dans l'espace utilisateur.
Je n'ai pas vu de comparaison de performances récente.
Quelques autres problèmes :
- Les applications ordinaires recherchent les fichiers par nom de chemin, mais
nfsd
doit pouvoir les rechercher par filehandle. C'est délicat et nécessite le support du système de fichiers (et tous les systèmes de fichiers ne peuvent pas le supporter). Dans le passé, il n'était pas possible de le faire depuis l'espace utilisateur, mais les noyaux les plus récents ont ajouténame_to_handle_at(2)
etopen_by_handle_at(2)
appels système. - Je crois me rappeler que le blocage des appels de verrouillage de fichiers était un problème ; Je ne sais pas trop comment les serveurs de l'espace utilisateur les gèrent de nos jours. (Liez-vous un thread de serveur en attente sur le verrou, ou interrogez-vous ?)
- La nouvelle sémantique du système de fichiers (modifier les attributs, les délégations, partager les verrous) peut d'abord être implémentée plus facilement dans le noyau (en théorie, ce n'est pas encore le cas pour la plupart).
- Vous ne voulez pas avoir à vérifier manuellement les autorisations, les quotas, etc., à la place, vous voulez changer votre uid et compter sur le code vfs du noyau pour le faire. Et Linux a un appel système (
setfsuid(2)
) qui devrait le faire. Pour des raisons que j'oublie, je pense que cela s'est avéré plus compliqué à utiliser dans les serveurs qu'il ne devrait l'être.
En général, les points forts d'un serveur noyau sont une intégration plus étroite avec le vfs et le système de fichiers exporté. Nous pouvons compenser cela en fournissant plus d'interfaces noyau (telles que les appels système filehandle), mais ce n'est pas facile. D'un autre côté, certains des systèmes de fichiers que les gens veulent exporter de nos jours (comme gluster) vivent en fait principalement dans l'espace utilisateur. Ceux-ci peuvent être exportés par le nfsd du noyau à l'aide de FUSE, mais encore une fois, des extensions des interfaces FUSE peuvent être nécessaires pour les nouvelles fonctionnalités, et il peut y avoir des problèmes de performances.
Version courte :bonne question !
Olaf Kirch a initialement développé à la fois l'espace utilisateur et la version basée sur le noyau du serveur NFS. Dans son livre de l'an 2000, "Linux Network Administration", il dit :
Le noyau 2.2.0 prend en charge un serveur NFS expérimental basé sur le noyau développé par Olaf Kirch et développé par H.J. Lu, G. Allan Morris et Trond Myklebust. La prise en charge NFS basée sur le noyau améliore considérablement les performances du serveur.
Je pense qu'une fois que le serveur NFS a été déplacé dans le noyau pour améliorer les performances, personne n'a vu de raison de le retirer à nouveau.
Starnamer a raison (j'étais l'un des bêta-testeurs).
Le mettre dans le noyau était une tentative d'améliorer les performances abyssales (principalement pour les clients PCNFS) et une fois ce problème résolu, personne ne l'a beaucoup revu.
Il y a un certain nombre de défauts avec NFS dans le noyau, dont le moindre n'est pas qu'il ne fonctionne pas bien avec quoi que ce soit d'autre touchant le même système de fichiers (il y a de sérieux risques de corruption) mais à l'époque (1993-4) nous n'avions pas ne réalisez pas que cela deviendrait un problème.
Nous étions plus jeunes et plus bêtes, etc etc.