几乎所有我读过的内容都表明NFS软安装会导致静默损坏。我认为这是因为以下情况:
我的问题是,使用NFS软安装的场景会发生什么:
使用软安装,NFS会为刚刚关闭的文件刷新它的缓存吗?并且,如果无法做到这一点,(因为NFS软安装由于错误而放弃),用户应用程序是否应该在关闭命令上获得错误?
也就是说,我想知道软安装NFS文件上的成功关闭是否确保没有无声损坏。
稍后编辑: 看http://www.avidandrew.com/understanding-nfs-caching.html,它说,
在NFSv3中,close()将导致客户端将所有数据刷新到稳定存储。客户端还会将数据刷新到chmod上的稳定存储,因为这可能会影响其回写数据的能力。重命名不会这么做。如果服务器遵守NFS协议,应用程序通常应该能够依赖于在这两种情况下安全地存储在磁盘上的数据(但需要注意的是,错误的时间' kill -9'可能会中断该进程冲洗)。
然后它还说NFS"提交"如果使用async选项挂载NFS卷,则会被忽略(默认情况下,据我所知),这可能仅适用于使用sync选项显式挂载NFS卷的情况?但是NFS手册页说同步选项没有进行缓存,这与此相矛盾。哦,好吧。
答案 0 :(得分:2)
我(没有证据)不要指望fclose()
导致任何显式刷新,也不会在发生任何刷新时阻塞。您只是将文件句柄放弃到本地内核。
答案 1 :(得分:1)
A8。什么是接近开放式缓存一致性?
[...]
当应用程序关闭文件时,NFS客户端会将所有挂起的更改写回到文件中,以便下一个打开程序可以查看更改。这也使NFS客户端有机会通过close()的返回代码向应用程序报告任何服务器写入错误。这种行为称为“接近打开的缓存一致性”。