2月13日分布式学习笔记|青训营笔记

63 阅读2分钟

这是我参与【第五届青训营】伴学笔记创作活动的第十二天

书接上文

3.3 路径名解析


UNIX文件系统使用open、create或者stat系统调用,一步步地把多部分路径名转为i节点引用 NFS服务器不进行路径名转换,需要由客户以==交互==的方式完成路径名的翻译 客户向远程服务器提交数个lookup请求,将指向远程安装目录的名字的每一部分转换为句柄

3.4 服务器缓存


UNIX文件系统: 预先读:将最近使用的页面装入内存; 延迟写:将缓冲区被其他页占用时才将该页的内容写入磁盘,周期性同步写,如每隔30s将改写的页面写道磁盘上 NFS服务器的读缓存:和本地文件系统相同 NFS服务器的写缓存: 写透:在给客户发送应答前将应答写入磁盘(先不给你说,先写进去再说) 内存缓存:写操作的数据存储在内存缓存中,当系统收到commit操作后,在将数据写入从盘

3.5 客户缓存


为了减少传输给服务器的请求数量,NFS客户模块将read、write等操作的结果缓存起来。 保持一致性:客户轮询服务器会检查他们所用的缓存数据是否最新

  • 基于时间戳的缓存块验证

  • 缓存中的每个数据块被标上两个时间戳

  • Tc:缓存条目上一次被验证的时间

  • Tm:服务器上一次修改文件块的时间

  • 有效性条件: (T- Tc < t) 或者(Tmclient = Tmserver)

        若T(当前时间)- Tc < t为真,无须进一步判断;若为假,则需要从服务器获得获 得Tmserver值(对服务器应用getattr操作)并比较Tmserve与Tmclient。

  • t: 更新时间间隔,选择t是对一致性和效率进行折衷,如文件3~30秒,目录30~60秒,目录更新风险更低。

减少对服务器进行getattr操作的几种方法: 当客户收到一个新的Tmserver值时,将该值应用于所有相关文件派生的缓存项。 将每一个文件操作的结果同当前文件属性一起发送,如果Tmserver值改变,客户便可用它来更新缓存中与文件相关的条目。 采用自适应算法来设置更新间隔值t,对于大多数文件而言,可以极大地减少调用数量。