Ubuntu 上 pNFS 的当前状态如何?

Ubuntu 上 pNFS 的当前状态如何?

关于 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 连接连接到服务器。这是正确的吗?

答案1

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

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

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

我无法谈论其他系统,但我们每天在具有数百个 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
$

以及相应的内核消息:

$ dmesg  | grep Layout
[41827.049921] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
$

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

相关内容