本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 有三个主要步骤,以下过程将介绍这些步骤:
在 Linux 主机上安装和配置 NVMe 客户端。
在文件系统的 SVM NVMe 上进行配置。
创建 NVMe 命名空间。
创建 NVMe 子系统。
将命名空间映射到子系统。
将客户端 NQN 添加到子系统。
在 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 客户端
-
使用 SSH 客户端连接到 Linux 实例。有关更多信息,请参阅使用 SSH 从 Linux 或 macOS 连接到 Linux 实例。
-
使用以下命令安装
nvme-cli
:~$
sudo yum install -y nvme-cli -
将
nvme-tcp
模块加载到主机上:$
sudo modprobe nvme-tcp
-
使用以下命令获取 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。
要访问 ONTAP CLI,通过运行以下命令在 Amazon FSx for NetApp ONTAP 文件系统或 SVM 的管理端口上建立 SSH 会话。将
替换为文件系统管理端口的 IP 地址。management_endpoint_ip
[~]$
ssh fsxadmin@
management_endpoint_ip
有关更多信息,请参阅 使用管理文件系统 ONTAP CLI。
-
在用于访问 NVMe 接口的 SVM 上创建一个新卷。
::>
vol create -vserver fsx -volume nvme_vol1 -aggregate aggr1 -size 1t
[Job 597] Job succeeded: Successful
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).
-
使用
vserver nvme subsystem create
NetApp ONTAP CLI 命令创建 NVMe 子系统。 ~$
vserver nvme subsystem create -vserver fsx -subsystem sub_1 -ostype linux
-
将命名空间映射至刚才创建的子系统。
::>
vserver nvme subsystem map add -vserver fsx -subsystem sub_1 -path /vol/nvme_vol1/ns_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
如果要将映射到此子系统的设备供多个主机使用,您可以在逗号分隔列表中指定多个启动程序名称。有关更多信息,请参阅 ONTAP 文档中的虚拟服务器 nvme 子系统主机添加
。 NetApp -
使用 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.
使用 network interface show -vserver
命令检索在其中创建 NVMe 设备的 SVM 的块存储接口的地址。 ::>
network interface show -vserver
svm_name
-data-protocol nvme-tcpLogical 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 的 IP 地址为 172.31.26.134。
在 Linux 客户端上安装 NVMe 设备
在 Linux 客户端上安装 NVMe 设备的过程包括三个步骤:
发现节 NVMe 点
对设备进行分 NVMe 区
在客户端上安装 NVMe 设备
以下过程将详述这些步骤。
发现目标 NVMe 节点
在您的 Linux 客户端上,使用以下命令来发现目标 NVMe 节点。将
替换为iscsi_1_IP
iscsi_1
的 IP 地址以及
客户端的 IP 地址。client_IP
注意
iscsi_1
并用iscsi_2
LIFs 于 iSCSI 和 NVMe 存储。~$
sudo nvme discover -t tcp -w
client_IP
-aiscsi_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
-
(可选)要为您的文件 NVMe 设备带来高于亚马逊 EC2 单一客户端 5 Gbps(约 625 MBps)的吞吐量,请按照《适用于 Linux EC2 实例的亚马逊弹性计算云用户指南》中亚马逊实例网络带宽中描述的步骤来建立其他会话。
-
在控制器断开超时至少达到 1800 秒的情况下,再次使用
iscsi_1
的 IP 地址(
)和客户端的 IP 地址(iscsi_1_IP
)登录目标启动器。您的 NVMe 设备显示为可用磁盘。client_IP
~$
sudo nvme connect-all -t tcp -w
client_IP
-aiscsi_1
-l 1800 使用以下命令验证 NVMe 堆栈是否已识别并合并了多个会话并配置了多路径。如果配置成功,则命令会返回确认
Y
。~$
cat /sys/module/nvme_core/parameters/multipath
Y使用以下命令验证相应的 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
使用以下命令验证是否在主机上创建并正确发现了命名空间。
~$
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 安装情况,此命名方案可能会有所不同。验证每条路径的控制器状态是否处于活动状态,以及是否具有正确的非对称命名空间访问 (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。-
验证 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
对设备进行分区
-
使用以下命令验证您的 device_name
nvme2n1
路径是否存在。~$
ls /dev/mapper/nvme2n1
/dev/nvme2n1
使用
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
命令中用作分区号。-
使用
/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 设备
-
在 Linux 实例上创建一个目录
directory_path
作为文件系统的挂载点。~$
sudo mkdir /
directory_path
/mount_point
-
使用以下命令挂载文件系统。
~$
sudo mount -t ext4 /dev/nvme2n1 /
directory_path
/mount_point
-
(可选)如果要向特定用户授予挂载目录的所有权,请将
替换为拥有者的用户名。username
~$
sudo chown
username
:username
/directory_path
/mount_point
-
(可选)验证您是否可以从文件系统读取数据和将数据写入文件系统。
~$
echo "Hello world!" > /
directory_path
/mount_point
/HelloWorld.txt~$
cat
directory_path
/HelloWorld.txtHello world!
您已在 Linux 客户端上成功创建并安装了 NVMe 设备。