/etc/exports & 挂载选项

Rya*_*yan 7 nfs mount network-share

在我的 Linux 服务器中,我在/etc/exports 中有以下选项

/home *(rw,sync,no_subtree_check,no_root_squash)
Run Code Online (Sandbox Code Playgroud)

我从 Mac 安装使用

mount -t nfs -o resvport,rw,noatime,soft,intr,rsize=32768,wsize=32768,timeo=900,retrans=3,proto=tcp,vers=3,async 192.168.1.121:/home /Volumes/home
Run Code Online (Sandbox Code Playgroud)

如您所见,服务器正在指定sync但我的挂载选项正在使用async,那么将使用哪一个?

Mat*_*Ife 18

sync并且async对于两种不同的情况有不同的含义。

sync在客户端上下文中,对文件的所有写入都提交给服务器。 async导致对文件的所有写入不会立即传输到服务器,通常仅在文件关闭时。因此,打开同一文件的另一台主机不会看到第一台主机所做的更改。

请注意,NFS 提供“接近打开”的一致性,这意味着其他客户端无论如何都无法假设其他人打开的文件中的数据是一致的(或者坦率地说,如果您不使用nfslock在客户端之间添加某种形式的同步,则它根本是一致的) .

sync在服务器上下文中(默认)导致服务器仅在存储后端实际通知它数据写入时才回复说数据写入。 async在服务器上下文中,让服务器仅仅像文件是写在服务器上一样做出响应,而不管它是否真的写了它。这要快得多,但也非常危险,因为数据可能有问题被提交!

在大多数情况下,async在客户端和sync服务器端。这提供了关于 NFS 应该如何工作的非常一致的行为。