Linux 用 NVMeのTCPプロビジョニング - ONTAP に関する FSx

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

Linux 用 NVMeのTCPプロビジョニング

FSx for は、 TCP (NVMe/TCP) ブロックストレージプロトコルを介した不揮発性メモリエクスプレスONTAPをサポートします。NVMe/ ではTCP、 を使用して名前空間とサブシステムONTAPCLIをプロビジョニングし、その名前空間をサブシステムにマッピングします。これは、i のイニシエータグループ (igroups) にLUNsプロビジョニングおよびマッピングする方法と同様ですSCSI。NVMe/TCP プロトコルは、高可用性 (HA) ペア が 6 つ以下の第 2 世代ファイルシステムで使用できます。

注記

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

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

  1. Linux ホストにNVMeクライアントをインストールして設定します。

  2. ファイルシステムの NVMeで を設定しますSVM。

    • NVMe 名前空間を作成します。

    • NVMe サブシステムを作成します。

    • 名前空間をサブシステムにマッピングします。

    • クライアントをサブシステムNQNに追加します。

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

開始する前に

ファイルシステムを NVMe/ に設定するプロセスを開始する前にTCP、次の項目を完了する必要があります。

  • ONTAP ファイルシステムの FSx を作成します。詳細については、「ファイルシステムの作成」を参照してください。

  • Red Hat Enterprise Linux (RHEL) 9.3 を実行するEC2インスタンスをファイルシステムVPCと同じ に作成します。これは Linux 用 NVMe/TCP を使用してファイルデータを設定NVMeしてアクセスする Linux ホストです。

    これらの手順の範囲を超えて、ホストが別の にある場合はVPC、VPCピアリングまたは を使用して、ボリュームの iSCSI エンドポイントへの他のVPCsアクセス AWS Transit Gateway を許可できます。詳細については、「デプロイの外部からデータにアクセスする VPC」を参照してください。

  • の説明に従って、インバウンドトラフィックとアウトバウンドトラフィックを許可するように Linux ホストVPCのセキュリティグループを設定しますAmazon によるファイルシステムのアクセスコントロール VPC

  • へのアクセスに使用するfsxadmin権限を持つONTAPユーザーの認証情報を取得しますONTAPCLI。詳細については、「ONTAP ロールとユーザー」を参照してください。

  • FSx ONTAP ファイルシステムの にアクセスするために設定NVMeし、使用する Linux ホストは、同じ VPCと にあります AWS アカウント。

  • EC2 インスタンスは、ファイルシステムの優先サブネットと同じアベイラビリティーゾーンに配置することをお勧めします。

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

Linux ホストNVMeに をインストールして設定する

NVMe クライアントをインストールするには
  1. SSH クライアントを使用して Linux インスタンスに接続します。詳細については、「 を使用して Linux または macOS から Linux インスタンスに接続するSSH」を参照してください。

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

    ~$ sudo yum install -y nvme-cli
  3. nvme-tcp モジュールをホストにロードします。

    $ sudo modprobe nvme-tcp
  4. 次のコマンドを使用して、Linux ホストのNVMe修飾名 (NQN) を取得します。

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

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

ONTAP ファイルシステムの FSx NVMeで を設定する

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

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

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

    [~]$ ssh fsxadmin@management_endpoint_ip

    詳細については、「CLI ONTAP を使用したファイルシステムの管理」を参照してください。

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

    ::> vol create -vserver fsx -volume nvme_vol1 -aggregate aggr1 -size 1t [Job 597] Job succeeded: Successful
  3. vserver nvme namespace create NetApp ONTAP CLI コマンドns_1を使用してNVMe名前空間を作成します。名前空間はイニシエータ (クライアント) にマッピングされ、どのイニシエータ (クライアント) がNVMeデバイスにアクセスできるかを制御します。

    ::> vserver nvme namespace create -vserver fsx -path /vol/nvme_vol1/ns_1 -size 100g -ostype linux Created a namespace of size 100GB (107374182400).
  4. vserver nvme subsystem create NetApp ONTAP CLI コマンドを使用してNVMeサブシステムを作成します。

    ~$ vserver nvme subsystem create -vserver fsx -subsystem sub_1 -ostype linux
  5. 作成したサブシステムに名前空間をマッピングします。

    ::> vserver nvme subsystem map add -vserver fsx -subsystem sub_1 -path /vol/nvme_vol1/ns_1
  6. 以前に取得した を使用してNQN、クライアントをサブシステムに追加します。

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

    このサブシステムにマッピングされたデバイスを複数のホストで使用できるようにする場合は、カンマ区切りのリストで複数のイニシエータ名を指定できます。詳細については、「 Docs」の「 vserver nvme サブシステムホストの追加 NetApp ONTAP」を参照してください。

  7. vserver nvme namespace show コマンドを使用して、名前空間が存在することを確認します。

    ::> 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.
  8. network interface show -vserver コマンドを使用して、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_1 の IP アドレスは 172.31.16.19、iscsi_2 は 172.31.26.134 です。

Linux クライアントにNVMeデバイスをマウントする

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

  1. NVMe ノードの検出

  2. NVMe デバイスのパーティション化

  3. NVMe デバイスをクライアントにマウントする

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

ターゲットNVMeノードを検出するには
  1. Linux クライアントで、次のコマンドを使用してターゲットNVMeノードを検出します。置換 iscsi_1_IP iscsi_1の IP アドレス、および client_IP クライアントの IP アドレス。

    注記

    iscsi_1iscsi_2LIFsは、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
  2. (オプション) ファイルNVMeデバイスへの Amazon EC2単一クライアントの最大 5 Gb/秒 (~625 MB/秒) よりも高いスループットを実現するには、Linux EC2インスタンス用 Amazon Elastic Compute Cloud ユーザーガイドの「Amazon インスタンスのネットワーク帯域幅」に記載されている手順に従って、追加のセッションを確立します。

  3. コントローラーの損失タイムアウトが 1,800 秒以上のターゲットイニシエータにログインし、再度 iscsi_1の IP アドレスを使用します。iscsi_1_IP および のクライアントの IP アドレス client_IP。 NVMe デバイスは使用可能なディスクとして表示されます。

    ~$ sudo nvme connect-all -t tcp -w client_IP -a iscsi_1 -l 1800
  4. 次のコマンドを使用して、NVMeスタックが複数のセッションを特定してマージし、マルチパスを設定済みであることを確認します。設定が成功Yすると、 コマンドは を返します。

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

    ~$ 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
  6. 次のコマンドを使用して、名前空間がホストで作成され、正しく検出されていることを確認します。

    ~$ 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 のインストールによって異なる場合があります。

  7. 各パスのコントローラーの状態がライブで、非対称名前空間アクセス (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 を自動的に検出しました。

  8. 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_name へのパスnvme2n1が存在することを確認します。

    ~$ ls /dev/mapper/nvme2n1 /dev/nvme2n1
  2. 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_name の形式は <device_name><partition_number>。 は、前のステップの fdisk コマンドでパーティション番号として使用1されました。

  3. パスとして /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. ディレクトリを作成する directory_path を Linux インスタンス上のファイルシステムのマウントポイントとして使用します。

    ~$ sudo mkdir /directory_path/mount_point
  2. 次のコマンドを使用してファイルシステムをマウントします。

    ~$ sudo mount -t ext4 /dev/nvme2n1 /directory_path/mount_point
  3. (オプション) マウントディレクトリの所有権を特定のユーザーに付与する場合は、username 所有者のユーザー名を入力します。

    ~$ sudo chown username:username /directory_path/mount_point
  4. (オプション) ファイルシステムとの間でデータの読み取りと書き込みができることを確認します。

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

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