内容简介:全文完极度欢迎将文章分享到朋友圈长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~
Common needs for Samba and NFS
By Jake Edge
May 15, 2019
LSFMM
Amir Goldstein在2019 Linux Storage, Filesystem, and Memory-Management Summit的最后一天,主持了Samba和NFS的相关讨论。Samba和NFS是 Linux 生态中两个最主要的网络文件系统。这个讨论会议主要想了解,Samba和NFS是否还迫切希望kernel增加哪些功能?Amir已经有一些想法,也想听听会议上聚集的这些文件系统专家的意见。
他最近开始研究kernel NFS daemon (knfsd),他的公司提供的NAS device的客户很少有人用NFS,大多数都是在用Samba (也就是常说的SMB)。他希望这两个文件系统都能对其他操作系统有更好的支持。
他首先问一些Samba开发者,他们有没有觉得让Linux kernel增加他们需要的功能很困难?从反馈上来看,他感觉Samba开发者好像都被kernel社区开发者给吓退了。他认为最后一次Samba开发者提出功能需求的时候,“他们采用的方法不对”。那次提出的是希望VFS层增加一些Samba特有的功能,例如阻止对某个特定文件的读、写。VFS maintainer(维护者)认为这种改动不合理,无法接受。
而跟NFS开发者进行的讨论中,大家都认为Samba和NFS应该多交流,找到共同点,来推动kernel支持。有些功能,要么是只能在kernel实现,要么是在kernel实现会具有巨大的优势。这样如果能提出一组能实现大家目的的较少的改动,就很有可能被kernel community接受并合入。
他举得第一个例子是opportunistic locks (OpLocks)。Samba文件系统里,当一个用户使用到某个文件的时候,就会申请OpLocks。获取到这个锁之后,就意味着这个用户可以持续不断的操作这个文件,不需要把它的改动随时flush回server端。当其他客户端也访问这个文件的时候,server会收回OpLock。之中模式可以让拥有OpLocks的文件访问非常高效,对系统性能很重要。
Samba使用OpLocks是有严格条件的,就是这块文件系统只用samba暴露出去的情况。比如说,如果同时也有一个NFS server把相同的一片filesystem区域export出去了,那么Samba就不会利用OpLocks机制来加速。这样非常合理,为了数据一致性损失了性能。此外,OpLocks也有two levels,Samba要用的话就两个level都用。
Steve French也提到了一些类似的限制。OpLocks是利用一个key来做区分的,也允许level-1的lock升级到level 2,不过Linux根本不支持这种升级。他不清楚NFS会不会升级lock。Trond Myklebust补充说NFS协议也支持升级,不过Linux同样没有实现这个功能。
Goldstein就在想怎样能让Samba和NFS都支持level 2的OpLocks。他想六月份先去Samba conference (sambaXP)搜集一下大家的反馈。如果要做的话,至少要像Bruce Fields此前在NFS会议中讲的那样,能够跟踪文件系统操作中的各个client客户端,管理好他们拥有的OpLocks以及租期。
针对目录来说,情况更加复杂一些。Goldstein在开发一个能让目录的改动触发通知的机制。他利用了一些hook来发出同步通知消息(synchronous notification)。不过有开发者担心暴露这些信息会有一些安全问题。所以最后可能会用类似OpLocks的租约管理的方式,增加一个timeout,在对端没有回应的时候能够关闭。
Myklebust介绍了NFS使用租期(leases)方式碰到的一个问题,就是time out超时之后不会自动被监测到。这样如果错过了通知时间窗(notification window),文件描述符(file descriptor)就会被关闭,或者被系统拒绝所有对这个文件的访问。这时候就需要采取一些恢复措施。Goldstein说他没有定下来用什么方案解决,只是先把问题提出来,希望大家有更好方案。
接下来,就是文件被打开时候如果指明了share modes,该怎么办。share modes有好几种设置,可以让其他打开这个文件的用户不能读或者写。5年前就有一组patch为了支持这个功能,在VFS层来检查并确保这些share modes生效。而Goldstein认为NFS和Samba应该能创造一组仅有它们两个文件系统使用的lock,来确保两者更好的兼容。可以像是BSP的flock()接口一样。每当调用open()接口的时候,可以用O_DENYWRITE和O_DENYREAD等flag来请求专有访问权限,但是只有在支持这些flag的文件系统上才会强制实行。
Ted Ts'o觉得还是需要有个文档来介绍一下目前碰到的各种问题。尤其是能帮助大家理解,如果不支持这些新功能,就会有什么大麻烦。Samba目前运行的挺不错的,所以更要跟kernel developer好好仔细介绍清楚,为什么Samba需要那些新功能,才能让patch被接受。
Goldstein觉得目前主要是跟其他文件系统介绍一下他的想法和计划,短期内并不指望有很多工作展开。希望能收集到更多可行的建议。
全文完
极度欢迎将文章分享到朋友圈
长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~
以上所述就是小编给大家介绍的《LWN: NFS和Samba对Linux kernel还有什么新功能需求吗?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ECMAScript 2015 新功能關係
- ExtJS 6.6的新功能
- SARscape5.5新功能
- Yar-2.1.0 新功能介绍
- Python 3.8 的超酷新功能
- 刚刚,GitHub重磅发布四大新功能!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解并行编程
[美] Paul E.Mckenney(保罗·E·麦肯尼) / 谢宝友 鲁阳 / 电子工业出版社 / 2017-7-1 / 129
《深入理解并行编程》首先以霍金提出的两个理论物理限制为引子,解释了多核并行计算兴起的原因,并从硬件的角度阐述并行编程的难题。接着,《深入理解并行编程》以常见的计数器为例,探讨其不同的实现方法及适用场景。在这些实现方法中,除了介绍常见的锁以外,《深入理解并行编程》还重点介绍了RCU的使用及其原理,以及实现RCU的基础:内存屏障。最后,《深入理解并行编程》还介绍了并行软件的验证,以及并行实时计算等内容......一起来看看 《深入理解并行编程》 这本书的介绍吧!