佈建NVMe/TCP適用於 Linux - 適用於 ONTAP 的 FSx

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

佈建NVMe/TCP適用於 Linux

FSxfor ONTAP 支援非揮發性記憶體快速超過 TCP (NVMe/TCP) 區塊儲存通訊協定。使用NVMe/時TCP,您可ONTAPCLI以使用佈建命名空間和子系統,然後將命名空間對應至子系統,類似於佈建並對應至 i 的初始器群組 (igroups) 的方式LUNs。SCSINVMe/TCP通訊協定可在具有 6 個以下高可用性 (HA) 配對的第二代檔案系統上使用

注意

FSx對於ONTAP文件系統,使用 i SCSI 和NVMe/TCP塊存儲協議SVM的 i SCSI 端點。

在 Amazon TCP FSx 上設定NVMe/的主要步驟有三個主要步驟 NetApp ONTAP,這些步驟涵蓋在下列程序中:

  1. 在 Linux 主機上安裝和設定NVMe用戶端。

  2. 在檔案系統NVMe上進行配置SVM。

    • 建立NVMe命名空間。

    • 建立子NVMe系統。

    • 將命名空間對應至子系統。

    • 將用戶端新增NQN至子系統。

  3. 在 Linux 用戶NVMe端上掛載裝置。

開始之前

在開始為NVMe/設定檔案系統的程序之前TCP,您必須先完成下列項目。

  • FSx為ONTAP檔案系統建立一個。如需詳細資訊,請參閱建立檔案系統

  • 在檔案系統中建立一個EC2執行 RHEL (RHEL) 9.3 的VPC執行個體。這是 Linux 主機,您將在其上使用NVMe/TCP進行 Linux 配置NVMe和訪問文件數據。

    超出這些程序的範圍,如果主機位於另一個主機VPC,您可以使用VPC對等互連或 AWS Transit Gateway 授與其他對磁碟區 i SCSI 端點的VPCs存取權。如需詳細資訊,請參閱從部署外部存取資料 VPC

  • 將 Linux 主機的VPC安全性群組設定為允許輸入和輸出流量,如中所述使用 Amazon 的檔案系統存取控制 VPC

  • 取得具有存取fsxadmin權限之使用ONTAP者的認證ONTAPCLI。如需詳細資訊,請參閱ONTAP 角色和使用者

  • 您將配置NVMe和用於存取 For ONTAP 檔案系統的 FSx Linux 主機位於相同的VPC和 AWS 帳戶。

  • 建議EC2執行個體與檔案系統偏好的子網路位於相同的可用區域。

如果您的EC2執行個體執行的 Linux 與 RHEL 9.3 AMI 不同,則可能已經安裝了這些程序和範例中使用的部分公用程式,而且您可能會使用不同的指令來安裝必要的套件。除了安裝套件之外,本節中使用的指令對其他 EC2 Linux 也有效AMIs。

在 Linux 主機NVMe上安裝和設定

安裝NVMe用戶端
  1. 使用用SSH戶端 Connect 至您的 Linux 執行個體。如需詳細資訊,請參閱使用以下方式從 Linux 或 macOS Connect 到您的 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

    記錄回應,以便在稍後的步驟中使用。

NVMe在FSx針對ONTAP檔案系統上進行配置

在檔案系統NVMe上進行配置

Connect 至您計劃在其上建立NVMe裝置的 for ONTAP 檔案系統上。 NetApp ONTAP CLI FSx

  1. 若要存取 NetApp ONTAPCLI,請執行下列命令,在 Amazon FSx NetApp ONTAP 檔案系統的管理連接埠上建立SSH工作階段。取代management_endpoint_ip為檔案系統管理連接埠的 IP 位址。

    [~]$ ssh fsxadmin@management_endpoint_ip

    如需詳細資訊,請參閱使用 ONTAP CLI 管理檔案系統

  2. 在您用來存取NVMe介面SVM的磁碟區上建立新磁碟區。

    ::> vol create -vserver fsx -volume nvme_vol1 -aggregate aggr1 -size 1t [Job 597] Job succeeded: Successful
  3. ns_1使用指令建立vserver nvme namespace create NetApp ONTAPCLI命名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 ONTAPCLI指令建立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

    如果您要讓對應至此子系統的裝置可供多台主機使用,您可以在逗號分隔的清單中指定多個啟動器名稱。如需詳細資訊,請參閱文件中的 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命令擷取您SVM在其中建立NVMe裝置之區塊儲存介面的位址。

    ::> 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_1LIF用於 i SCSI 和NVMe/TCP。

    在此範例中,我們的 IP 位址為 172.31.16.19,而我們的 IP 位址為 172.31.26.134。

在 Linux 用戶NVMe端上掛載裝置

在 Linux 用戶端上掛載裝NVMe置的程序包括三個步驟:

  1. 發現節NVMe點

  2. 分割裝NVMe置

  3. 在用戶端上掛載裝NVMe置

這些內容涵蓋在以下程序中。

若要探索目標NVMe節點
  1. 在 Linux 用戶端上,使用下列指令來探索目標NVMe節點。Replace (取代) 國際網路協會 使用iscsi_1的 IP 位址,以及 用戶端 IP 用戶端的 IP 位址。

    注意

    iscsi_1iscsi_2LIFs用於 i SCSI 和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/s (約 625 MB/秒) 的輸送量更高,請遵循 Amazon 執行個體適用於 Linux 執行個體的 Amazon EC2 執行個體網路頻寬使用者指南中所述的程序來建立其他工作階段。

  3. 在控制器遺失逾時至少 1800 秒的情況下登入目標啟動器,再次使用iscsi_1的 IP 位址 國際網路協會 以及用戶端的 IP 位址 用戶端 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及個別ONTAP命名空間的負載平衡iopolicy設定round-robin為,以便在所有可用路徑上散佈 I/O

    ~$ 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堆疊已自動找到您檔案系統的替代檔案系統 LIFiscsi_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>1在上一個步驟中用作fdisk命令中的分割區編號。

  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. (選擇性) 如果您想要提供裝載目錄的特定使用者擁有權,請取代 使用者名稱 與所有者的用戶名。

    ~$ 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置。