Show Table of Contents
9.3. Base RDMA サブシステムの設定
rdma サービスは自動で開始されます。InfiniBand でも iWARP でも RoCE/IBoE でも、RDMA 対応ハードウェアが検出されると、udev は systemd に rdma サービスを開始するよう指示します。
~]# systemctl status rdma
● rdma.service - Initialize the iWARP/InfiniBand/RDMA stack in the kernel
Loaded: loaded (/usr/lib/systemd/system/rdma.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: file:/etc/rdma/rdma.conf
ユーザーが
rdma サービスを有効にする必要はありませんが、常時有効にしたい場合は、そうすることができます。これを行うには、root で以下のコマンドを入力します。
~]# systemctl enable rdma9.3.1. rdma.conf ファイルの設定
rdma サービスは /etc/rdma/rdma.conf を読み込んで、管理者がデフォルトで読み込みたいカーネルレベルとユーザーレベルの RDMA プロトコルを判別します。このファイルを編集すると、様々なドライバーを有効、無効にできます。
以下のドライバーが有効、無効にできます。
IPoIB:IPネットワークエミュレーション層で、InfiniBand ネットワークでのIPアプリケーションの実行を可能にします。SRP: SCSI 要求プロトコルです。マシン上のSRPプロトコル経由でエクスポートされたリモートドライブまたはドライブアレイをまるでローカルのハードディスク上にあるかのようにマシンにマウントできるようになります。SRPT:SRPプロトコルのターゲットモードもしくはサーバーモードです。これは、他のマシンにドライブもしくはドライブアレイをエクスポートするために必要なカーネルサポートを読み込みます。他のマシンは、これらをまるでローカル上にあるかのようにマウントします。デバイスが実際にエクスポートされる前に、ターゲットモードのサポートの設定が必要になります。詳細は、targetd および targetcli パッケージの資料を参照してください。ISER: Linux カーネルの iSCSI 層全般用の低レベルのドライバーで、iSCSI デバイスに InfiniBand ネットワークでのトランスポートを提供します。RDS: Linux カーネル内の Reliable Datagram Service です。Red Hat Enterprise Linux 7 カーネル内では有効にされないため、読み込むことができません。
9.3.2. 70-persistent-ipoib.rules の使用
rdma パッケージは、
/etc/udev.d/rules.d/70-persistent-ipoib.rules ファイルを提供します。この udev rules ファイルは、IPoIB デバイスを (ib0 や ib1 などの) デフォルト名からより記述的な名前に変更するために使用されます。デバイス名を変更するには、このファイルの編集が必要になります。まず、名前を変更する デバイスの GUID アドレスを見つけます。
~]$ ip link show ib0
8: ib0: >BROADCAST,MULTICAST,UP,LOWER_UP< mtu 65520 qdisc pfifo_fast state UP mode DEFAULT qlen 256
link/infiniband 80:00:02:00:fe:80:00:00:00:00:00:00:f4:52:14:03:00:7b:cb:a1 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
link/infiniband の直後には、IPoIB インターフェースの 20 バイトのハードウェアアドレスがあります。新規の名前作成に必要なのは、上記で太字表示となっている最後の 8 バイトのみです。ユーザーは好みに合わせて自由に命名スキームを作成することができます。たとえば、mlx4 デバイスが ib0 サブネットファブリックに接続されている場合、mlx4_ib0 のような device_fabric 命名規則を使用します。唯一推奨されないのは、ib0 や ib1 といった標準名を使用することです。これらの名前は、カーネルが割り当てる自動的な名前と競合する場合があるからです。次に、rules ファイルにエントリーを追加します。既存の例を rules ファイルからコピーして、ATTR{address} エントリー内の 8 バイトを名前を変更するデバイスからの強調表示された 8 バイトで置き換えます。また、新規の名前を NAME フィールドに記入します。
9.3.3. ユーザーのメモリーロック制限解除
RDMA 通信では、コンピューター内の物理的メモリーを固定 (つまり、コンピューター全体で利用可能なメモリーが不足した場合に、カーネルはそのメモリーをページングファイルにスワップすることができない) する必要があります。メモリーの固定は通常、非常に限られた権限が必要となる操作です。
root 以外のユーザーによる 大型 RDMA アプリケーションの実行を可能にするには、非 root ユーザーがシステムで固定を許されるメモリー量を増やす必要があります。これを行うには、/etc/security/limits.d/ ディレクトリー内に以下のようなコンテンツのファイルを追加します。
~]$ more /etc/security/limits.d/rdma.conf
# configuration for rdma tuning
* soft memlock unlimited
* hard memlock unlimited
# rdma tuning end
9.3.4. Mellanox カードのイーサネット用の設定
Mellanox の特定のハードウェアは、InfiniBand とイーサネットモードのいずれでも実行可能です。これらのカードは通常、InfiniBand がデフォルトとなっています。ユーザーがこれをイーサネットモードにすることもできます。現在このモードがサポートされているのは、ConnectX ファミリーのハードウェア (これは mlx4 ドライバーを使用) のみです。このモードに設定するには、
/etc/rdma/mlx4.conf ファイルにある指示に従い、当該ハードウェアに適切な PCI デバイス ID を見つけます。そして、そのデバイス ID と要求されるポートタイプを使用してファイル内に 1 行作成します。その後は initramfs を再構築して、更新されたポート設定が initramfs にコピーされたことを確認します。
ポートタイプを設定し、1 つもしくは両方のポートがイーサネットに設定されたら、ログに以下のメッセージが表示される場合があります。
mlx4_core 0000:05:00.0: Requested port type for port 1 is not supported on this HCAこれは正常なことで、操作に影響は出ません。ポートタイプを設定するスクリプトには、ドライバーがいつポート 2 を内部で要求されたタイプに切り替えたかを知るすべがありません。このため、スクリプトがポート 2 の切り替えを要求してから切り替え操作が完了するまでの間は、ポート 1 を異なるタイプに設定しようとしても拒否されます。スクリプトはコマンドが成功するか、ポートの切り替えが完了されないことを示すタイムアウトになるまで設定しようとします。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.