为什么Linux NFS服务器在内核中实现而不是用户空间?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么Linux NFS服务器在内核中实现而不是用户空间?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1862字,纯文字阅读大概需要3分钟。
内容图文
![为什么Linux NFS服务器在内核中实现而不是用户空间?](/upload/InfoBanner/zyjiaocheng/959/f2984a813afb48daae7ac9717f41e15a.jpg)
我只是想知道为什么Linux NFS服务器在内核中实现而不是用户空间应用程序?
我知道userspace NFS daemon存在,但它不是提供NFS服务器服务的标准方法.
我认为将NFS服务器作为用户空间应用程序运行将是首选方法,因为它可以提供额外的安全性,在用户空间而不是内核中运行守护进程.它也适合普通的Linux主体做一件事并做得很好(并且守护进程不应该是内核的工作).
事实上,我能想到的在内核中运行的唯一好处是上下文切换带来的性能提升(这是一个值得商榷的原因).
那么有没有任何记录的原因,为什么它的实现方式呢?我试着用谷歌搜索但找不到任何东西.
似乎有很多混乱,请注意我不是在询问有关挂载文件系统的问题,我在询问是否提供了网络文件系统的服务器端.有一个非常明显的区别.在本地挂载文件系统需要支持内核中的文件系统,前提是它不支持(例如samba或unfs3).
解决方法:
据我所知,unfs3已经死了; Ganesha是目前最活跃的用户空间NFS服务器项目,虽然还不完全成熟.
虽然它提供不同的协议,但Samba是一个成功的例子
在用户空间中运行的文件服务器.
我没有看到最近的性能比较.
其他一些问题:
>普通应用程序按路径名查找文件,但nfsd需要能够
通过filehandle查找它们.这很棘手,需要得到支持
文件系统(并非所有文件系统都可以支持它).在过去它不是
可以从用户空间执行此操作,但已添加了更新的内核
name_to_handle_at(2)和open_by_handle_at(2)系统调用.
>我似乎记得阻止文件锁定调用是一个问题;我不确定
这些天用户空间服务器如何处理它们. (你绑定一个服务器线程
等待锁定,还是你的民意调查?)
>较新的文件系统语义(更改属性,委托,共享锁)
可以实施
在内核中更容易(理论上 – 它们大部分还没有).
>您不希望手动检查权限,配额等
你想改变你的uid并依赖普通的内核vfs代码来做
那. Linux有一个系统调用(setfsuid(2))应该这样做.对于
我忘记的原因,我认为在服务器中使用它更加复杂
比应该的.
通常,内核服务器的优势是与vfs和导出的文件系统更紧密地集成.我们可以通过提供更多内核接口(例如文件句柄系统调用)来弥补这一点,但这并不容易.另一方面,现在人们想要导出的一些文件系统(如gluster)实际上主要存在于用户空间中.这些可以由内核nfsd使用FUSE导出 – 但是对于较新的功能可能还需要对FUSE接口进行扩展,并且可能存在性能问题.
简短版:好问题!
内容总结
以上是互联网集市为您收集整理的为什么Linux NFS服务器在内核中实现而不是用户空间?全部内容,希望文章能够帮你解决为什么Linux NFS服务器在内核中实现而不是用户空间?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。