第12章 NVMe over fabric デバイスの概要

Non-volatile Memory Express (NVMe) は、ホストソフトウェアユーティリティーがソリッドステートドライブと通信できるようにするインターフェースです。

次の種類のファブリックトランスポートを使用して、NVMe over fabric デバイスを設定します。

FC および RDMA を使用する場合は、ソリッドステートドライブをシステムにローカルにする必要はありません。また、FC または RDMA コントローラーを介してリモートで設定できます。

12.1. RDMA を使用した NVMe over fabrics

NVMe/RDMA 設定では、NVMe ターゲットおよび NVMe イニシエーターが設定されます。

システム管理者は、次のセクションのタスクを、RDMA (NVMe/RDMA) を使用して NVMe over fabrics をデプロイします。

12.1.1. configfs で NVMe/RDMA ターゲットの設定

この手順に従って、configfs を使用して NVMe/RDMA ターゲットを設定します。

前提条件

  • nvmet サブシステムに割り当てるブロックデバイスがあることを確認します。

手順

  1. nvmet-rdma サブシステムを作成します。

    # modprobe nvmet-rdma
    
    # mkdir /sys/kernel/config/nvmet/subsystems/testnqn
    
    # cd /sys/kernel/config/nvmet/subsystems/testnqn

    testnqn を、サブシステム名に置き換えます。

  2. ホストがこのターゲットに接続することを許可します。

    # echo 1 > attr_allow_any_host
  3. namespace を設定します。

    # mkdir namespaces/10
    
    # cd namespaces/10

    10 を、namespace の数値に置き換えます。

  4. NVMe デバイスへのパスを設定します。

    #echo -n /dev/nvme0n1 > device_path
  5. namespace を有効にします。

    # echo 1 > enable
  6. NVMe ポートでディレクトリーを作成します。

    # mkdir /sys/kernel/config/nvmet/ports/1
    
    # cd /sys/kernel/config/nvmet/ports/1
  7. mlx5_ib0 の IP アドレスを表示します。

    # ip addr show mlx5_ib0
    
    8: mlx5_ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4092 qdisc mq state UP group default qlen 256
        link/infiniband 00:00:06:2f:fe:80:00:00:00:00:00:00:e4:1d:2d:03:00:e7:0f:f6 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
        inet 172.31.0.202/24 brd 172.31.0.255 scope global noprefixroute mlx5_ib0
           valid_lft forever preferred_lft forever
        inet6 fe80::e61d:2d03:e7:ff6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
  8. ターゲットのトランスポートアドレスを設定します。

    # echo -n 172.31.0.202 > addr_traddr
  9. RDMA をトランスポートタイプとして設定します。

    # echo rdma > addr_trtype
    
    # echo 4420 > addr_trsvcid
  10. ポートのアドレスファミリーを設定します。

    # echo ipv4 > addr_adrfam
  11. ソフトリンクを作成します。

    # ln -s /sys/kernel/config/nvmet/subsystems/testnqn   /sys/kernel/config/nvmet/ports/1/subsystems/testnqn

検証手順

  • NVMe ターゲットが指定のポートでリッスンし、接続リクエストの準備ができていることを確認します。

    # dmesg | grep "enabling port"
    [ 1091.413648] nvmet_rdma: enabling port 1 (172.31.0.202:4420)

関連情報

  • man ページの nvme

12.1.2. nvmetcli を使用した NVMe/RDMA ターゲットの設定

nvmetcli を使用して、NVMe ターゲットの編集、表示、および起動を行います。nvmetcli は、コマンドラインとインタラクティブなシェルオプションを提供します。この手順を使用して、nvmetcli により NVMe/RDMA ターゲットを設定します。

前提条件

  • nvmet サブシステムに割り当てるブロックデバイスがあることを確認します。
  • nvmetcli 操作を root ユーザーとして実行します。

手順

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

    # yum install nvmetcli
  2. rdma.json ファイルをダウンロードします。

    # wget http://git.infradead.org/users/hch/nvmetcli.git/blob_plain/0a6b088db2dc2e5de11e6f23f1e890e4b54fee64:/rdma.json
  3. rdma.json ファイルを編集して、traddr の値を 172.31.0.202 に変更します。
  4. NVMe ターゲット設定ファイルを読み込んでターゲットを設定します。

    # nvmetcli restore rdma.json
注記

NVMe ターゲット設定ファイル名を指定しない場合は、nvmetcli/etc/nvmet/config.json ファイルを使用します。

検証手順

  • NVMe ターゲットが指定のポートでリッスンし、接続リクエストの準備ができていることを確認します。

    #dmesg | tail -1
    [ 4797.132647] nvmet_rdma: enabling port 2 (172.31.0.202:4420)
  • (必要に応じて) 現在の NVMe ターゲットを削除します。

    # nvmetcli clear

関連情報

  • man ページの nvmetcli
  • man ページの nvme

12.1.3. NVMe/RDMA クライアントの設定

この手順を使用して、NVMe 管理コマンドラインインターフェース (nvme-cli) ツールを使用して NVMe/RDMA クライアントを設定します。

手順

  1. nvme-cli ツールをインストールします。

    # yum install nvme-cli
  2. nvme-rdma モジュールが読み込まれていない場合は読み込みます。

    # modprobe nvme-rdma
  3. NVMe ターゲットで利用可能なサブシステムを検出します。

    # nvme discover -t rdma -a 172.31.0.202 -s 4420
    
    Discovery Log Number of Records 1, Generation counter 2
    =====Discovery Log Entry 0======
    trtype:  rdma
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified, sq flow control disable supported
    portid:  1
    trsvcid: 4420
    subnqn:  testnqn
    traddr:  172.31.0.202
    rdma_prtype: not specified
    rdma_qptype: connected
    rdma_cms:    rdma-cm
    rdma_pkey: 0x0000
  4. 検出されたサブシステムに接続します。

    # nvme connect -t rdma -n testnqn -a 172.31.0.202 -s 4420
    
    # lsblk
    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda                            8:0    0 465.8G  0 disk
    ├─sda1                         8:1    0     1G  0 part /boot
    └─sda2                         8:2    0 464.8G  0 part
      ├─rhel_rdma--virt--03-root 253:0    0    50G  0 lvm  /
      ├─rhel_rdma--virt--03-swap 253:1    0     4G  0 lvm  [SWAP]
      └─rhel_rdma--virt--03-home 253:2    0 410.8G  0 lvm  /home
    nvme0n1
    
    #cat /sys/class/nvme/nvme0/transport
    rdma

    testnqn を、NVMe サブシステム名に置き換えます。

    172.31.0.202 を、ターゲットの IP アドレスに置き換えます。

    4420 を、ポート番号に置き換えます。

検証手順

  • 現在接続されている NVMe デバイスの一覧を表示します。

    # nvme list
  • (必要に応じて) ターゲットから切断します。

    # nvme disconnect -n testnqn
    NQN:testnqn disconnected 1 controller(s)
    
    # lsblk
    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda                            8:0    0 465.8G  0 disk
    ├─sda1                         8:1    0     1G  0 part /boot
    └─sda2                         8:2    0 464.8G  0 part
      ├─rhel_rdma--virt--03-root 253:0    0    50G  0 lvm  /
      ├─rhel_rdma--virt--03-swap 253:1    0     4G  0 lvm  [SWAP]
      └─rhel_rdma--virt--03-home 253:2    0 410.8G  0 lvm  /home

関連情報


このページには機械翻訳が使用されている場合があります (詳細はこちら)。