Update the man page to reflect the addition of NFSv4.2 (r355677).

Include references to NFSv4.2 and Flexible File layout, plus clarify
when vfs.nfsd.flexlinuxhack needs to be set for Linux pNFS clients.
Also update the man page to reflect the addition of SpaceUsed to the
attributes stored in the extended attribute on the MDS (r354158).

This is a content change.
This commit is contained in:
Rick Macklem 2019-12-20 21:41:33 +00:00
parent 1dbedf2828
commit 452588d3e5

View File

@ -23,19 +23,21 @@
.\"
.\" $FreeBSD$
.\"
.Dd August 5, 2018
.Dd December 20, 2019
.Dt PNFS 4
.Os
.Sh NAME
.Nm pNFS
.Nd NFS Version 4.1 Parallel NFS Protocol
.Nd NFS Version 4.1 and 4.2 Parallel NFS Protocol
.Sh DESCRIPTION
The NFSv4.1 client and server provides support for the
The NFSv4.1 and NFSv4.2 client and server provides support for the
.Tn pNFS
specification; see
.%T "Network File System (NFS) Version 4 Minor Version 1 Protocol RFC 5661" .
A pNFS service separates Read/Write operations from all other NFSv4.1
operations, which are referred to as Metadata operations.
.%T "Network File System (NFS) Version 4 Minor Version 1 Protocol RFC 5661" ,
.%T "Network File System (NFS) Version 4 Minor Version 2 Protocol RFC 7862" and
.%T "Parallel NFS (pNFS) Flexible File Layout RFC 8435" .
A pNFS service separates Read/Write operations from all other NFSv4.1 and
NFSv4.2 operations, which are referred to as Metadata operations.
The Read/Write operations are performed directly on the Data Server (DS)
where the file's data resides, bypassing the NFS server.
All other file operations are performed on the NFS server, which is referred to
@ -45,8 +47,8 @@ NFS clients that do not support
perform Read/Write operations on the MDS, which acts as a proxy for the
appropriate DS(s).
.Pp
The NFSv4.1 protocol provides two pieces of information to pNFS aware
clients that allow them to perform Read/Write operations directly on
The NFSv4.1 and NFSv4.2 protocols provide two pieces of information to pNFS
aware clients that allow them to perform Read/Write operations directly on
the DS.
.Pp
The first is DeviceInfo, which is static information defining the DS
@ -72,20 +74,21 @@ at least for certain layout types such as the Flexible File Layout.
.Pp
The FreeBSD client and server supports two layout types.
.Pp
The File Layout is described in RFC5661 and uses the NFSv4.1 protocol
The File Layout is described in RFC5661 and uses the NFSv4.1 or NFSv4.2 protocol
to perform I/O on the DS.
It does not support client aware DS mirroring and, as such,
the FreeBSD server only provides File Layout support for non-mirrored
configurations.
.Pp
The Flexible File Layout allows the use of the NFSv3, NFSv4.0 or NFSv4.1
protocol to perform I/O on the DS and does support client aware mirroring.
The Flexible File Layout allows the use of the NFSv3, NFSv4.0, NFSv4.1 or
NFSv4.2 protocol to perform I/O on the DS and does support client aware
mirroring.
As such, the FreeBSD server uses Flexible File Layout layouts for the
mirrored DS configurations.
The FreeBSD server supports the
.Dq tightly coupled
variant and all DSs use the
NFSv4.1 protocol for I/O operations.
variant and all DSs allow use of the
NFSv4.2 or NFSv4.1 protocol for I/O operations.
Clients that support the Flexible File Layout will do writes and commits
to all DS mirrors in the mirror set.
.Pp
@ -107,6 +110,7 @@ A FreeBSD
client must be running the
.Xr nfscbd 8
daemon and use the mount options
.Dq nfsv4,minorversion=2,pnfs or
.Dq nfsv4,minorversion=1,pnfs .
.Pp
When files are created, the MDS creates a file tree identical to what a
@ -120,7 +124,7 @@ attribute name space:
pnfsd.dsfile - This extended attrbute stores the information that the
MDS needs to find the data file on a DS(s) for this file.
pnfsd.dsattr - This extended attribute stores the Size, AccessTime,
ModifyTime and Change attributes for the file.
ModifyTime, Change and SpaceUsed attributes for the file.
.Ed
.Pp
For each regular (VREG) file, the MDS creates a data file on one
@ -142,7 +146,8 @@ or Flexible File Layout
layouts and associated DeviceInfo.
For non-pNFS aware NFS clients, the pNFS service appears just like a normal
NFS service.
For the non-pNFS aware client, the MDS will perform I/O operations on the appropriate DS(s), acting as
For the non-pNFS aware client, the MDS will perform I/O operations on the
appropriate DS(s), acting as
a proxy for the non-pNFS aware client.
This is also true for NFSv3 and NFSv4.0 mounts, since these are always non-pNFS
aware.
@ -182,16 +187,17 @@ For Linux 4.17-rc2 kernels, I have not seen client crashes during testing,
but it only supports the
.Dq loosely coupled
variant.
To make it work correctly when mounting the FreeBSD server, you must either
patch the Flexible File Layout client driver with a patch like:
.Bd -literal -offset indent
http://people.freebsd.org/~rmacklem/flexfile.patch
.Ed
.sp
or set the sysctl
To make it work correctly when mounting the FreeBSD server, you must
set the sysctl
.Dq vfs.nfsd.flexlinuxhack
to one so that it works around
the Linux client driver's limitations.
Wihout this sysctl being set, there will be access errors, since the Linux
client will use the authenticator in the layout (uid=999, gid=999) and not
the authenticator specified in the RPC header.
.Pp
Linux 5.n kernels appear to be patched so that it uses the authenticator
in the RPC header and, as such, the above sysctl should not need to be set.
.Pp
Since the MDS cannot be mirrored, it is a single point of failure just
as a non