Linux 用 NVMe のプロビジョニング - FSx for ONTAP

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

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

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

これらの手順で示されている例は、FSx for ONTAP ファイルシステムおよび Linux クライアントで NVMe /TCP ブロックストレージをセットアップし、次の設定を使用する方法を示しています。

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

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

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

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

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

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

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

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

  • Red Hat Enterprise Linux (RHEL) 9.3 を実行する EC2 インスタンスを作成します。これは、NVMe を設定する Linux ホストになります。

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

  • ONTAP CLI へのアクセスに使用するfsxadmin権限を持つONTAPユーザーの認証情報がわかっています。

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

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

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

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

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

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

  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

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

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

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

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

  1. NetApp ONTAP CLI にアクセスするには、次のコマンドを実行して、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 コマンドrhelを使用して NVMe 名前空間を作成します。名前空間はイニシエータ (クライアント) にマッピングされ、どのイニシエータ (クライアント) が NVMe デバイスにアクセスできるかを制御します。

    ::> vserver nvme namespace create -vserver fsx -path /vol/nvme_vol1/rhel -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 rhel -ostype linux
  5. 作成したサブシステムに名前空間をマッピングします。

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

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

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

  7. vserver nvme 名前空間 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: rhel 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 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 デバイスをマウントする

ターゲット iSCSI ノードを検出する
  1. Linux クライアントで、 の IP アドレスiscsi_1_IPiscsi_1のクライアントの IP アドレスを使用して、次のコマンドを使用してターゲット iSCSI ノードを検出しますclient_IPiscsi_1 および iscsi_2 LIF は、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. (オプション) ファイルシステムを使用して追加のセッションを確立できます。Amazon EC2 のシングルフロートラフィックの帯域幅制限は 5 Gb/秒 (〜625 MB / 秒) ですが、複数のセッションを作成して、単一のクライアントからファイルシステムに高レベルのスループットをもたらすことができます。詳細については、Linux インスタンス用 Amazon EC2 インスタンスのネットワーク帯域幅」を参照してください。

  3. コントローラーの損失タイムアウトが 1800 秒以上になるようにターゲットイニシエータにログインします。この場合も、 の 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 スタックが複数のセッションを特定してマージし、マルチパスが設定されていることを確認します。

    ~$ cat /sys/module/nvme_core/parameters/multipath Y
  5. 各ONTAP名前空間の NVMe -oF 設定modelが に設定NetApp ONTAP Controllerされ、ロードバランシングiopolicyround-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
  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 を使用してディスクをパーティション分割します。インタラクティブなプロンプトを入力します。表示されている順序でオプションを入力します。Last sector 値は NVMe デバイスのサイズ (この例では 100 GiB) によって異なることに注意してください。最後のセクター (この例では 20971519) よりも小さい値を使用して、複数のパーティションを作成できます。

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

    ~$ 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 デバイスが正常に作成およびマウントされました。