选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

为 Lin NVMe ux 配置 /TCP

聚焦模式
为 Lin NVMe ux 配置 /TCP - FSx 适用于 ONTAP

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

FSx 对于 ONTAP 支持基于 TCP 的非易失性存储器 Express(NVMe/TCP) block storage protocol. With NVMe/TCP,你可以使用 ONTAP CLI 用于配置命名空间和子系统,然后将命名空间映射到子系统,类似于 iSCSI 的配置和映射到启动器组 (igroup) 的方式 LUNs 。 NVMe/TCP 协议适用于具有 6 个或更少的高可用性 (HA) 对的第二代文件系统。

注意

FSx 对于 ONTAP 文件系统,将 SVM 的 iSCSI 端点用于 iSCSI 和 NVMe /TCP 块存储协议。

在 Amazon FSx for NetApp ONTA NVMe P 上配置 /TCP 有三个主要步骤,以下过程将介绍这些步骤:

  1. 在 Linux 主机上安装和配置 NVMe 客户端。

  2. 在文件系统的 SVM NVMe 上进行配置。

    • 创建 NVMe 命名空间。

    • 创建 NVMe 子系统。

    • 将命名空间映射到子系统。

    • 将客户端 NQN 添加到子系统。

  3. 在 Linux 客户端上安装 NVMe 设备。

开始前的准备工作

在开始为 NVMe /TCP 配置文件系统之前,需要完成以下各项。

  • 创建 FSx 适用于 ONTAP 的文件系统。有关更多信息,请参阅 创建文件系统

  • 在文件系统所在的 VPC 中创建运行红帽企业 Linux (RHEL) 9.3 的 EC2 实例。这是 Linux 主机,您将在该主机上使用适用于 Linux 的 NVMe /TCP 配置 NVMe 和访问您的文件数据。

    在这些步骤的范围之外,如果主机位于其他 VPC 中,则可以使用 VPC 对等或 AWS Transit Gateway 向其他人授予对该卷的 iSCSI 终端节点的 VPCs 访问权限。有关更多信息,请参阅 从部署 VPC 外部访问数据

  • 配置 Linux 主机的 VPC 安全组,允许入站和出站流量,如 使用 Amazon VPC 进行文件系统访问控制 中所述。

  • 获取凭证 ONTAP 具有访问fsxadmin权限的用户 ONTAP CLI。有关更多信息,请参阅 ONTAP 角色和用户

  • 您将为其配置 NVMe 并用于访问适用于 ONTAP 文件系统的 Linux 主机位于同一 VPC 和 AWS 账户。 FSx

  • 我们建议该 EC2 实例与您的文件系统的首选子网位于同一个可用区。

如果您的 EC2 实例运行的 Linux AMI 与 RHEL 9.3 不同,则这些过程和示例中使用的一些实用程序可能已经安装完毕,您可能需要使用不同的命令来安装所需的软件包。除了安装软件包外,本节中使用的命令还适用于其他 EC2 Linux AMIs。

在 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

    请记录响应,以便在后续步骤中使用。

在 ONTAP 文件系统 NVMe 上 FSx 进行配置

在文件系统 NVMe 上配置

在 NetApp 您计划创建 NVMe 设备的 fo FSx r ONTAP 文件系统上连接到 ONTAP CLI。

  1. 要访问 ONTAP CLI,通过运行以下命令在 Amazon FSx for NetApp ONTAP 文件系统或 SVM 的管理端口上建立 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 ONTAP CLI 命令创建 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

    如果要将映射到此子系统的设备供多个主机使用,您可以在逗号分隔列表中指定多个启动程序名称。有关更多信息,请参阅 ONTAP 文档中的虚拟服务器 nvme 子系统主机添加。 NetApp

  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_1LIF 同时用于 iSCSI 和 NVMe /TCP。

    在此示例中,iscsi_1 的 IP 地址为 172.31.16.19,iscsi_2 的 IP 地址为 172.31.26.134。

在 Linux 客户端上安装 NVMe 设备

在 Linux 客户端上安装 NVMe 设备的过程包括三个步骤:

  1. 发现节 NVMe 点

  2. 对设备进行分 NVMe 区

  3. 在客户端上安装 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
  2. (可选)要为您的文件 NVMe 设备带来高于亚马逊 EC2 单一客户端 5 Gbps(约 625 MBps)的吞吐量,请按照《适用于 Linux 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 堆栈是否已识别并合并了多个会话并配置了多路径。如果配置成功,则命令会返回确认 Y

    ~$ cat /sys/module/nvme_core/parameters/multipath Y
  5. 使用以下命令验证相应的 NVMe-oF 设置model是否设置为NetApp ONTAP Controller,负载平衡iopolicy是否设置round-robin为 ONTAP 用于在所有可用路径上分发 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. 在 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 设备。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。