Red Hat Training

A Red Hat training course is available for RHEL 8

4.10. NFS サーバーで RDMA 経由の NFS を有効にする

リモートダイレクトメモリーアクセス (RDMA) は、クライアントシステムがストレージサーバーのメモリーから自身のメモリーにデータを直接転送できるようにするプロトコルです。これにより、ストレージのスループットが向上し、サーバーとクライアント間のデータ転送の遅延が減少し、両端の CPU 負荷が軽減されます。NFS サーバーとクライアントの両方が RDMA 経由で接続されている場合、クライアントは NFSoRDMA を使用してエクスポートされたディレクトリーをマウントできます。

前提条件

  • NFS サービスが実行中であり、設定されている
  • InfiniBand または RDMA over Converged Ethernet (RoCE) デバイスがサーバーにインストールされています。
  • サーバー上で IP over InfiniBand (IPoIB) が設定され、InfiniBand デバイスに IP アドレスが割り当てられています。

手順

  1. rdma-core パッケージをインストールします。

    # dnf install rdma-core
  2. パッケージがすでにインストールされている場合は、/etc/rdma/ modules/rdma.conf ファイル内の xprtrdma および svcrdma モジュールのコメントが解除されていることを確認します。

    # NFS over RDMA client support
    xprtrdma
    # NFS over RDMA server support
    svcrdma
  3. オプション: デフォルトでは、NFS over RDMA はポート 20049 を使用します。別のポートを使用する場合は、/etc/nfs.conf ファイルの [nfsd] セクションで rdma-port 設定を設定します。

    rdma-port=_<port>_
  4. Firewalld で NFSoRDMA ポートを開きます。

    # firewall-cmd --permanent --add-port={20049/tcp,20049/udp}
    # firewall-cmd --reload

    20049 以外のポートを設定する場合は、ポート番号を調整してください。

  5. nfs-server サービスを再起動します。

    # systemctl restart nfs-server

検証

  1. InfiniBand ハードウェアを搭載したクライアントで、次の手順を実行します。

    1. 以下のパッケージをインストールします。

      # dnf install nfs-utils rdma-core
    2. エクスポートされた NFS 共有を RDMA 経由でマウントします。

      # mount -o rdma server.example.com:/nfs/projects/ /mnt/

      デフォルト (20049) 以外のポート番号を設定する場合は、コマンドに port= <port_number> を渡します。

      # mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
    3. 共有が rdma オプションでマウントされたことを確認します。

      # mount | grep "/mnt"
      server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)