

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Linux 用の NVMe/TCP のプロビジョニング
<a name="provision-nvme-linux"></a>

FSx for ONTAP は、TCP (NVMe/TCP) ブロックストレージプロトコルによる非揮発性メモリエクスプレスをサポートしています。NVMe/TCP では、ONTAP CLI を使用して名前空間とサブシステムをプロビジョニングし、LUN のプロビジョニング方法や iSCSI のイニシエータグループ (igroup) へのマッピング方法と同様に、名前空間をサブシステムにマッピングします。NVMe/TCP プロトコルは、[高可用性 (HA) ペア](HA-pairs.md)が 6 つ以下の第 2 世代ファイルシステムで使用できます。

**注記**  
FSx for ONTAP ファイルシステムは、iSCSI と NVMe/TCP ブロックストレージプロトコルの両方で SVM の iSCSI エンドポイントを使用します。

Amazon FSx for NetApp ONTAP で NVMe/TCP を設定するプロセスには、主に 3 つのステップがあります。これらのステップについては、次の手順で説明します。

1. Linux ホストの NVMe クライアントをインストールおよび設定します。

1. ファイルシステムの SVM で NVMe を設定します。
   + NVMe 名前空間を作成します。
   + NVMe サブシステムを作成します。
   + 名前空間をサブシステムにマッピングします。
   + クライアント NQN をサブシステムに追加します。

1. Linux クライアントに NVMe デバイスをマウントします。

## 開始する前に
<a name="nvme-tcp-linux-byb"></a>

ファイルシステムを NVMe/TCP に設定するプロセスを開始する前に、次の項目を完了しておく必要があります。
+ FSx for ONTAP ファイルシステムを作成します。詳細については、「[ファイルシステムの作成](creating-file-systems.md)」を参照してください。
+ Red Hat Enterprise Linux (RHEL) 9.3 を実行する EC2 インスタンスをファイルシステムと同じ VPC に作成します。これは、NVMe を設定し、NVMe/TCP for Linux を使用してファイルデータにアクセスする NVMe ホストです。

  これらの手順の範囲を超えて、ホストが別のVPCにある場合は、VPC ピアリングまたは AWS Transit Gateway を使用して、他の VPC にボリュームの iSCS Iエンドポイントへのアクセスを許可できます。詳細については、「[デプロイ用の VPC の外部からのデータへのアクセス](supported-fsx-clients.md#access-from-outside-deployment-vpc)」を参照してください。
+ [Amazon VPC によるファイルシステムアクセスコントロール](limit-access-security-groups.md) で説明されているように、インバウンドトラフィックとアウトバウンドトラフィックを許可するように Linux ホストの VPC セキュリティグループを設定します。
+ ONTAP CLI へのアクセスに使用する `fsxadmin` 権限を持つ ONTAP ユーザーの認証情報を取得します。詳細については、「[ONTAP ロールとユーザー](roles-and-users.md)」を参照してください。
+ NVMe 向けに設定し、FSx for ONTAP ファイルシステムにアクセスするために使用する Linux ホストは、同じ VPC と AWS アカウント にあります。
+ EC2インスタンスはファイルシステムの優先サブネットと同じアベイラビリティーゾーンにあることをお勧めします。

EC2 インスタンスが RHEL 9.3 とは異なる Linux AMI を実行している場合、これらの手順や例で使用されるユーティリティの一部がすでにインストールされている可能性があり、異なるコマンドを使用して必要なパッケージをインストールできます。パッケージのインストールを除いて、このセクションで使用されるコマンドは他の EC2 Linux AMI で有効です。

**Topics**
+ [開始する前に](#nvme-tcp-linux-byb)
+ [Linux ホストに NVMe をインストールして設定する](#configure-nvme-on-rhel93)
+ [FSx for ONTAP ファイルシステムで NVMe を設定する](#configure-nvme-on-svm)
+ [Linux クライアントに NVMe デバイスをマウントする](#add-nvme-on-rhel93-host)

## Linux ホストに NVMe をインストールして設定する
<a name="configure-nvme-on-rhel93"></a>

**NVMe クライアントをインストールするには**

1. SSH クライアントを使用して Linux インスタンスに接続します。詳細については、「[SSH を使用して Linux または macOS から Linux インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html)」を参照してください。

1. 次のコマンドを使用して `nvme-cli` をインストールします。

   ```
   ~$ sudo yum install -y nvme-cli
   ```

1. `nvme-tcp` モジュールをホストにロードします。

   ```
   $ sudo modprobe nvme-tcp
   ```

1. 次のコマンドを使用して、Linux ホストの NVMe 修飾名 (NQN) を取得します。

   ```
   $ cat /etc/nvme/hostnqn
   nqn.2014-08.org.nvmexpress:uuid:9ed5b327-b9fc-4cf5-97b3-1b5d986345d1
   ```

   後のステップで使用するレスポンスを記録します。

## FSx for ONTAP ファイルシステムで NVMe を設定する
<a name="configure-nvme-on-svm"></a>

**ファイルシステムで NVMe を設定するには**

NVMe デバイス (複数可) を作成する予定の FSx for ONTAP ファイルシステムの NetApp ONTAP CLI に接続します。

1. ONTAPCLI にアクセスするには、次のコマンドを実行して、Amazon FSx for NetApp ONTAP ファイルシステムまたは SVM の管理ポートで SSH セッションを確立します。`management_endpoint_ip` をファイルシステムの管理ポートの IP アドレスに置き換えます。

   ```
   [~]$ ssh fsxadmin@management_endpoint_ip
   ```

   詳細については、「[ONTAP CLI を使用したファイルシステムの管理](managing-resources-ontap-apps.md#fsxadmin-ontap-cli)」を参照してください。

1. NVMe インターフェイスへのアクセスに使用する SVM に新しいボリュームを作成します。

   ```
   ::> vol create -vserver fsx -volume nvme_vol1 -aggregate aggr1 -size 1t
        [Job 597] Job succeeded: Successful
   ```

1. [https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-create.html](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-create.html) NetApp ONTAP CLI コマンドを使用して NVMe 名前空間 `ns_1` を作成します。名前空間はイニシエータ (クライアント) にマッピングされ、どのイニシエータ (クライアント) が NVMe デバイスにアクセスできるかを制御します。

   ```
   ::> vserver nvme namespace create -vserver fsx -path /vol/nvme_vol1/ns_1 -size 100g -ostype linux
   Created a namespace of size 100GB (107374182400).
   ```

1. [https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-create.html](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-create.html) NetApp ONTAP CLI コマンドを使用して NVMe サブシステムを作成します。

   ```
   ~$ vserver nvme subsystem create -vserver fsx -subsystem sub_1 -ostype linux
   ```

1. 作成したサブシステムに名前空間をマッピングします。

   ```
   ::> vserver nvme subsystem map add -vserver fsx -subsystem sub_1 -path /vol/nvme_vol1/ns_1
   ```

1. 以前に取得した NQN を使用して、クライアントをサブシステムに追加します。

   ```
   ::> vserver nvme subsystem host add -subsystem sub_1 -host-nqn nqn.2014-08.org.nvmexpress:uuid:ec21b083-1860-d690-1f29-44528e4f4e0e -vserver fsx
   ```

   このサブシステムにマッピングされたデバイスを複数のホストで使用できるようにする場合は、コンマ区切りのリストで複数のイニシエーター名を指定できます。詳細については、NetApp ONTAP Docs の「[vserver nvme サブシステムホスト追加](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-host-add.html)」を参照してください。

1. [https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-show.html](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-show.html) コマンドを使用して、名前空間が存在することを確認します。

   ```
   ::> vserver nvme namespace show -vserver fsx -instance
   Vserver Name: fsx
               Namespace Path: /vol/nvme_vol1/ns_1
                         Size: 100GB
                    Size Used: 90.59GB
                      OS Type: linux
                      Comment: 
                   Block Size: 4KB
                        State: online
            Space Reservation: false
   Space Reservations Honored: false
                 Is Read Only: false
                Creation Time: 5/20/2024 17:03:08
               Namespace UUID: c51793c0-8840-4a77-903a-c869186e74e3
                     Vdisk ID: 80d42c6f00000000187cca9
         Restore Inaccessible: false
      Inconsistent Filesystem: false
          Inconsistent Blocks: false
                       NVFail: false
   Node Hosting the Namespace: FsxId062e9bb6e05143fcb-01
                  Volume Name: nvme_vol1
                   Qtree Name: 
             Mapped Subsystem: sub_1
               Subsystem UUID: db526ec7-16ca-11ef-a612-d320bd5b74a9               
                 Namespace ID: 00000001h
                 ANA Group ID: 00000001h
                 Vserver UUID: 656d410a-1460-11ef-a612-d320bd5b74a9
                   Vserver ID: 3
                  Volume MSID: 2161388655
                  Volume DSID: 1029
                    Aggregate: aggr1
               Aggregate UUID: cfa8e6ee-145f-11ef-a612-d320bd5b74a9
    Namespace Container State: online
           Autodelete Enabled: false
             Application UUID: -
                  Application: -
     Has Metadata Provisioned: true
     
   1 entries were displayed.
   ```

1. [https://docs.netapp.com/us-en/ontap-cli-9141/network-interface-show.html](https://docs.netapp.com/us-en/ontap-cli-9141/network-interface-show.html) コマンドを使用して、NVMe デバイスを作成した SVM のブロックストレージインターフェイスのアドレスを取得します。

   ```
   ::> network interface show -vserver svm_name -data-protocol nvme-tcp
               Logical               Status     Network            Current                    Current Is 
   Vserver     Interface             Admin/Oper Address/Mask       Node                       Port    Home
   ----------- ----------            ---------- ------------------ -------------              ------- ----
   svm_name
               iscsi_1               up/up      172.31.16.19/20    FSxId0123456789abcdef8-01  e0e     true
               iscsi_2               up/up      172.31.26.134/20   FSxId0123456789abcdef8-02  e0e     true
   2 entries were displayed.
   ```
**注記**  
`iscsi_1` LIF は iSCSI と NVMe/TCP の両方に使用されます。

   この例では、iscsi\$11 の IP アドレスは 172.31.16.19、iscsi\$12 は 172.31.26.134 です。

## Linux クライアントに NVMe デバイスをマウントする
<a name="add-nvme-on-rhel93-host"></a>

Linux クライアントに NVMe デバイスをマウントするプロセスには、次の 3 つのステップがあります。

1. NVMe ノードの検出

1. NVMe デバイスのパーティション分割

1. クライアントへの NVMe デバイスのマウント

これらについては、以下の手順で説明します。

**ターゲット NVMe ノードを検出するには**

1. Linux クライアントで、次のコマンドを使用して、ターゲット NVMe ノードを検出します。*`iscsi_1_IP`* を `iscsi_1` の IP アドレスに、*`client_IP`* をクライアントの IP アドレスに置き換えます。
**注記**  
`iscsi_1` および `iscsi_2` LIFsは、iSCSI ストレージと NVMe ストレージの両方に使用されます。

   ```
   ~$ sudo nvme discover -t tcp -w client_IP -a iscsi_1_IP
   ```

   ```
   Discovery Log Number of Records 4, Generation counter 11
   =====Discovery Log Entry 0======
   trtype:  tcp
   adrfam:  ipv4
   subtype: current discovery subsystem
   treq:    not specified
   portid:  0
   trsvcid: 8009
   subnqn:  nqn.1992-08.com.netapp:sn.656d410a146011efa612d320bd5b74a9:discovery
   traddr:  172.31.26.134
   eflags:  explicit discovery connections, duplicate discovery information
   sectype: none
   =====Discovery Log Entry 1======
   trtype:  tcp
   adrfam:  ipv4
   subtype: current discovery subsystem
   treq:    not specified
   portid:  1
   trsvcid: 8009
   subnqn:  nqn.1992-08.com.netapp:sn.656d410a146011efa612d320bd5b74a9:discovery
   traddr:  172.31.16.19
   eflags:  explicit discovery connections, duplicate discovery information
   sectype: none
   ```

1. (オプション) ファイル NVMe デバイスに対して Amazon EC2 シングルクライアントの最大 5 Gbps (\$1625 MBps) よりも高いスループットを実現するには、Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイドの[ Amazon EC2 インスタンスのネットワーク帯域幅](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html)で説明されている手順に従って、追加のセッションを確立します。

1. コントローラ損失タイムアウトが 1800 秒以上のターゲットイニシエータにログインします。この場合も、*`iscsi_1_IP`* の `iscsi_1`の IP アドレスと *`client_IP`* のクライアントの IP アドレスを使用します。NVMe デバイスは使用可能なディスクとして表示されます。

   ```
   ~$ sudo nvme connect-all -t tcp -w client_IP -a iscsi_1 -l 1800
   ```

1. 次のコマンドを使用して、NVMe スタックが複数のセッションを識別してマージし、マルチパスを設定済みであることを確認します。設定が正常に完了すると、コマンドが `Y` を返します。

   ```
   ~$ cat /sys/module/nvme_core/parameters/multipath
   Y
   ```

1. 次のコマンドを使用して、NVMe-oF 設定 `model` が `NetApp ONTAP Controller` に設定され、使用可能なすべてのパスで I/O を分散するために、各 ONTAP 名前空間の負荷分散 `iopolicy` が `round-robin` に設定されていることを確認します。

   ```
   ~$ cat /sys/class/nvme-subsystem/nvme-subsys*/model
   Amazon Elastic Block Store              
   NetApp ONTAP Controller
   ~$ cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy
   numa
   round-robin
   ```

1. 次のコマンドを使用して、名前空間が作成され、ホストで正しく検出されていることを確認します。

   ```
   ~$ sudo nvme list
   Node                  Generic               SN                   Model                                    Namespace  Usage                      Format           FW Rev  
   --------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- --------
   /dev/nvme0n1          /dev/ng0n1            vol05955547c003f0580 Amazon Elastic Block Store               0x1         25.77  GB /  25.77  GB    512   B +  0 B   1.0     
   /dev/nvme2n1          /dev/ng2n1            lWB12JWY/XLKAAAAAAAC NetApp ONTAP Controller                  0x1        107.37  GB / 107.37  GB      4 KiB +  0 B   FFFFFFFF
   ```

   出力の新しいデバイスは `/dev/nvme2n1` です。この命名スキームは、Linux のインストールによって異なる場合があります。

1. 各パスのコントローラの状態がライブで、適切な非対称名前空間アクセス (ANA) マルチパスステータスであることを確認します。

   ```
   ~$ nvme list-subsys /dev/nvme2n1
   nvme-subsys2 - NQN=nqn.1992-08.com.netapp:sn.656d410a146011efa612d320bd5b74a9:subsystem.rhel
                  hostnqn=nqn.2014-08.org.nvmexpress:uuid:ec2a70bf-3ab2-6cb0-f997-8730057ceb24
                  iopolicy=round-robin
   \
    +- nvme2 tcp traddr=172.31.26.134,trsvcid=4420,host_traddr=172.31.25.143,src_addr=172.31.25.143 live non-optimized
    +- nvme3 tcp traddr=172.31.16.19,trsvcid=4420,host_traddr=172.31.25.143,src_addr=172.31.25.143 live optimized
   ```

   この例では、NVMe スタックはファイルシステムの代替 LIF、`iscsi_2`、172.31.26.134 を自動的に検出しました。

1. NetApp プラグインが各 ONTAP 名前空間デバイスに正しい値を表示していることを確認します。

   ```
   ~$ sudo nvme netapp ontapdevices -o column
   Device           Vserver                   Namespace Path                                     NSID UUID                                   Size     
   ---------------- ------------------------- -------------------------------------------------- ---- -------------------------------------- ---------
   /dev/nvme2n1     fsx                       /vol/nvme_vol1/ns_1                                1    0441c609-3db1-4b0b-aa83-790d0d448ece   107.37GB
   ```

**デバイスをパーティション分割するには**

1. 次のコマンドを使用して、device\$1name `nvme2n1` へのパスが存在することを確認します。

   ```
   ~$ ls /dev/mapper/nvme2n1
   /dev/nvme2n1
   ```

1. `fdisk` を使用してディスクをパーティション分割します。インタラクティブなプロンプトを入力します。表示されている順序でオプションを入力します。最後のセクター (この例では `20971519`) よりも小さい値を使用して、複数のパーティションを作成できます。
**注記**  
`Last sector` 値は、NVMe デバイスのサイズ (この例では 100 GiB) によって異なります。

   ```
   ~$ sudo fdisk /dev/mapper/nvme2n1
   ```

   `fsdisk` インタラクティブプロンプトが起動します。

   ```
   Welcome to fdisk (util-linux 2.37.4). 
   Changes will remain in memory only, until you decide to write them. 
   Be careful before using the write command. 
   
   Device does not contain a recognized partition table. 
   Created a new DOS disklabel with disk identifier 0x66595cb0. 
   
   Command (m for help): n
   Partition type 
      p primary (0 primary, 0 extended, 4 free) 
      e extended (container for logical partitions) 
   Select (default p): p
   Partition number (1-4, default 1): 1 
   First sector (256-26214399, default 256): 
   Last sector, +sectors or +size{K,M,G,T,P} (256-26214399, default 26214399): 20971519
                                       
   Created a new partition 1 of type 'Linux' and of size 100 GiB.
   Command (m for help): w
   The partition table has been altered.
   Calling ioctl() to re-read partition table. 
   Syncing disks.
   ```

   `w` を入力すると、新しいパーティション `/dev/nvme2n1` が使用可能になります。*partition\$1name* の形式は *<device\$1name>**<partition\$1number>*です。前のステップの `fdisk` コマンドのパーティション番号として、`1` が使用されました。

1. パスとして `/dev/nvme2n1` を使用してファイルシステムを作成します。

   ```
   ~$ sudo mkfs.ext4 /dev/nvme2n1
   ```

   システムは次の出力でレスポンスします。

   ```
   mke2fs 1.46.5 (30-Dec-2021)
   Found a dos partition table in /dev/nvme2n1
   Proceed anyway? (y,N) y
   Creating filesystem with 26214400 4k blocks and 6553600 inodes
   Filesystem UUID: 372fb2fd-ae0e-4e74-ac06-3eb3eabd55fb
   Superblock backups stored on blocks: 
       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
       4096000, 7962624, 11239424, 20480000, 23887872
   
   Allocating group tables: done                            
   Writing inode tables: done                            
   Creating journal (131072 blocks): done
   Writing superblocks and filesystem accounting information: done
   ```

**Linux クライアントに NVMe をマウントするには**

1. Linux インスタンスのファイルシステムのマウントポイントとしてディレクトリ *directory\$1path* を作成します。

   ```
   ~$ sudo mkdir /directory_path/mount_point
   ```

1. 次のコマンドを使用してファイルシステムをマウントします。

   ```
   ~$ sudo mount -t ext4 /dev/nvme2n1 /directory_path/mount_point
   ```

1. (オプション) マウントディレクトリの特定のユーザーに所有権を付与する場合は、*`username`* を所有者のユーザー名に置き換えます。

   ```
   ~$ sudo chown username:username /directory_path/mount_point
   ```

1. (オプション) ファイルシステムとの間でデータの読み取りと書き込みができることを確認します。

   ```
   ~$ echo "Hello world!" > /directory_path/mount_point/HelloWorld.txt
   ~$ cat directory_path/HelloWorld.txt
   Hello world!
   ```

   これで、Linux クライアントに NVMe デバイスが正常に作成されてマウントされました。