pNFS 在 Ubuntu 上的当前状态是什么?

isa*_*ndi 7 storage file-server nfs4

关于 pNFS 有很多令人困惑的信息,我有一些非常简单的问题:

  • 如何检查它是否在我的系统上运行/启用/活动?
  • pNFS 目前广泛可用还是仍在试验中?特别是它在 Ubuntu 18.04 上的状态是什么?是否nfs-kernel-server使用 pNFS?
  • NFSv4.1 和 pNFS 之间的区别/关系是什么?
  • pNFS 是 NFSv4.1 的可选部分还是在使用 NFSv4.1 时始终处于活动状态?
  • pNFS 也是 NFSv4.2 的一部分还是只是 4.1?
  • 之所以如此称呼 pNFS,是因为它支持从客户端到服务器的并行访问。我认为这意味着如果没有 pNFS,客户端只会运行一个 NFS 进程,该进程通过单个 TCP 连接连接到服务器。这样对吗?

kof*_*ann 7

pNFS 是 NFSv4.1 规范的可选部分。IOW,您需要 nfs 服务器和客户端来对话 nfsv4.1+ 才能使用它。由于这是一个选项功能,您的客户端和服务器应该支持它。Linux 内核从 3.9 版开始支持 pNFS,并且随着每个新版本的发布,它变得更加成熟。

一般来说,pNFS 允许将对单个文件的请求传播到多个所谓的数据服务器。例如,应用程序发出 16MB 读取,但 NFS 服务器将 2MB 读取发送到具有所需块的 8 个不同服务器。有几种支持 pnfs 的服务器实现:

  • Linux服务器;仅支持块布局
  • 基于 Gangesha nfs 的实现
  • NetApp 8.1+
  • 锤子空间
  • dCache(我参与的项目)
  • 自由BSD

我不能谈论其他系统,但我们每天在具有数百个 pNFS 数据服务器(作为单个 NFS 服务器公开)的系统上移动数 TB 的数据。

检查您的 NFS 服务器的 pNFS 功能。在客户端,确保服务器安装有nfsv4.1或更高版本。如果服务器支持 pNFS,那么您应该会看到适当的布局驱动程序作为内核模块加载:

$ lsmod | grep layout
nfs_layout_nfsv41_files    36864  0
nfs_layout_flexfiles    53248  0
nfsv4                 708608  11 nfs_layout_flexfiles,nfs_layout_nfsv41_files
nfs                   323584  3 nfsv4,nfs_layout_flexfiles,nfs_layout_nfsv41_files
sunrpc                454656  22 nfsv4,auth_rpcgss,nfs_layout_flexfiles,lockd,nfs_layout_nfsv41_files,rpcsec_gss_krb5,nfs
$
Run Code Online (Sandbox Code Playgroud)

以及相应的内核消息:

$ dmesg  | grep Layout
[41827.049921] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
$
Run Code Online (Sandbox Code Playgroud)

布局类型指定客户端如何与各种数据服务器通信。检查RFC 5661 中的存储协议部分。