8.10. 在 NFS 中启用 pNFS SCSI 布局


您可以将 NFS 服务器和客户端配置为使用 pNFS SCSI 布局访问数据。

先决条件

  • 客户端和服务器必须能够向同一个块设备发送 SCSI 命令。就是说块设备必须位于共享的 SCSI 总线中。
  • 块设备必须包含 XFS 文件系统。
  • SCSI 设备必须支持 SCSI Persistent Reservations,如 SCSI-3 Ppriary Commands 规格中所述。

8.10.1. pNFS SCSI 布局

SCSI 布局基于 pNFS 块布局的工作。布局在 SCSI 设备中定义。它包含一系列固定大小的块来作为逻辑单元(LU),这些逻辑单元必须能够支持 SCSI 持久保留。LU 设备识别通过其 SCSI 设备识别。
在涉及长时间的单客户端访问文件的用例中,pNFS SCSI 表现良好。例如:邮件服务器或者虚拟机。

客户端和服务器之间的操作

当 NFS 客户端从文件读取或写入文件时,客户端会执行 LAYOUTGET 操作。服务器会使用文件在 SCSI 设备中的位置进行响应。客户端可能需要执行 GETDEVICEINFO 的额外操作,以确定要使用哪个 SCSI 设备。如果这些操作正常工作,客户端可以直接向 SCSI 设备发出 I/O 请求,而不是向服务器发送 READWRITE 操作。
客户端之间的错误或争用可能会导致服务器重新调用布局,或者不将它们发送给客户端。在这些情况下,客户端回退到向服务器发出 READWRITE 操作,而不是直接向 SCSI 设备发送 I/O 请求。

设备保留

pNFS SCSI 通过分配保留来处理保护。在服务器向客户端发送布局之前,它会保留 SCSI 设备,以确保只有注册的客户端才可以访问该设备。如果客户端可以向那个 SCSI 设备发送命令,但没有在该设备上注册,那么该设备上的客户端的许多操作都会失败。例如,如果服务器没有向客户端提供该设备的布局,客户端上的 blkid 命令将无法显示 XFS 文件系统的 UUID。
服务器不会删除其自身的持久性保留。这样可在重启客户端和服务器后保护该设备中的文件系统中的数据。为了重新使用 SCSI 设备,您可能需要手动删除 NFS 服务器中的持久性保留。

8.10.2. 检查与 pNFS 兼容的 SCSI 设备

这个过程检查 SCSI 设备是否支持 pNFS SCSI 布局。

先决条件

  • 安装 sg3_utils 软件包:
    # yum install sg3_utils
    Copy to Clipboard Toggle word wrap

过程 8.4. 检查与 pNFS 兼容的 SCSI 设备

  • 在服务器和客户端中检查正确的 SCSI 设备支持:
    # sg_persist --in --report-capabilities --verbose path-to-scsi-device
    Copy to Clipboard Toggle word wrap
    确保设置了 Persist Through Power Los Active (PTPL_A)位。

    例 8.8.  支持 pNFS SCSI 的 SCSI 设备

    以下是支持 pNFS SCSI 的 SCSI 设备的 sg_persist 输出示例。PTPL_A 位报告 1
        inquiry cdb: 12 00 00 00 24 00
        Persistent Reservation In cmd: 5e 02 00 00 00 00 00 20 00 00
      LIO-ORG   block11           4.0
      Peripheral device type: disk
    Report capabilities response:
      Compatible Reservation Handling(CRH): 1
      Specify Initiator Ports Capable(SIP_C): 1
      All Target Ports Capable(ATP_C): 1
      Persist Through Power Loss Capable(PTPL_C): 1
      Type Mask Valid(TMV): 1
      Allow Commands: 1
      Persist Through Power Loss Active(PTPL_A): 1
        Support indicated in Type mask:
          Write Exclusive, all registrants: 1
          Exclusive Access, registrants only: 1
          Write Exclusive, registrants only: 1
          Exclusive Access: 1
          Write Exclusive: 1
          Exclusive Access, all registrants: 1
    
    Copy to Clipboard Toggle word wrap

其它资源

  • sg_persist(8) man page

8.10.3. 在服务器中设置 pNFS SCSI

这个过程将 NFS 服务器配置为导出 pNFS SCSI 布局。

过程 8.5. 在服务器中设置 pNFS SCSI

  1. 在服务器中挂载在 SCSI 设备中创建的 XFS 文件系统。
  2. 将 NFS 服务器配置为导出 NFS 版本 4.1 或更高版本。在 /etc/nfs.conf 文件的 [nfsd] 部分中设置以下选项:
    [nfsd]
    
    vers4.1=y
    
    Copy to Clipboard Toggle word wrap
  3. 将 NFS 服务器配置为通过 NFS 导出 XFS 文件系统,使用 pnfs 选项:

    例 8.9. /etc/exports 中的条目导出 pNFS SCSI

    /etc/exports 配置文件中的以下条目将挂载到 /exported/directory/ 的文件系统导出到 allowed.example.com 客户端,来作为 pNFS SCSI 布局:
    /exported/directory allowed.example.com(pnfs)
    Copy to Clipboard Toggle word wrap

其它资源

8.10.4. 在客户端中设置 pNFS SCSI

这个过程将 NFS 客户端配置为挂载 pNFS SCSI 布局。

先决条件

过程 8.6. 在客户端中设置 pNFS SCSI

  • 在客户端中使用 NFS 版本 4.1 或更高版本挂载导出的 XFS 文件系统:
    # mount -t nfs -o nfsvers=4.1 host:/remote/export /local/directory
    Copy to Clipboard Toggle word wrap
    不要在没有 NFS 的情况下直接挂载 XFS 文件系统。

其它资源

8.10.5. 在服务器中释放 pNFS SCSI 保留

此流程释放 NFS 服务器在 SCSI 设备中拥有的持久保留。这可让您在不再需要导出 pNFS SCSI 时重新使用 SCSI 设备。
您必须从服务器中删除保留。它不能从不同的 IT Nexus 中删除。

先决条件

  • 安装 sg3_utils 软件包:
    # yum install sg3_utils
    Copy to Clipboard Toggle word wrap

过程 8.7. 在服务器中释放 pNFS SCSI 保留

  1. 在服务器上查询现有保留:
    # sg_persist --read-reservation path-to-scsi-device
    Copy to Clipboard Toggle word wrap

    例 8.10. 在 /dev/sda 上查询保留

    # sg_persist --read-reservation /dev/sda
    
      LIO-ORG   block_1           4.0
      Peripheral device type: disk
      PR generation=0x8, Reservation follows:
        Key=0x100000000000000
        scope: LU_SCOPE,  type: Exclusive Access, registrants only
    
    Copy to Clipboard Toggle word wrap
  2. 删除服务器上的现有注册:
    # sg_persist --out \
                 --release \
                 --param-rk=reservation-key \
                 --prout-type=6 \
                 path-to-scsi-device
    Copy to Clipboard Toggle word wrap

    例 8.11. 删除 /dev/sda 上的保留

    # sg_persist --out \
                 --release \
                 --param-rk=0x100000000000000 \
                 --prout-type=6 \
                 /dev/sda
    
      LIO-ORG   block_1           4.0
      Peripheral device type: disk
    
    Copy to Clipboard Toggle word wrap

其它资源

  • sg_persist(8) man page

8.10.6. 监控 pNFS SCSI 布局功能

您可以监控 pNFS 客户端和服务器是否交换正确的 pNFS SCSI 操作,或者它们是否回退到常规的 NFS 操作。

先决条件

  • 配置了 pNFS SCSI 客户端和服务器。
这个过程使用 nfsstat 工具来监控服务器的 pNFS SCSI 操作。

过程 8.8. 从使用 nfsstat 的服务器检查 pNFS SCSI 操作

  1. 监控服务器中服务的操作:
    # watch --differences \
            "nfsstat --server | egrep --after-context=1 read\|write\|layout"
    
    Every 2.0s: nfsstat --server | egrep --after-context=1 read\|write\|layout
    
    putrootfh    read         readdir      readlink     remove	 rename
    2         0% 0         0% 1         0% 0         0% 0         0% 0         0%
    --
    setcltidconf verify	  write        rellockowner bc_ctl	 bind_conn
    0         0% 0         0% 0         0% 0         0% 0         0% 0         0%
    --
    getdevlist   layoutcommit layoutget    layoutreturn secinfononam sequence
    0         0% 29        1% 49        1% 5         0% 0         0% 2435     86%
    
    Copy to Clipboard Toggle word wrap
  2. 客户端和服务器在以下情况下使用 pNFS SCSI 操作:
    • layoutgetlayoutreturnlayoutcommit 计数器递增。这意味着服务器提供布局。
    • 服务器 读写 计数器不会递增。这意味着客户端正在直接向 SCSI 设备执行 I/O 请求。
这个过程使用 /proc/self/mountstats 文件来监控客户端的 pNFS SCSI 操作。

过程 8.9. 使用 mountstats 从客户端检查 pNFS SCSI 操作

  1. 列出每个挂载的操作计数器:
    # cat /proc/self/mountstats \
          | awk /scsi_lun_0/,/^$/ \
          | egrep device\|READ\|WRITE\|LAYOUT
    
    device 192.168.122.73:/exports/scsi_lun_0 mounted on /mnt/rhel7/scsi_lun_0 with fstype nfs4 statvers=1.1
        nfsv4:  bm0=0xfdffbfff,bm1=0x40f9be3e,bm2=0x803,acl=0x3,sessions,pnfs=LAYOUT_SCSI
                READ: 0 0 0 0 0 0 0 0
               WRITE: 0 0 0 0 0 0 0 0
            READLINK: 0 0 0 0 0 0 0 0
             READDIR: 0 0 0 0 0 0 0 0
           LAYOUTGET: 49 49 0 11172 9604 2 19448 19454
        LAYOUTCOMMIT: 28 28 0 7776 4808 0 24719 24722
        LAYOUTRETURN: 0 0 0 0 0 0 0 0
         LAYOUTSTATS: 0 0 0 0 0 0 0 0
    
    Copy to Clipboard Toggle word wrap
  2. 在结果中:
    • LAYOUT 统计指示客户端和服务器使用 pNFS SCSI 操作的请求。
    • READWRITE 统计指示客户端和服务器回退到 NFS 操作的请求。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat