Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
適用先 SUSE Linux Enterprise Server 12 SP4

16 NVMe over Fabric

この章では、NVMe over Fabricホストおよびターゲットの設定方法について説明します。

16.1 概要

NVM Express (NVMe)は、不揮発性ストレージ(通常はSSDディスク)にアクセスするためのインタフェース規格です。NVMeはSATAをはるかに上回る処理速度をサポートし、レイテンシも低くなります。

NVMe over Fabricは、RDMAやNVMe over Fibre Channel (FC-NVMe)などの異なるネットワーキングファブリックを介してNVMeストレージにアクセスするためのアーキテクチャです。NVMe over Fabricの機能はiSCSIと同様です。耐障害性を向上させるため、NVMe over Fabricにはマルチパスのサポートが組み込まれています。NVMe over Fabricマルチパスは、従来のデバイスマッパーマルチパスに基づいていません。

NVMeホストは、NVMeターゲットに接続するマシンです。NVMeターゲットは、そのNVMeブロックデバイスを共有するマシンです。

NVMeはSUSE Linux Enterprise Server 12 SP4でサポートされています。NVMeブロックストレージおよびNVMe over Fabricターゲットとホストには、専用のカーネルモジュールが用意されています。

ご使用のハードウェアに関する特別な考慮事項があるかどうかを確認するには、16.4項 「特定のハードウェアの設定」を参照してください。

16.2 NVMe over Fabricホストの設定

NVMe over Fabricを使用するには、サポートされているネットワーキング方法のいずれかでターゲットを使用可能にする必要があります。NVMe over Fibre ChannelおよびRDMAがサポートされています。以降のセクションでは、ホストをNVMeターゲットに接続する方法について説明します。

16.2.1 コマンドラインクライアントのインストール

NVMe over Fabricを使用するには、nvmeコマンドラインツールが必要です。インストールするには、zypperを実行します。

tux > sudo zypper in nvme-cli

すべての使用可能なサブコマンドを一覧にするには、nvme --helpを使用します。nvmeサブコマンド用のマニュアルページが提供されています。man nvme-SUBCOMMANDを実行すると、このページを参照できます。たとえば、discoverサブコマンドのマニュアルページを参照するには、man nvme-discoverを実行します。

16.2.2 NVMe over Fabricターゲットの検出

NVMe over Fabricターゲットで使用可能なNVMeサブシステムを一覧にするには、検出コントローラのアドレスとサービスIDが必要です。

tux > sudo nvme discover -t TRANSPORT -a DISCOVERY_CONTROLLER_ADDRESS -s SERVICE_ID

TRANSPORTは、基盤となる転送メディア(looprdma、またはfc)で置き換えます。DISCOVERY_CONTROLLER_ADDRESSは、検出コントローラのアドレスで置き換えます。RDMAの場合、これはIPv4アドレスである必要があります。SERVICE_IDは、転送サービスIDで置き換えます。RDMAのように、サービスがIPベースの場合、サービスIDはポート番号を指定します。ファイバチャネルの場合、サービスIDは必要ありません。

NVMeホストは、接続が許可されているサブシステムのみを参照します。

例:

tux > sudo nvme discover -t rdma -a 10.0.0.1 -s 4420

詳細については、man nvme-discoverを参照してください。

16.2.3 NVMe over Fabricターゲットへの接続

NVMeサブシステムを特定した後で、nvme connectコマンドを使用して接続できます。

tux > sudo nvme connect -t transport -a DISCOVERY_CONTROLLER_ADDRESS -s SERVICE_ID -n SUBSYSTTEM_NQN

TRANSPORTは、基盤となる転送メディア(looprdma、またはfc)で置き換えます。DISCOVERY_CONTROLLER_ADDRESSは、検出コントローラのアドレスで置き換えます。RDMAの場合、これはIPv4アドレスである必要があります。SERVICE_IDは、転送サービスIDで置き換えます。RDMAのように、サービスがIPベースの場合、これはポート番号を指定します。SUBSYSTEM_NQNは、検出コマンドによって検出された、目的のサブシステムのNVMe修飾名で置き換えます。NQNは、NVMe修飾名(NVMe Qualified Name)の略語です。NQNは固有である必要があります。

例:

tux > sudo nvme connect -t rdma -a 10.0.0.1 -s 4420 -n nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432

または、nvme connect-allを使用して、すべての検出されたネームスペースに接続します。高度な使用法については、man nvme-connectおよびman nvme-connect-allを参照してください。

16.2.4 マルチパス処理

NVMeネイティブマルチパス処理はデフォルトで有効になっています。マルチパスデバイスのレイアウトを印刷するには、nvme list-subsysコマンドを使用します。NVMeネイティブマルチパス処理を無効にするには、ブートパラメータとしてnvme-core.multipath=Nを追加します。

16.3 NVMe over Fabricターゲットの設定

16.3.1 コマンドラインクライアントのインストール

NVMe over Fabricターゲットを設定するには、nvmetcliコマンドラインツールが必要です。インストールするには、zypperを実行します。

tux > sudo zypper in nvmetcli

nvmetcliの現在のドキュメントはhttp://git.infradead.org/users/hch/nvmetcli.git/blob_plain/HEAD:/Documentation/nvmetcli.txtから入手できます。

16.3.2 設定手順

次の手順に、NVMe over Fabricターゲットの設定方法の例を示します。

設定はツリー構造で格納されます。移動するには、cdコマンドを使用します。オブジェクトを一覧にするには、lsを使用します。createを使用して新しいオブジェクトを作成できます。

  1. nvmectliインタラクティブシェルを起動します。

    tux > sudo nvmetcli
  2. 新しいポートを作成します。

    (nvmetcli)> cd ports
    (nvmetcli)> create 1
    (nvmetcli)> ls 1/
    o- 1
      o- referrals
      o- subsystems
  3. NVMeサブシステムを作成します。

    (nvmetcli)> cd /subsystems
    (nvmetcli)> create nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
    (nvmetcli)> cd nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82/
    (nvmetcli)> ls
    o- nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
      o- allowed_hosts
      o- namespaces
  4. 新しいネームスペースを作成し、そのネームスペースにNVMeデバイスを設定します。

    (nvmetcli)> cd namespaces
    (nvmetcli)> create 1
    (nvmetcli)> cd 1
    (nvmetcli)> set device path=/dev/nvme0n1
    Parameter path is now '/dev/nvme0n1'.
  5. 以前に作成したネームスペースを有効にします。

    (nvmetcli)> cd ..
    (nvmetcli)> enable
    The Namespace has been enabled.
  6. 作成したネームスペースを表示します。

    (nvmetcli)> cd ..
    (nvmetcli)> ls
    o- nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
      o- allowed_hosts
      o- namespaces
        o- 1
  7. すべてのホストがサブシステムを使用できるようにします。この操作は、セキュリティ保護された環境でのみ実行します。

    (nvmetcli)> set attr allow_any_host=1
    Parameter allow_any_host is now '1'.

    または、特定のホストのみが接続できるようにします。

    (nvmetcli)> cd nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82/allowed_hosts/
    (nvmetcli)> create hostnqn
  8. すべての作成されたオブジェクトを一覧にします。

    (nvmetcli)> cd /
    (nvmetcli)> ls
    o- /
      o- hosts
      o- ports
      | o- 1
      |   o- referrals
      |   o- subsystems
      o- subsystems
        o- nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
          o- allowed_hosts
          o- namespaces
            o- 1
  9. RDMAを介してターゲットを使用できるようにします。

    (nvmetcli)> cd ports/1/
    (nvmetcli)> set addr adrfam=ipv4 trtype=rdma traddr=10.0.0.1 trsvcid=4420
    Parameter trtype is now 'rdma'.
    Parameter adrfam is now 'ipv4'.
    Parameter trsvcid is now '4420'.
    Parameter traddr is now '10.0.0.1'.

    または、ファイバチャネルを介して使用可能にすることができます。

    (nvmetcli)> cd ports/1/
    (nvmetcli)> set addr adrfam=fc trtype=fc traddr=nn-0x1000000044001123:pn-0x2000000055001123 trsvcid=none

16.3.3 ターゲット設定のバックアップと復元

次のコマンドを使用してJSONファイルにターゲット設定を保存できます。

tux > sudo nvmetcli
(nvmetcli)> saveconfig nvme-target-backup.json

設定を復元するには、次のコマンドを使用します。

(nvmetcli)> restore nvme-target-backup.json

現在の設定を消去することもできます。

(nvmetcli)> clear

16.4 特定のハードウェアの設定

16.4.1 概要

一部のハードウェアでは、正しく動作させるために特殊な設定が必要です。次の各セクションの見出しを参照し、記載されているデバイスまたはベンダのいずれかに該当しないか確認してください。

16.4.2 Broadcom

Broadcom Emulex LightPulse Fibre Channel SCSIドライバを使用している場合は、lpfcモジュールのターゲットおよびホスト上にカーネル設定パラメータを追加します。

tux > sudo echo "options lpfc lpfc_enable_fc4_type=3" > /etc/modprobe.d/lpfc.conf

Broadcomアダプタファームウェアのバージョンが11.2.156.27以降であることを確認します。現在のバージョンの nvme-clinvmetlci 、およびカーネルがインストールされていることも確認してください。

ファイバチャネルポートをNVMeターゲットとして有効にするには、モジュールパラメータlpfc_enable_nvmet= COMMA_SEPARATED_WWPNSを設定します。一覧表示されているWWPNのみがターゲットモードに設定されます。ファイバチャネルポートは、ターゲットまたはイニシエータとして設定できます。

詳細については、https://docs.broadcom.com/docs/12379413も参照してください。

16.5 詳細情報

nvmeの機能の詳細については、nvme nvme-helpを参照してください。

次のリンクには、NVMeおよびNVMe over Fabricの概要があります。

このページを印刷