pNFS 块布局服务器用户指南

Linux NFS 服务器现在支持 pNFS 块布局扩展。在这种情况下,NFS 服务器充当 pNFS 的元数据服务器(MDS),除了处理所有 NFS 导出上的元数据访问外,还向客户端分发布局,以便客户端直接访问与客户端共享的底层块设备。

要将 pNFS 块布局与 Linux NFS 服务器一起使用,导出的文件系统需要支持 pNFS 块布局(目前仅支持 XFS),并且文件系统必须位于客户端和 MDS 均可访问的共享存储(通常是 iSCSI)上。目前,文件系统需要直接位于导出的卷上,尚不支持 MDS 和客户端上的卷条带化或连接。

在服务器上,如果文件系统支持 pNFS 块卷,则会自动支持它。在客户端上,请确保内核已启用 CONFIG_PNFS_BLOCK 选项,nfs-utils 中的 blkmapd 守护程序正在运行,并且文件系统已使用 NFSv4.1 协议版本挂载 (mount -o vers=4.1)。

如果 nfsd 服务器需要对无响应的客户端进行隔离,它会调用 /sbin/nfsd-recall-failed,第一个参数设置为客户端的 IP 地址,第二个参数设置为文件系统(要被隔离的)的设备节点,不包含 /dev 前缀。下面是一个示例文件,展示了如何将设备转换为 SCSI EVPD 0x80 中的序列号

cat > /sbin/nfsd-recall-failed << EOF
#!/bin/sh

CLIENT="$1"
DEV="/dev/$2"
EVPD=`sg_inq --page=0x80 ${DEV} | \
        grep "Unit serial number:" | \
        awk -F ': ' '{print $2}'`

echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log
EOF