即使在成功关闭"之后,NFS软安装也会导致静默损坏。操作

时间:2015-08-24 01:38:49

标签: linux nfs

几乎所有我读过的内容都表明NFS软安装会导致静默损坏。我认为这是因为以下情况:

  • 用户应用程序写入NFS
  • NFS客户端接受写入请求并将成功返回给用户应用程序
  • NFS客户端具有等待写入NFS服务器的数据队列/缓冲
  • 某些问题会阻止编写队列/缓冲数据(例如,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手册页说同步选项没有进行缓存,这与此相矛盾。哦,好吧。

2 个答案:

答案 0 :(得分:2)

我(没有证据)不要指望fclose()导致任何显式刷新,也不会在发生任何刷新时阻塞。您只是将文件句柄放弃到本地内核。

https://serverfault.com/questions/9499/what-are-the-advantages-disadvantages-of-hard-versus-soft-mounts-in-unix

答案 1 :(得分:1)

Linux NFS FAQ指出

A8。什么是接近开放式缓存一致性?

[...]

当应用程序关闭文件时,NFS客户端会将所有挂起的更改写回到文件中,以便下一个打开程序可以查看更改。这也使NFS客户端有机会通过close()的返回代码向应用程序报告任何服务器写入错误。这种行为称为“接近打开的缓存一致性”。