NFS与NIS管理及IP数据包路由全解析
1. NFS异步线程管理
在某些极端情况下,通过减少NFS异步线程的数量可以获得足够的性能。通常,NFS异步线程会进行后写缓存以提高NFS性能。当运行多个NFS异步线程时,单个进程可以同时有多个写请求处于未完成状态。
例如,在NFS客户端上运行八个NFS异步线程时,客户端在对大文件进行顺序写操作时会同时生成八个NFS写请求,这些请求由NFS异步线程处理。与biod机制不同,当Solaris进程在所有NFS异步线程都在等待服务器响应而被阻塞时发出新的写请求,该写请求会在内核中排队,请求进程会成功返回而不会被阻塞。请求进程本身不会向NFS服务器发出RPC请求,只有NFS异步线程会这样做。当一个NFS异步线程的RPC调用完成后,它会从队列中取出下一个请求并向服务器发送新的RPC。
如果服务器无法跟上传入的NFS写请求的速度,可能需要减少NFS请求的数量。减少NFS异步线程的数量可以实现这一点,虽然没有异步线程时内核RPC机制仍然可以工作,但效率会降低。
2. 属性缓存
NFS客户端会缓存文件属性,如修改时间和所有者,以避免频繁向NFS服务器请求不经常更改的信息。完成对文件句柄的getattr操作后,相关信息会被缓存以供其他请求使用。在后续的写操作中,缓存数据会被更新;当数据的生命周期到期时,缓存会被刷新。
写操作导致的重复属性更改可以完全在客户端处理,最终结果会通过一次setattr操作写回到服务器。需要注意的是,客户端上由chmod命令生成的显式setattr操作不会在客户端进行缓存,只有文件大小和修改时间的更改会被缓存。
缓存数据的生命周期由以下四个挂载参数