Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 1 | =================================== |
| 2 | pNFS block layout server user guide |
| 3 | =================================== |
| 4 | |
| 5 | The Linux NFS server now supports the pNFS block layout extension. In this |
| 6 | case the NFS server acts as Metadata Server (MDS) for pNFS, which in addition |
| 7 | to handling all the metadata access to the NFS export also hands out layouts |
| 8 | to the clients to directly access the underlying block devices that are |
| 9 | shared with the client. |
| 10 | |
| 11 | To use pNFS block layouts with the Linux NFS server the exported file |
| 12 | system needs to support the pNFS block layouts (currently just XFS), and the |
| 13 | file system must sit on shared storage (typically iSCSI) that is accessible |
| 14 | to the clients in addition to the MDS. As of now the file system needs to |
| 15 | sit directly on the exported volume, striping or concatenation of |
| 16 | volumes on the MDS and clients is not supported yet. |
| 17 | |
| 18 | On the server, pNFS block volume support is automatically if the file system |
| 19 | support it. On the client make sure the kernel has the CONFIG_PNFS_BLOCK |
| 20 | option enabled, the blkmapd daemon from nfs-utils is running, and the |
| 21 | file system is mounted using the NFSv4.1 protocol version (mount -o vers=4.1). |
| 22 | |
| 23 | If the nfsd server needs to fence a non-responding client it calls |
| 24 | /sbin/nfsd-recall-failed with the first argument set to the IP address of |
| 25 | the client, and the second argument set to the device node without the /dev |
| 26 | prefix for the file system to be fenced. Below is an example file that shows |
| 27 | how to translate the device into a serial number from SCSI EVPD 0x80:: |
| 28 | |
| 29 | cat > /sbin/nfsd-recall-failed << EOF |
| 30 | |
| 31 | .. code-block:: sh |
| 32 | |
| 33 | #!/bin/sh |
| 34 | |
| 35 | CLIENT="$1" |
| 36 | DEV="/dev/$2" |
| 37 | EVPD=`sg_inq --page=0x80 ${DEV} | \ |
| 38 | grep "Unit serial number:" | \ |
| 39 | awk -F ': ' '{print $2}'` |
| 40 | |
| 41 | echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log |
| 42 | EOF |