26.6. NFS サーバーで NFS over RDMA を有効にする
Remote Direct Memory Access (RDMA) は、クライアントシステムがストレージサーバーのメモリーから自身のメモリーにデータを直接転送できるようにするプロトコルです。これにより、ストレージのスループットが向上し、サーバーとクライアント間のデータ転送の遅延が減少し、両側の CPU 負荷が軽減されます。NFS サーバーとクライアントの両方が RDMA 経由で接続されている場合、クライアントは NFS over RDMA (NFSoRDMA) を使用してエクスポートされたディレクトリーをマウントできます。
前提条件
- NFS サービスが実行および設定されている。
- InfiniBand または RDMA over Converged Ethernet (RoCE) デバイスがサーバーにインストールされている。
- サーバーに IP over InfiniBand (IPoIB) が設定され、InfiniBand デバイスに IP アドレスが割り当てられている。
手順
rdma-core
パッケージをインストールします。dnf install rdma-core
# dnf install rdma-core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージがすでにインストールされている場合は、
/etc/rdma/modules/rdma.conf
ファイル内のxprtrdma
およびsvcrdma
モジュールのコメントが解除されていることを確認します。NFS over RDMA client support NFS over RDMA server support
# NFS over RDMA client support xprtrdma # NFS over RDMA server support svcrdma
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: デフォルトでは、NFS over RDMA はポート 20049 を使用します。別のポートを使用する場合は、
/etc/nfs.conf
ファイルの[nfsd]
セクションでrdma-port
設定を指定します。rdma-port=<port>
rdma-port=<port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewalld
で NFSoRDMA ポートを開きます。firewall-cmd --permanent --add-port={20049/tcp,20049/udp} firewall-cmd --reload
# firewall-cmd --permanent --add-port={20049/tcp,20049/udp} # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 20049 以外のポートを設定する場合は、ポート番号を変更します。
nfs-server
サービスを再起動します。systemctl restart nfs-server
# systemctl restart nfs-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
InfiniBand ハードウェアを搭載したクライアントで、次の手順を実行します。
以下のパッケージをインストールします。
dnf install nfs-utils rdma-core
# dnf install nfs-utils rdma-core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エクスポートされた NFS 共有を RDMA 経由でマウントします。
mount -o rdma server.example.com:/nfs/projects/ /mnt/
# mount -o rdma server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルト (20049) 以外のポート番号を設定する場合は、コマンドに
port=<port_number>
を渡します。mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
# mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rdma
オプションを使用して共有がマウントされたことを確認します。mount | grep "/mnt"
# mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow