Je me demandais simplement pourquoi le serveur NFS Linux est implémenté dans le noyau par opposition à une application en espace utilisateur?
Je connais un démon NFS en espace utilisateur , mais ce n'est pas la méthode standard pour fournir des services de serveur NFS.
Je penserais que l’exécution du serveur NFS en tant qu’application d’espace utilisateur serait l’approche privilégiée, car elle peut offrir une sécurité supplémentaire grâce à un démon exécuté dans l’espace utilisateur au lieu du noyau. Cela correspondrait aussi au principe commun de Linux de faire une chose et de bien le faire (et que les démons ne devraient pas être un travail pour le noyau).
En fait, le seul avantage que je peux penser à utiliser dans le noyau serait une amélioration des performances grâce au changement de contexte (et c'est une raison discutable).
Donc, y a-t-il une raison documentée pour laquelle il est mis en œuvre tel quel? J'ai essayé de chercher sur Google, mais je n'ai rien trouvé.
Il semble y avoir beaucoup de confusion. Notez que je ne pose pas de question sur le montage de systèmes de fichiers, mais sur la fourniture du côté serveur d’un système de fichiers réseau . Il y a une différence très nette. Monter un système de fichiers localement nécessite la prise en charge du système de fichiers dans le noyau, à condition que ce ne soit pas le cas (par exemple, Samba ou unfs3).
unfs3
(ce qui est un serveur NFS) sans aucune prise en charge par le noyau.Réponses:
unfs3
est mort autant que je sache; Ganesha est actuellement le projet de serveur NFS d'espace utilisateur le plus actif, bien qu'il ne soit pas complètement mature.Bien qu'il serve différents protocoles, Samba est un exemple de serveur de fichiers performant opérant dans l'espace utilisateur.
Je n'ai pas vu de comparaison de performance récente.
Quelques autres problèmes:
nfsd
doivent pouvoir les rechercher par descripteur de fichier. Ceci est délicat et nécessite un support du système de fichiers (et tous les systèmes de fichiers ne peuvent pas le supporter). Dans le passé , il n'a pas été 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.setfsuid(2)
) qui devrait le faire. Pour des raisons que j'oublie, je pense que l'utilisation de ce logiciel dans les serveurs s'est avérée plus compliquée qu'elle ne devrait l'être.En général, les points forts d’un serveur de noyau sont une intégration plus étroite avec vfs et le système de fichiers exporté. Nous pouvons compenser cela en fournissant davantage d'interfaces noyau (telles que les appels système de descripteurs de fichiers), mais ce n'est pas facile. D'un autre côté, certains des systèmes de fichiers que les utilisateurs souhaitent exporter (comme le lustre) vivent essentiellement dans l'espace utilisateur. Celles-ci peuvent être exportées par le noyau nfsd à l'aide de FUSE - mais là encore, des extensions des interfaces FUSE peuvent être requises pour les nouvelles fonctionnalités et des problèmes de performances peuvent survenir.
Version courte: bonne question!
la source
unfs3
est vivant et se déplace vers Github" ?Olaf Kirch a à l'origine 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 écrit:
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 HJ Lu, G. Allan Morris et Trond Myklebust. La prise en charge NFS basée sur le noyau augmente 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 supprimer à nouveau.
la source
Starnamer est correct (j'étais l'un des bêta-testeurs).
Le placer dans le noyau visait à améliorer les performances abyssales (principalement pour les clients PCNFS) et, une fois ce problème résolu, personne ne l’a examiné à nouveau.
La présence de NFS dans le noyau présente plusieurs inconvénients, notamment le fait qu’il ne fonctionne pas correctement avec quoi que ce soit qui touche le même système de fichiers (il existe de sérieux risques de corruption), mais à l’époque (1993-1994), nous ne l’avions pas fait. 'réalisez pas que cela deviendrait un problème.
Nous étions plus jeunes et plus fous, etc.
la source