- 主题:网络文件系统的一个细节
考虑一下网络文件系统的一个场景。。
我们在命令行里面发出了 rm xxx.txt 这条命令,要求远程文件系统删除文件。
那么,如果 unlink 命令还没发到远程时我们按了 ctrl+c 取消。此时远程没有真正删除。
如果 unlink 命令已经发送到远程,但是此时我们又按 ctrl+c 取消,那么此时,远程到底是删除成功了还是未删除成功呢,陷入一种两端不同步的状态。
NFS 和 SMB 是怎么处理这个问题的呢?
--
FROM 120.33.10.*
NFS 都只是简单把系统调用提交到服务端吗?那岂不是客户端非常的简单?复杂度主要在服务端?
SMB 的 session 里面有包含目录的内容缓存吗?如果没有的话,它的每次 readdir() 都会转发给服务端吗?
如果客户端都没有目录内容的缓存,会不会日常操作比较慢?
【 在 CongHL 的大作中提到: 】
: NFS和SMB不太一样,NFS是无状态,SMB有session管理,
: NFS把删除命令发送到server端就完了,
: SMB只要挂载的,session就在,即使命令停止了,后面结果也是会更新的
: ...................
--
FROM 110.81.1.*
文件系统想要支持 nfs 的话,需要支持哪些特别的特性吗?
nfs v4 以及 smbfs 的 session,内部一般存储了哪些内容呢?
【 在 CongHL 的大作中提到: 】
: NFS协议本身也挺简单,服务端也不复杂,主要依赖底层文件系统。
: SMB一般是有缓存的,可以通过atime判断是否有更新,有的文件系统考虑性能没有启用atime会用一些其他的类似机制
: 如果客户端复杂操作比较多,smb性能是好一点,nfs主要赢在协议简单性能好。
: ...................
--
FROM 183.253.147.*