NFS 中的“粘滞位”是什么意思?

dim*_*mid 6 permissions nfs executable files

我试图弄清楚 NFS v3 中如何使用粘性位。 RFC 1813在第 22 页说:

0x00200 保存交换的文本(在 POSIX 中未定义)。

他们所说的“交换文本”是什么意思?在“NFS Illustrated”中,作者 Brent Callaghan 说这意味着不缓存。但是,我在其他地方没有看到这种解释。

ctr*_*lor 5

可执行文件的文本部分是实际的可执行代码,这就是它所指的内容。在 Linux 上,此请求被忽略,它只是管理员所做的优化。内核可以自行完成此操作,无需提示。

意思是如果可执行文本被换出,并且进程结束,则保留它以备下次使用。在 linux 上(本地)可执行文件不会被换出,因为从文件中重新加载是一样快的。也许 NFS 有点不同。

粘滞位对于其他文件类型具有其他含义:您针对可执行文件进行了描述。对于目录,它阻止非所有者删除文件。

我假设 nfs 是一样的,当我 20 年前使用它时。


来自:http : //netbsd.gw.com/cgi-bin/man-cgi?sticky+7+NetBSD-current

后来,在 SunOS 4 上,粘滞位对于设置了该位且不可执行的文件具有额外的含义:对这些文件的读写操作将直接进入磁盘并绕过缓冲区缓存。这通常用于 NFS 服务器上 NFS 客户端的交换文件,以便服务器上的客户端生成的交换 I/O 不会从服务器的缓冲区缓存中驱逐有用的数据。

  • @Dimid POSIX 没有*定义*它,但它仍然是来自 Unix 的同一件事。POSIX 和 [Single Unix](http://pubs.opengroup.org/onlinepubs/009604599/basedefs/sys/stat.h.html) 没有定义该标志,因为它已被弃用,大多数当前的实现都支持它但忽略它它被排除在标准之外。这是现代技术已经过时的 Unix 历史。POSIX 没有对其进行标准化,但 NFS 仍然对标志值进行标准化(虽然除了对传统 Unix 语义的简洁描述之外,并没有说明它应该做什么)。 (3认同)