本章介绍 NFS 可调参数。
可调参数 |
参考 |
---|---|
Solaris 内核可调参数 | |
Internet 协议套件可调参数 | |
网络高速缓存和加速器 (Network Cache and Accelerator, NCA) 可调参数 |
可以在 /etc/system 文件(在引导过程中读取)中定义 NFS 参数。每个参数都包含其关联的内核模块的名称。有关更多信息,请参见调优 Solaris 系统。
在不同的发行版中,参数名称、参数所在的模块以及缺省值可能会有所不同。更改或应用先前版本中的值之前,请查看文档以了解现用 SunOS 发行版的版本。
本节介绍与 NFS 内核模块相关的参数。
整数(32 位)
0(启用高速缓存)
0(启用高速缓存)或 1(禁用高速缓存)
布尔值
是
无
基于每个文件高速缓存 pathconf 信息。但是,如果服务器可以动态更改特定文件的信息,应使用此参数禁用高速缓存。客户机没有用于验证其高速缓存项的机制。
不稳定
整数(32 位)
0(启用高速缓存)
0(启用高速缓存)或 1(禁用高速缓存)
布尔值
是
无
基于每个文件高速缓存 pathconf 信息。但是,如果服务器可以动态更改特定文件的信息,应使用此参数禁用高速缓存。客户机没有用于验证其高速缓存项的机制。
不稳定
控制具有错误时间标记或负时间标记的文件在客户机上是否可见。
以前,NFS 客户机或 NFS 服务器都不对返回的文件时间执行任何范围检查。线上时间标记值不带符号并且长度为 32 位。因此,所有值都合法。
但是,在运行 32 位 Solaris 内核的系统上,时间标记值带有符号并且长度为 32 位。因此,可以存在表示 1970 年 1 月 1 日之前或纪元之前的时间标记。
在运行 64 位 Solaris 内核的系统上,问题稍有不同。64 位 Solaris 内核上的时间标记值带有符号并且长度为 64 位。无法确定时间字段表示的是完整的 32 位时间还是负时间(即 1970 年 1 月 1 日之前的时间)。
从 32 位转换为 64 位时,无法确定是否要对时间值进行符号扩展。如果时间值确实为负数,则应该对此时间值进行符号扩展。但是,如果时间值实际上表示完整的 32 位时间值,则不应对此时间值进行符号扩展。只需禁用完整的 32 位时间值即可解决此问题。
整数(32 位)
0(禁用 32 位时间标记)
0(禁用 32 位时间标记)或 1(启用 32 位时间标记)
布尔值
是
无
即使在正常运行期间,也可以将某些文件的时间标记值设置为将来很长的时间或过去很长的时间。如果希望使用已挂载 NFS 的文件系统访问这些文件,应将此参数设置为 1 以允许不经过检查便可传递时间标记值。
不稳定
带符号整数(32 位)
600(60 秒)
0 到 231 - 1
十分之一秒
是,但文件系统的 RPC 超时是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
TCP 很好地确保了请求和响应的传输能够顺利进行。但是,如果在非常慢的网络中往返时间很长,则 NFS 版本 2 客户机可能在传输完成之前超时。
增大此参数可以防止客户机出现超时错误。此值的范围很大,因此,若此值的增幅过大,可能会导致很长一段时间内无法检测到重新传输。
不稳定
带符号整数(32 位)
600(60 秒)
0 到 231 - 1
十分之一秒
是,但文件系统的 RPC 超时是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
TCP 很好地确保了请求和响应的传输能够顺利进行。但是,如果在非常慢的网络中往返时间很长,则 NFS 版本 3 客户机可能在传输完成之前超时。
增大此参数可以防止客户机出现超时错误。此值的范围很大,因此,若此值的增幅过大,可能会导致很长一段时间内无法检测到重新传输。
不稳定
控制已挂载 NFS 版本 4 的文件系统的缺省 RPC 超时时间,此文件系统使用面向连接的传输协议(如 TCP)。
NFS 版本 4 协议规范禁止通过同一 TCP 连接进行重新传输。因此,此参数主要控制客户机响应某些事件的速度,如检测强制执行的取消挂载操作,或检测服务器故障转移到新服务器的速度。
带符号整数(32 位)
600(60 秒)
0 到 231 - 1
十分之一秒
是,但此参数是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
TCP 很好地确保了请求和响应的传输能够顺利进行。但是,如果在非常慢的网络中往返时间很长,则 NFS 版本 4 客户机可能在传输完成之前超时。
增大此参数可以防止客户机出现超时错误。此值的范围很大,因此,若此值的增幅过大,可能会导致很长一段时间内无法检测到重新传输。
不稳定
整数(32 位)
1(启用高速缓存)
0(禁用高速缓存)或 1(启用高速缓存)
布尔值
是
无
如果服务器更改了符号链接文件的内容但未更新文件的修改时间标记,或者时间标记的粒度过大,则客户机可能在很长一段时间内无法看到对符号链接文件的内容所做的更改。在这种情况下,应使用此参数来禁用符号链接内容的高速缓存。这样,运行在客户机上的应用程序便可以立即看到所做的更改。
不稳定
整数(32 位)
1(启用高速缓存)
0(禁用高速缓存)或 1(启用高速缓存)
布尔值
是
无
如果服务器更改了符号链接文件的内容但未更新文件的修改时间标记,或者时间标记的粒度过大,则客户机可能在很长一段时间内无法看到对符号链接文件的内容所做的更改。在这种情况下,应使用此参数来禁用符号链接内容的高速缓存。这样,运行在客户机上的应用程序便可以立即看到所做的更改。
不稳定
整数(32 位)
1(启用高速缓存)
0(禁用高速缓存)或 1(启用高速缓存)
布尔值
是
无
如果服务器更改了符号链接文件的内容但未更新文件的修改时间标记,或者时间标记的粒度过大,则客户机可能在很长一段时间内无法看到对符号链接文件的内容所做的更改。在这种情况下,应使用此参数来禁用符号链接内容的高速缓存。这样,运行在客户机上的应用程序便可以立即看到所做的更改。
不稳定
控制是否针对使用无连接传输(如 UDP)的已挂载 NFS 版本 2 的文件系统启用称为动态重新传输的功能。此功能尝试通过监视服务器响应时间并相应调整 RPC 超时和读写传输大小来减少重新传输次数。
整数(32 位)
1(启用)
0(禁用)或 1(启用)
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
请勿更改此参数。
不稳定
控制是否针对使用无连接传输(如 UDP)的已挂载 NFS 版本 3 的文件系统启用称为动态重新传输的功能。此功能尝试通过监视服务器响应时间并相应调整 RPC 超时和读写传输大小来减少重新传输次数。
整数(32 位)
0(禁用)
0(禁用)或 1(启用)
布尔值
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
请勿更改此参数。
不稳定
控制是否针对使用无连接传输(如 UDP)的已挂载 NFS 版本 4 的文件系统启用称为动态重新传输的功能。此功能尝试通过监视服务器响应时间并相应调整 RPC 超时和读写传输大小来减少重新传输次数。
整数(32 位)
0(禁用)
0(禁用)或 1(启用)
布尔值
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
请勿更改此参数。
不稳定
控制是否针对已挂载 NFS 版本 2 的文件系统使用负的名称高速缓存 (negative name cache)。此负的名称高速缓存 (negative name cache) 记录那些进行查找时未找到的文件名。此高速缓存用于避免针对已知不存在的文件名发出通过网络查找的请求。
整数(32 位)
1(启用)
0(禁用)或 1(启用)
布尔值
是
无
要正确执行高速缓存,必须在使用负项之前对其进行严格检验。对于以只读方式挂载的文件系统,此一致性机制稍有放宽。假定服务器上的文件系统当前没有进行更改或更改的速度很慢,并且此类更改可以较慢地传播到客户机。在这种情况下,一致性机制便成为标准属性高速缓存机制。
如果文件系统在客户机上以只读方式挂载,但是将在服务器上发生更改,并且客户机需要立即看到这些更改,则应该使用此参数来禁用负高速缓存 (negative cache)。
如果禁用 nfs:nfs_disable_rddir_cache 参数,则通常还应该禁用此参数。有关更多信息,请参见nfs:nfs_disable_rddir_cache。
不稳定
控制是否针对已挂载 NFS 版本 3 的文件系统使用负的名称高速缓存 (negative name cache)。此负的名称高速缓 (negative name cache) 存记录那些进行查找时未找到的文件名。此高速缓存用于避免针对已知不存在的文件名发出通过网络查找的请求。
整数(32 位)
1(启用)
0(禁用)或 1(启用)
布尔值
是
无
要正确执行高速缓存,必须在使用负项之前对其进行严格检验。对于以只读方式挂载的文件系统,此一致性机制稍有放宽。假定服务器上的文件系统当前没有进行更改或更改的速度很慢,并且此类更改可以较慢地传播到客户机。在这种情况下,一致性机制便成为标准属性高速缓存机制。
如果文件系统在客户机上以只读方式挂载,但是将在服务器上发生更改,并且客户机需要立即看到这些更改,则应该使用此参数来禁用负高速缓存 (negative cache)。
如果禁用 nfs:nfs_disable_rddir_cache 参数,则通常还应该禁用此参数。有关更多信息,请参见nfs:nfs_disable_rddir_cache。
不稳定
控制是否针对已挂载 NFS 版本 4 的文件系统使用负的名称高速缓存 (negative name cache)。此负的名称高速缓存 (negative name cache) 记录那些进行查找时未找到的文件名。此高速缓存用于避免针对已知不存在的文件名发出通过网络查找的请求。
整数(32 位)
1(启用)
0(禁用)或 1(启用)
布尔值
是
无
要正确执行高速缓存,必须在使用负项之前对其进行严格检验。对于以只读方式挂载的文件系统,此一致性机制稍有放宽。假定服务器上的文件系统当前没有进行更改或更改的速度很慢,并且此类更改可以较慢地传播到客户机。在这种情况下,一致性机制便成为标准属性高速缓存机制。
如果文件系统在客户机上以只读方式挂载,但是将在服务器上发生更改,并且客户机需要立即看到这些更改,则应该使用此参数来禁用负高速缓存 (negative cache)。
如果禁用 nfs:nfs_disable_rddir_cache 参数,则通常还应该禁用此参数。有关更多信息,请参见nfs:nfs_disable_rddir_cache。
不稳定
控制执行 NFS 版本 2 客户机异步 I/O 的内核线程数。由于 NFS 基于 RPC 并且 RPC 本身具有同步特性,因此,需要不同的执行上下文来执行与调用线程异步的 NFS 操作。
可以异步执行的操作包括:针对 read-ahead 请求执行的读取操作,针对 readdir read-ahead 请求执行的目录读取操作,针对 putpage 和 pageio 请求执行的写入操作,提交操作,以及针对 inactive 请求执行的清除操作。
整数(16 位)
8
0 到 215 - 1
线程
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
要增大或减小在任何指定时间未完成的同时执行的 I/O 操作数时。例如,对于带宽很小的网络,可能需要减小此值以便 NFS 客户机不会引起网络过载。或者,如果网络带宽很大,并且客户机和服务器具有足够的资源,则可能需要增大此值。这样,可以更有效地利用可用网络带宽,以及客户机和服务器的资源。
不稳定
控制执行 NFS 版本 3 客户机异步 I/O 的内核线程数。由于 NFS 基于 RPC 并且 RPC 本身具有同步特性,因此,需要不同的执行上下文来执行与调用线程异步的 NFS 操作。
可以异步执行的操作包括:针对 read-ahead 请求执行的读取操作,针对 readdir read-ahead 请求执行的目录读取操作,针对 putpage 和 pageio 请求执行的写入操作,以及提交操作。
整数(16 位)
8
0 到 215 - 1
线程
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
要增大或减小在任何指定时间未完成的同时执行的 I/O 操作数时。例如,对于带宽很小的网络,可能需要减小此值以便 NFS 客户机不会引起网络过载。或者,如果网络带宽很大,并且客户机和服务器具有足够的资源,则可能需要增大此值。这样,可以更有效地利用可用网络带宽,以及客户机和服务器的资源。
不稳定
控制执行 NFS 版本 4 客户机异步 I/O 的内核线程数。由于 NFS 基于 RPC 并且 RPC 本身具有同步特性,因此,需要不同的执行上下文来执行与调用线程异步的 NFS 操作。
可以异步执行的操作包括客户机停止使用文件时针对 read-ahead 请求执行的读取操作以及后写操作、目录读前操作和清除操作。
整数(16 位)
8
0 到 215 - 1
线程
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无
要增大或减小在任何指定时间未完成的同时执行的 I/O 操作数时。例如,对于带宽很小的网络,可能需要减小此值以便 NFS 客户机不会引起网络过载。或者,如果网络带宽很大,并且客户机和服务器具有足够的资源,则可能需要增大此值。这样,可以更有效地利用可用网络带宽,以及客户机和服务器资源。
不稳定
控制以顺序方式访问文件时,NFS 版本 2 客户机排队的读前操作数。这些读前操作可增加并行性和读取吞吐量。每个读前请求通常都对应于一个文件数据逻辑块。
整数(32 位)
4
0 到 231 - 1
逻辑块。(请参见nfs:nfs_bsize。)
是
无
要增大或减小在任何指定时间针对特定文件未完成的读前请求数时。例如,对于带宽很小的网络或者在低内存的客户机上,可能需要减小此值以便 NFS 客户机不会引起网络过载或系统内存过载。或者,如果网络带宽很大,并且客户机和服务器具有足够的资源,则可能需要增大此值。这样,可以更有效地利用可用网络带宽,以及客户机和服务器资源。
不稳定
控制以顺序方式访问文件时,NFS 版本 3 客户机排队的读前操作数。这些读前操作可增加并行性和读取吞吐量。每个读前请求通常都对应于一个文件数据逻辑块。
整数(32 位)
1
0 到 231 - 1
逻辑块。(请参见nfs:nfs3_bsize。)
是
无
要增大或减小在任何指定时间针对特定文件未完成的读前请求数时。例如,对于带宽很小的网络或者在低内存的客户机上,可能需要减小此值以便 NFS 客户机不会引起网络过载或系统内存过载。或者,如果网络带宽很大,并且客户机和服务器具有足够的资源,则可能需要增大此值。这样,可以更有效地利用可用网络带宽,以及客户机和服务器资源。
不稳定
控制以顺序方式访问文件时,NFS 版本 4 客户机排队的读前操作数。这些读前操作可增加并行性和读取吞吐量。每个读前请求通常都对应于一个文件数据逻辑块。
整数(32 位)
4
0 到 231 - 1
逻辑块。(请参见nfs:nfs4_bsize。)
是
无
要增大或减小在任何指定时间针对特定文件未完成的读前请求数时。例如,对于带宽很小的网络或者在低内存的客户机上,可能需要减小此值以便 NFS 客户机不会引起网络过载或系统内存过载。或者,如果网络带宽很大,并且客户机和服务器具有足够的资源,则可能需要增大此值。这样,可以更有效地利用可用网络带宽,以及客户机和服务器的资源。
不稳定
控制 NFS 客户机上 rnode 高速缓存的大小。
NFS 版本 2、3 和 4 客户机使用的 rnode 是用于描述 NFS 客户机上文件的中心数据结构。rnode 包含用于标识服务器上的文件的文件句柄。rnode 还包含指向 NFS 客户机所使用的各种高速缓存的指针,以避免对服务器进行网络调用。rnode 与 vnode 一对一关联。vnode 高速缓存文件数据。
NFS 客户机尝试维护最小 rnode 数,以尝试避免销毁高速缓存的数据和元数据。重用或释放 rnode 时,一定会销毁高速缓存的数据和元数据。
整数(32 位)
此参数的缺省设置为 0,这意味着应该将 nrnode 的值设置为 ncsize 参数的值。实际上,nrnode 的任何非正值都会导致将 nrnode 设置为 ncsize 的值。
1 到 231 - 1
rnode
否。只能通过在 /etc/system 文件中添加或更改该参数然后重新引导系统来更改此值。
系统强制使用最大值,以使 rnode 只能占用 25% 的可用内存。
由于 rnode 的创建和销毁过程是动态的,因此系统往往会设置 nrnode 大小的高速缓存,从而在系统内存压力增加或者同时访问的文件数增加时自动调整高速缓存的大小。但是,在某些情况下,如果提前预测到将访问多个文件,则应该设置 nrnode 的值。例如,如果 NFS 客户机要访问几个很大的文件,则应该将 nrnode 的值设置为较小的数值,以便系统内存可以高速缓存文件数据而不是高速缓存 rnode。或者,如果客户机要访问许多较小的文件,则应该增大 nrnode 的值以优化文件元数据存储,从而减少对元数据的网络调用数。
虽然建议不要这样做,但是通过将 nrnode 的值设置为 1 可以有效地禁用 rnode 高速缓存。此值指示客户机仅高速缓存 1 个 rnode,这意味着频繁重用此 rnode。
不稳定
有关信息,请参见nfs:nrnode (Solaris 9 8/03)。
某些早期 NFS 服务器可能会错误地处理目录信息超过 1024 字节的 NFS 版本 2 READDIR 请求。此问题是由服务器实现中存在的错误造成的。不过,此参数在 NFS 版本 2 客户机中提供了解决方法。
启用此参数时,客户机不会生成目录信息超过 1024 字节的 READDIR 请求。如果禁用此参数,则线上大小将设置为使用 getdents 系统调用传递的大小与使用 NFS_MAXDATA 传递的大小(8192 字节)之间的较小者。有关更多信息,请参见 getdents(2)。
整数(32 位)
0(禁用)
0(禁用)或 1(启用)
布尔值
是
无
如果仅使用早期 NFS 版本 2 服务器并且在服务器尝试读取目录时出现互操作性问题,应检查此参数的值。启用此参数可能会轻微降低读取目录的应用程序的性能。
不稳定
某些早期 NFS 服务器可能会错误地处理目录信息超过 1024 字节的 NFS 版本 3 READDIR 请求。此问题是由服务器实现中存在的错误造成的。因此,此参数包含 NFS 版本 3 客户机中的解决方法。
启用此参数时,客户机不会生成目录信息超过 1024 字节的 READDIR 请求。如果禁用此参数,则线上大小将设置为使用 getdents 系统调用传递的大小与使用 MAXBSIZE 传递的大小(8192 字节)之间的较小者。有关更多信息,请参见 getdents(2)。
整数(32 位)
0(禁用)
0(禁用)或 1(启用)
布尔值
是
无
如果仅使用早期 NFS 版本 3 服务器并且在服务器尝试读取目录时出现互操作性问题,应检查此参数的值。启用此参数可能会轻微降低读取目录的应用程序的性能。
不稳定
某些 NFS 服务器可能会错误处理目录信息超过 1024 字节的 NFS 版本 4 READDIR 请求。此问题是由服务器实现中存在的错误造成的。因此,此参数包含 NFS 版本 4 客户机中的解决方法。
启用此参数时,客户机不会生成目录信息超过 1024 字节的 READDIR 请求。如果禁用此参数,则线上大小将设置为使用 getdents 系统调用传递的大小与使用 MAXBSIZE 传递的大小(8192 字节)之间的较小者。有关更多信息,请参见 getdents(2)。
整数(32 位)
0(禁用)
0(禁用)或 1(启用)
布尔值
是
无
如果仅使用 NFS 版本 4 服务器并且在服务器尝试读取目录时出现互操作性问题,应检查此参数的值。启用此参数可能会轻微降低读取目录的应用程序的性能。
不稳定
控制记录 NFS 客户机收到的 ENOSPC 和 EDQUOT 写入错误之的时间间隔。此参数会影响 NFS 版本 2、3 和 4 客户机。
长整数(在 32 位平台上为 32 位,在 64 位平台上为 64 位)
5 秒
在 32 位平台上,为 0 到 231 - 1
在 64 位平台上,为 0 到 263 - 1
秒
是
无
增大或减小此参数的值以响应客户机记录的消息量。通常,可能要增大此参数的值,以减少频繁使用服务器上空间已满的文件系统时列显的 out of space 消息数。
不稳定
控制是将 NFS 写入错误同时记录到系统控制台和 syslog,还是只记录到系统控制台。此参数会影响 NFS 版本 2、3 和 4 客户机的消息。
整数(32 位)
0(系统控制台和 syslog)
0(系统控制台和 syslog)或 1(系统控制台)
布尔值
是
无
检查此参数的值以避免文件系统被 syslogd 守护进程记录的消息填满。启用此参数时,只会在系统控制台上列显消息,而不会将其复制到 syslog 消息文件。
不稳定
控制是否使用保存来自 READDIR 和 READDIRPLUS 请求的响应的高速缓存。此高速缓存可避免对服务器进行线上调用以检索目录信息。
整数(32 位)
0(启用高速缓存)
0(启用高速缓存)或 1(禁用高速缓存)
布尔值
是
无
如果在某个目录中创建文件或目录时,或者删除某个目录中的文件或目录时服务器未更新该目录的修改时间,从而出现互操作性问题,则检查此参数的值。症状包括已添加到目录的新名称未出现在目录列表中,或者已从目录中删除的旧名称仍然出现在目录列表中。
此参数控制已挂载 NFS 版本 2、3 和 4 的文件系统的高速缓存。此参数应用于所有已挂载 NFS 的文件系统,因此,不能基于每个文件系统禁用或启用高速缓存。
如果禁用此参数,则还应该禁用以下参数以防止 DNLC 负高速缓存 (negative cache) 中出现坏项:
不稳定
控制 NFS 版本 2 客户机使用的逻辑块大小。此块大小表示客户机需要执行 I/O 操作时尝试从服务器读取或写入服务器的数据量。
无符号整数(32 位)
8192 字节
0 到 231 - 1
字节
是,但文件系统的块大小是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。将此参数设置过低或过高都可能会导致系统无法正常运行。请勿将此参数设置为小于特定平台的 PAGESIZE 的任何值。请勿将此参数设置过高,因为这样可能会导致系统在等待授予内存分配时挂起。
请勿更改此参数。
不稳定
控制 NFS 版本 3 客户机使用的逻辑块大小。此块大小表示客户机需要执行 I/O 操作时尝试从服务器读取或写入服务器的数据量。
无符号整数(32 位)
32,768 (32 KB)
0 到 231 - 1
字节
是,但文件系统的块大小是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。将此参数设置过低或过高都可能会导致系统无法正常运行。请勿将此参数设置为小于特定平台的 PAGESIZE 的任何值。请勿将此参数设置过高,因为这样可能会导致系统在等待授予内存分配时挂起。
尝试更改最大数据传输大小时,请检查此参数的值。将此参数与 nfs:nfs3_max_transfer_size 参数一起更改。如果首选较大的传输,则增大这两个参数。如果首选较小的传输,则只需减小此参数。
不稳定
控制 NFS 版本 4 客户机使用的逻辑块大小。此块大小表示客户机需要执行 I/O 操作时尝试从服务器读取或写入服务器的数据量。
无符号整数(32 位)
32,768 (32 KB)
0 到 231 - 1
字节
是,但文件系统的块大小是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。将此参数设置过低或过高都可能会导致系统无法正常运行。请勿将此参数设置为小于特定平台的 PAGESIZE 的任何值。请勿将此参数设置过高,因为这样可能会导致系统在等待授予内存分配时挂起。
尝试更改最大数据传输大小时,请检查此参数的值。将此参数与 nfs:nfs4_max_transfer_size 参数一起更改。如果首选较大的传输,则增大这两个参数。如果首选较小的传输,则只需减小此参数。
不稳定
控制 NFS 版本 2 客户机生成的多种异步请求。四种异步请求类型为 read-ahead、putpage、pageio 和 readdir-ahead。客户机尝试在这些不同的请求类型之间循环,以便尽量实现公平,不会为了处理一种请求而牺牲其他请求。
但是,某些 NFS 版本 2 服务器中的功能(如写入收集)取决于现有 NFS 版本 2 客户机的某些行为。具体地说,写入收集功能取决于客户机是否几乎在同时发出多个 WRITE 请求。如果每次只提取队列中的一个请求,则客户机实际上禁用了这种旨在提高客户机性能的服务器功能。
无符号整数(32 位)
1
0 到 231 - 1
异步请求
是,但文件系统的群集设置是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,将此参数的值设置为 0 会使得只有在处理了某一特定请求类型的所有排队请求后,才继续处理下一种类型。这实际上使算法丧失了其公平性。
要增大在切换到下一类型之前应生成的每种类型异步请求数时。这样,可能会有助于利用取决于来自客户机的请求群集的服务器功能。
不稳定
控制 NFS 版本 3 客户机生成的多种异步请求。五种异步请求类型为 read-ahead、putpage、pageio、readdir-ahead 和 commit。客户机尝试在这些不同的请求类型之间循环,以便尽量实现公平,不会为了处理一种请求而牺牲其他请求。
但是,某些 NFS 版本 3 服务器中的功能(如写入收集)取决于现有 NFS 版本 3 客户机的某些行为。具体地说,写入收集功能取决于客户机是否几乎在同时发出多个 WRITE 请求。如果每次只提取队列中的一个请求,则客户机实际上禁用了这种旨在提高客户机性能的服务器功能。
无符号整数(32 位)
1
0 到 231 - 1
异步请求
是,但文件系统的群集设置是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,将此参数的值设置为 0 会使得只有在处理了某一特定请求类型的所有排队请求后,才继续处理下一种类型。此值使该算法无需顾虑是否公平的问题。
要增大在切换到下一类型之前应生成的每种类型异步操作数时。这样,可能会有助于利用取决于来自客户机的请求群集的服务器功能。
不稳定
控制 NFS 版本 4 客户机生成的多种异步请求。六种异步请求类型为 read-ahead、putpage、pageio、readdir-ahead、commit 和 inactive。客户机尝试在这些不同的请求类型之间循环,以便尽量实现公平,不会为了处理一种请求而牺牲其他请求。
但是,某些 NFS 版本 4 服务器中的功能(如写入收集)取决于现有 NFS 版本 4 客户机的某些行为。具体地说,写入收集功能取决于几乎客户机是否在同时发出多个 WRITE 请求。如果每次只提取队列中的一个请求,则客户机实际上禁用了这种旨在提高客户机性能的服务器功能。
无符号整数(32 位)
1
0 到 231 - 1
异步请求
是,但文件系统的群集设置是在挂载文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,将此参数的值设置为 0 会使得只有在处理了某一特定请求类型的所有排队请求后,才继续处理下一种类型。这实际上使算法丧失了其公平性。
要增大在切换到下一类型之前生成的每种类型异步请求数时。这样,可能会有助于利用取决于来自客户机的请求群集的服务器功能。
不稳定
控制执行异步 I/O 请求的线程在退出之前未执行任何操作而保持休眠状态的持续时间。如果没有更多的请求可以执行,则每个线程便会进入休眠状态。如果在此计时器到期之前没有新的请求进入,则线程便会被唤醒并退出。如果某一请求到达,则会唤醒线程以执行请求,直到再次没有可执行的请求为止。然后,线程再次进入休眠状态以等待其他请求到达,或者等待计时器到期。
整数(32 位)
6000(时间为 1 分钟,表示为 60 秒 * 100 Hz)
0 到 231 - 1
Hz。(通常,时钟的运行频率为 100 Hz。)
是
无。但是,将此参数设置为非正值会导致这些线程在队列中没有可处理的请求时立即退出。
如果确切了解系统中应用程序的行为并且可以预测异步 I/O 请求的频率,则可以采用以下任一种方法调优此参数来稍微优化性能:
使线程尽快到期,从而尽快释放内核资源
使线程到期的速度放慢,从而避免创建和销毁线程时产生的开销
不稳定
调整访问 NFS 客户机上文件访问高速缓存的散列队列数。文件访问高速缓存是存储用户对其尝试访问的文件拥有的文件访问权限。该高速缓存自身是动态分配的。但是,用于建立指向高速缓存的索引的散列队列则是静态分配的。该算法假设每个活动文件具有一个访问高速缓存项,每个散列桶具有四个这样的访问高速缓存项。因此,缺省情况下,此参数的值被设置为 nrnode 参数的值。
整数(32 位)
此参数的缺省设置为 0。此值意味着应该将 nacache 的值设置为 nrnode 参数的值。
1 到 231 - 1
访问高速缓存项
否。只能通过在 /etc/system 文件中添加或更改此参数然后重新引导系统来更改此值。
无。但是,将此参数设置为负值可能会导致系统尝试分配一个很大的散列队列组。尝试执行此操作时,系统可能会挂起。
如果违反了每个文件具有一个访问高速缓存项这样的基本假设,应检查此参数的值。系统处于多个用户几乎同时访问同一文件的分时模式时可能会出现这种违反情况。在这种情况下,增大预期的访问高速缓存大小,有助于保持散列访问高速缓存的高效率。
不稳定
控制 NFS 版本 3 客户机在收到先前请求的 NFS3ERR_JUKEBOX 错误之后等待传输新请求的持续时间。当文件由于某种原因而暂时不可用时,通常会从服务器返回 NFS3ERR_JUKEBOX 错误。此错误通常与分层存储、CD 或磁带自动换带机关联。
长整数(在 32 位平台上为 32 位,在 64 位平台上为 64 位)
1000(时间为 10 秒,表示为 10 秒 * 100 Hz)
在 32 位平台上,为 0 到 231 - 1
在 64 位平台上,为 0 到 263 - 1
Hz。(通常,时钟的运行频率为 100 Hz。)
是
无
检查此参数的值并可能将其调整为与服务器表现的行为相匹配。如果将文件变为可用的延迟时间很长,则应增大此值,以减少由于重复重新传输造成的网络开销。减小此值以缩短确认文件是否变为可用而引起的延迟。
不稳定
控制 NFS 版本 3 READ、WRITE、READDIR 或 READDIRPLUS 请求的数据部分的最大大小。此参数控制服务器返回的请求的最大大小以及客户机生成的请求的最大大小。
整数(32 位)
1,048,576 (1 MB)
0 到 231 - 1
字节
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,如果将服务器上的最大传输大小设置为 0,则可能会导致客户机无法正常运行,或者导致客户机决定不尝试与服务器进行对话。
使用采用 UDP 传输的 NFS ,同样存在对最大传输大小的限制。UDP 针对每个数据报具有 64 KB 的硬性限制。除请求的数据部分之外,此 64 KB 还必须包括 RPC 包头以及其他 NFS 信息。将此限制设置过高可能会导致 UDP 出现错误,以及客户机与服务器之间出现通信问题。
要调优通过网络传输的数据的大小时。通常,还应该更新 nfs:nfs3_bsize 参数以反映此参数的更改。
例如,尝试将传输大小增大到超过 32 KB 时,应更新 nfs:nfs3_bsize 以反映增大的值。否则,无法观测到对线上请求大小所做的任何更改。有关更多信息,请参见nfs:nfs3_bsize。
如果要使用的传输大小小于缺省传输大小,请对每个文件系统使用 mount 命令的 -wsize 或 -rsize 选项。
不稳定
控制 NFS 版本 4 READ、WRITE、READDIR 或 READDIRPLUS 请求的数据部分的最大大小。此参数控制服务器返回的请求的最大大小以及客户机生成的请求的最大大小。
整数(32 位)
32, 768 (32 KB)
0 到 231 - 1
字节
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,如果将服务器上的最大传输大小设置为 0,则可能会导致客户机无法正常运行,或者导致客户机决定不尝试与服务器进行对话。
使用采用 UDP 传输的 NFS 时,同样存在对最大传输大小的限制。有关 UDP 的最大传输大小的更多信息,请参见nfs:nfs3_max_transfer_size。
要调优通过网络传输的数据的大小时。通常,还应该更新 nfs:nfs4_bsize 参数以反映此参数的更改。
例如,尝试将传输大小增大到超过 32 KB 时,应更新 nfs:nfs4_bsize 以反映增大的值。否则,无法观测到对线上请求大小所做的任何更改。有关更多信息,请参见nfs:nfs4_bsize。
如果要使用的传输大小小于缺省传输大小,请对每个文件系统使用 mount 命令的 -wsize 或 -rsize 选项。
不稳定
控制通过 UDP 传输的 NFS 版本 3 READ、WRITE、READDIR 或 READDIRPLUS 请求的数据部分的最大大小。此参数控制服务器返回的请求的最大大小以及客户机生成的请求的最大大小。
整数(32 位)
32, 768 (32 KB)
0 到 231 - 1
字节
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,如果将服务器上的最大传输大小设置为 0,则可能会导致客户机无法正常运行,或者导致客户机决定不尝试与服务器进行对话。
请勿更改此参数。
不稳定
控制通过 TCP 传输的 NFS 版本 3 READ、WRITE、READDIR 或 READDIRPLUS 请求的数据部分的最大大小。此参数控制服务器返回的请求的最大大小以及客户机生成的请求的最大大小。
整数(32 位)
1048576 字节
0 到 231 - 1
字节
是,但此参数是在挂载每个文件系统时设置的。要影响特定文件系统,请在更改此参数之后取消挂载然后再挂载该文件系统。
无。但是,如果将服务器上的最大传输大小设置为 0,则可能会导致客户机无法正常运行,或者导致客户机决定不尝试与服务器进行对话。
请勿更改此参数,除非首选传输大小大于 1 MB。
不稳定
本节介绍 nfssrv 模块的 NFS 参数。
控制 NFS 服务器为了强制实施部分客户机上的完整性而尝试执行的某些安全检查。NFS 服务器可以检查发送请求的源端口是否为保留端口。保留端口的编号小于 1024。对于基于 BSD 的系统,这些端口是为由超级用户运行的进程保留的。此安全检查可以防止用户编写他们自己的基于 RPC 的应用程序,这样的应用程序会使 NFS 客户机使用的访问检查无法执行。
整数(32 位)
0(禁用安全检查)
0(禁用安全检查)或 1(启用安全检查)
布尔值
是
无
使用此参数防止恶意用户使用 NFS 服务器获取对其通常无法访问的文件的访问权限。但是,保留端口概念还没有得到普遍支持。因此,安全检查方面还很薄弱。此外,并非所有的 NFS 客户机实现都将其传输端点绑定到保留范围内的端口号。因此,如果启用安全检查,则可能会导致互操作性问题。
不稳定
控制 NFS 版本 2 服务器处理 WRITE 请求时的行为。NFS 版本 2 协议要求在服务器可以响应客户机之前,与 WRITE 请求关联的所有已修改数据和元数据都驻留在稳定存储器上。NFS 版本 2 WRITE 请求最多可包含 8192 字节数据。因此,每个 WRITE 请求都可能会导致向存储子系统执行多个小型写入。这可能会引发性能问题。
一种加速 NFS 版本 2 WRITE 请求的方法是利用客户机行为。客户机可能会以批处理模式发送 WRITE 请求。服务器可以利用此行为,方法是将多个不同的 WRITE 请求群集为单个发往基础文件系统的请求。因此,为数不多的更大请求便可以写入将要写入存储子系统的数据。此方法可以显著增加 WRITE 请求的吞吐量。
整数(32 位)
1(启用群集)
0(禁用群集)或 1(启用群集)
布尔值
是
无
某些很小的 NFS 客户机(特别是 PC 客户机)可能无法批处理 WRITE 请求。因此,所需的客户机行为可能不存在。此外,在 NFS 版本 2 服务器中进行群集操作可能只会增加开销并降低性能,而不会提高性能。
不稳定
控制与 NFS 验证服务器进行联系的客户机句柄的高速缓存大小。此服务器验证 NFS 客户机以确定是否允许这些客户机访问它们要尝试使用的文件句柄。
整数(32 位)
16
0 到 231 - 1
客户机句柄
是
无
此高速缓存不是动态的,因此在所有客户机句柄已用完的情况下分配客户机句柄的尝试将失败。此失败会导致 NFS 服务器因无法对这些请求进行验证而丢弃请求。通常,此结果并不重要,因为 NFS 客户机只是超时并且会重新传输请求。但是,对于客户机上的软挂载文件系统,客户机可能会超时,并且不会重试请求,而是将错误返回到应用程序。如果确保服务器上的高速缓存大小足以处理负载,则可以避免这种情况。
不稳定
长整数(在 32 位平台上为 32 位,在 64 位平台上为 64 位)
3600 秒(1 小时)
在 32 位平台上,为 0 到 231 - 1
在 64 位平台上,为 0 到 263 - 1
秒
是
无
通过改变可从高速缓存中清除的项的最短生命期,可以调整 NFS 验证高速缓存的大小。应该控制高速缓存的大小以禁止其增长过大,从而可以使用由于失效过程而不允许释放的系统资源。
不稳定
本节介绍 rpcmod 模块的 NFS 参数。
控制 NFS 客户机与每个 NFS 服务器进行通信时使用的 TCP 连接数。将构造内核 RPC,以便可以通过单个连接多路复用 RPC。但是,如有必要,可以使用多个连接。
整数(32 位)
1
1 到 231 - 1
连接
是
无
通常,一个连接足以实现完整的网络带宽。但是,如果 TCP 不能利用网络以单个流形式提供的带宽,则多个连接可能会增加客户机与服务器之间的吞吐量。
增加连接数会产生一些负面影响。增加连接数还会增加跟踪每个连接所需的内核资源使用量。
不稳定
长整数(在 32 位平台上为 32 位,在 64 位平台上为 64 位)
300,000 毫秒(5 分钟)
在 32 位平台上,为 0 到 231 - 1
在 64 位平台上,为 0 到 263 - 1
毫秒
是
无
使用此参数更改允许空闲连接在关闭之前在客户机上存在的时间。可能需要以更快的速度关闭连接以免占用系统资源。
不稳定
长整数(在 32 位平台上为 32 位,在 64 位平台上为 64 位)
360,000 毫秒(6 分钟)
在 32 位平台上,为 0 到 231 - 1
在 64 位平台上,为 0 到 263 - 1
毫秒
是
无
使用此参数更改允许空闲连接在关闭之前在服务器上存在的时间。可能需要以更快的速度关闭连接以免占用系统资源。
不稳定
整数(32 位)
缺省值为 0。此值意味着将栈大小设置为系统缺省值。
0 到 231 - 1
字节
是,对于所有分配的新线程均为动态。栈大小是在创建线程时设置的。因此,对此参数所做的更改不会影响现有线程,但会应用于所有分配的新线程。
无
调用深度过深会导致栈溢出以及红色区域故障。相当深的传输调用深度,再加上深的本地文件系统调用,可能会导致 NFS 服务线程的栈溢出。
将此参数设置为平台上的硬件 pagesize 的倍数。
不稳定
控制在切换传输端点之前每个传输端点处理的最大请求数。内核 RPC 通过一个服务线程池和一个传输端点池进行工作。任一服务线程都可以处理来自任一传输端点的请求。出于性能考虑,在切换到其他传输端点之前,会处理每个传输端点上的多个请求。此方法可避免某些传输端点得到到处理,同是又可以改善性能。
整数(32 位)
8
0 到 231 - 1
请求
是,但是在切换传输端点之前要处理的最大请求数是在将传输端点配置到内核 RPC 子系统时设置的。对此参数所做的更改只影响新的传输端点,而不会影响现有传输端点。
无
调优此参数,以便服务可以利用客户机行为,例如加速 NFS 版本 2 WRITE 请求的群集。增大此参数可能会使服务器更好地利用客户机行为。
不稳定
控制用于检测无连接传输中 RPC 级别重新传输的重复请求高速缓存的大小。按照客户机网络地址、RPC 过程编号、程序编号、版本号以及事务 ID 建立此高速缓存的索引。此高速缓存可避免处理可能非等幂的已重新传输的请求。
整数(32 位)
1024
1 到 231 - 1
请求
该高速缓存的大小是动态设置的,但是用于提供对该高速缓存的快速访问的散列队列的大小则是静态设置的。将此高速缓存设置过大可能会导致在高速缓存中查找项的搜索时间过长。
请勿将此参数的值设置为 0。此值会防止 NFS 服务器处理非等幂请求。
无
如果 NFS 客户机遇到伪故障,请检查此参数的值。例如,如果创建目录的尝试失败,但是实际上已经创建了该目录,则可能是服务器未检测到已重新传输的 MKDIR 请求。
高速缓存的大小应该与服务器上的负载相匹配。高速缓存记录非等幂请求,因此,只需跟踪部分请求。高速缓存需要将信息保存足够长的时间以便客户机可以检测到重新传输。通常,无连接传输的客户机超时相对较短,大约在 1 秒到 20 秒之间。
不稳定
控制用于检测面向连接的传输中 RPC 级别重新传输的重复请求高速缓存的大小。按照客户机网络地址、RPC 过程编号、程序编号、版本号以及事务 ID 建立此高速缓存的索引。此高速缓存可避免处理可能非等幂的已重新传输的请求。
整数(32 位)
1024
1 到 231 - 1
请求
是
该高速缓存的大小是动态设置的,但是用于提供对该高速缓存的快速访问的散列队列的大小是静态设置的。将此高速缓存设置过大可能会导致在高速缓存中查找项的搜索时间过长。
请勿将此参数的值设置为 0。此值会防止 NFS 服务器处理非等幂请求。
如果 NFS 客户机遇到伪故障,请检查此参数的值。例如,如果创建目录的尝试失败,但是实际上已经创建了该目录,则可能是服务器未检测到已重新传输的 MKDIR 请求。
高速缓存的大小应该与服务器上的负载相匹配。高速缓存记录非等幂请求,因此,只需跟踪部分请求。它需要将信息保存足够长的时间以便客户机可以检测到重新传输。通常,面向连接的传输的客户机超时很长,大约为 1 分钟。因此,项需要在高速缓存中保留很长一段时间。
不稳定