こちらも CentOS 7 で、HCA として Mellanox ConnectX-2 VPI (Single Port) を使用します。
Infiniband のセットアップ
Infiniband のドライバやユーティリティ等には以下のような選択肢がありますが、今回は Mellanox OFED (Rev 3.0-2.0.1) をインストールすることにします。
- rpm パッケージ
- OFED (Open Fabrics Enterprise Distribution)
- Mellanox OFED (Mellanox 版の OFED)
Mellanox OFED には、現在の kernel バージョンに合わせて Mellanox OFED をビルドするスクリプト mlnx_add_kernel_support.sh が用意されていますので、これでアップデート後の kernel バージョンに適合するように再ビルドする必要があります。
まずは必要なパッケージのインストールです。
mlnx_add_kernel_support.sh でビルドします。
kernel は 3.10.0-229.11.1.el7 にアップデート済みです。
デフォルトでは /tmp にログとともに出力されますが、ここでは $HOME に出力することにします。
一緒に Firmware のアップデートも試行されますが、今回使用した HCA は Mellanox 純正ではなく、OEM のため失敗します。これは無視してかまいません。
Infiniband 関連のモジュールを有効にするためには、openibd サービスを起動します。
事前に openib.conf を変更して、SRP モジュールも有効にしておきます。
Mellanox OFED の opensmd は、systemd に対応していないので、systemctl ではなく従来の chkconfig で設定を行います。(chkconfig opensmd off で無効化する)
これで Infiniband のセットアップが終わりました。
QSFP ケーブルを接続して、Link 状態を確認してみます。
SRP Initiator
次は SRP でストレージ (SRP Target) にアクセスします。
SRP Target への接続には、Mellanox OFED の srp_daemon を使います。
srp_daemon は Inifiniband ファブリックで定期的に SRP Target を探索し、見つかったら接続します。
テストのため、デーモンとしてではなく 1度のみ実行するには、-o を付けます。
srpd サービスは、systemd ではなく chkconfig で設定となり、起動スクリプトは /etc/rc.d/init.d/srpd です。
このスクリプトで /usr/sbin/srp_daemon.sh が実行され、そこから srp_daemon が実行されます。
(ステータスは systemctl で参照可能)
-n は SRP Initiator から SRP Target へ接続する時に、拡張オプション (initiator_ext) を使用することを示します。(Mellanox OFED での推奨)
これは、認証要求 SRP_LOGIN_REQ に使われる PortID のフォーマットを、
"接続先 SRP Target の Port GUID を Byte 単位で逆に並べた値 (8byte)" + "SRP Initiator 側の Port GUID (8byte)"
の形にします。
今回のシステムでは、
SRP Target 側の ACL では、このことを考慮した設定が必要です。
SRP Target に接続すると、Target 側で割り当てた LUN が、SCSI デバイスとして認識されます。
後はこのブロックデバイスに parted 等でパーティションを作成し、ファイルシステムにマウントします。
kernel は 3.10.0-229.11.1.el7 にアップデート済みです。
デフォルトでは /tmp にログとともに出力されますが、ここでは $HOME に出力することにします。
作成された MLNX_OFED_LINUX-3.0-2.0.1-rhel7.1-x86_64-ext.tgz を展開して、現在の kernerl バージョン (3.10.0-229.11.1.el7) に対応していることを確認します。
インストールします。
一緒に Firmware のアップデートも試行されますが、今回使用した HCA は Mellanox 純正ではなく、OEM のため失敗します。これは無視してかまいません。
インストールが完了したら、テストユーティリティで HCA をチェックしてみましょう。
Infiniband 関連のモジュールを有効にするためには、openibd サービスを起動します。
事前に openib.conf を変更して、SRP モジュールも有効にしておきます。
openibd サービスは既に有効化されているので、systemctl または OS リブートで起動します。
Infiniband ファブリックには Subnet Manager が 1つは存在している必要がありますが、今回は ストレージ側で Subnet Manager を稼働させていますので、Subnet Manager (opensmd) は起動させません。
Mellanox OFED の opensmd は、systemd に対応していないので、systemctl ではなく従来の chkconfig で設定を行います。(chkconfig opensmd off で無効化する)
これで Infiniband のセットアップが終わりました。
QSFP ケーブルを接続して、Link 状態を確認してみます。
QDR 40Gb/s で Link Up しました。
SRP Initiator
次は SRP でストレージ (SRP Target) にアクセスします。
SRP Target への接続には、Mellanox OFED の srp_daemon を使います。
srp_daemon は Inifiniband ファブリックで定期的に SRP Target を探索し、見つかったら接続します。
テストのため、デーモンとしてではなく 1度のみ実行するには、-o を付けます。
Mellanox OFED の srpd サービスを有効にすると、OS 起動時に srp_daemon をデーモンとして起動し、SRP Target に自動的に接続します。以後は定期的 (デフォルトでは 60秒ごと) に SRP Target を探索します。
srpd サービスは、systemd ではなく chkconfig で設定となり、起動スクリプトは /etc/rc.d/init.d/srpd です。
このスクリプトで /usr/sbin/srp_daemon.sh が実行され、そこから srp_daemon が実行されます。
(ステータスは systemctl で参照可能)
上記を見ると、srp_daemon が -n を付けて実行されているのがわかります。
-n は SRP Initiator から SRP Target へ接続する時に、拡張オプション (initiator_ext) を使用することを示します。(Mellanox OFED での推奨)
これは、認証要求 SRP_LOGIN_REQ に使われる PortID のフォーマットを、
"接続先 SRP Target の Port GUID を Byte 単位で逆に並べた値 (8byte)" + "SRP Initiator 側の Port GUID (8byte)"
の形にします。
今回のシステムでは、
- 接続先 SRP Target の Port GUID ... 0x0002c903000f826d
- 接続元 SRP Initiator の Port GUID ... 0x0002c903000f81e1
SRP Target 側の ACL では、このことを考慮した設定が必要です。
SRP Target に接続すると、Target 側で割り当てた LUN が、SCSI デバイスとして認識されます。
これで普通のローカルデバイスと同様に利用できるようになりました。
後はこのブロックデバイスに parted 等でパーティションを作成し、ファイルシステムにマウントします。
0 件のコメント:
コメントを投稿