本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
TCP为 Linux 配置NVMe/
FSxfo ONTAP r 支持非易失性存储器 Express o TCP ver (NVMe/TCP) block storage protocol. With NVMe/TCP,你可以使用 ONTAP CLI配置命名空间和子系统,然后将命名空间映射到子系统,类似于 i 的配置和映射到启动器组 (igroup) 的方式LUNs。SCSINVMe/TCP协议适用于具有 6 个或更少的高可用性 (HA) 对的第二代文件系统。
注意
FSx对于ONTAP文件系统,对于 i SCSI 和NVMe/TCP块存储协议使用 an SVM's i SCSI 端点。
在您的 Amazon TCP FSx 上配置 NVMe /有三个主要步骤 NetApp ONTAP,这些步骤包含在以下步骤中:
在 Linux 主机上安装和配置NVMe客户端。
在文件系统NVMe上进行配置SVM。
创建NVMe命名空间。
创建NVMe子系统。
将命名空间映射到子系统。
将客户端NQN添加到子系统。
在 Linux 客户端上安装NVMe设备。
开始前的准备工作
在开始为 NVMe /配置文件系统之前TCP,需要完成以下各项。
FSx为ONTAP文件系统创建一个。有关更多信息,请参阅 创建文件系统。
在文件系统中创建运行红帽企业 Linux (RHEL) 9.3 VPC 的EC2实例。这是 Linux 主机,您将在该主机上使用NVMe/TCPfor Linux配置NVMe和访问您的文件数据。
除了这些步骤的范围之外,如果主机位于另一个主机上VPC,则可以使用对VPC等互连或 Amazon Transit Gateway 向其他人授予对卷的 i SCSI 端点的VPCs访问权限。有关更多信息,请参阅 从部署外部访问数据 VPC。
配置 Linux 主机的VPC安全组以允许入站和出站流量,如中所述使用 Amazon 进行文件系统访问控制 VPC。
获取凭证 ONTAP 具有访问
fsxadmin
权限的用户 ONTAP CLI(有关更多信息,请参阅 ONTAP 角色和用户。)要为ONTAP文件系统配置NVMe并用于访问的 Linux 主机位于同一个VPC和 Amazon Web Services 账户。FSx
我们建议该EC2实例与您的文件系统的首选子网位于同一个可用区。
如果您的EC2实例运行的 Linux AMI 与 RHEL 9.3 不同,则这些过程和示例中使用的一些实用程序可能已经安装完毕,您可能需要使用不同的命令来安装所需的软件包。除了安装软件包外,本节中使用的命令还适用于其他 EC2 Linux AMIs。
在 Linux 主机NVMe上安装和配置
安装 NVMe 客户端
-
使用SSH客户端连接到您的 Linux 实例。有关更多信息,请参阅使用从 Linux 或 macOS 连接到你的 Linux 实例。SSH
-
使用以下命令安装
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
请记录响应,以便在后续步骤中使用。
在 for ONTAP 文件系统NVMe上FSx进行配置
在文件系统NVMe上配置
连接到您计划在其上创建NVMe设备的ONTAP文件系统上的。 NetApp ONTAP CLI FSx
要访问 ONTAP CLI,通过运行以下命令在 Amazon NetApp ONTAP 文件FSx系统的管理端口上建立会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 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).
-
使用
vserver nvme subsystem create
NetApp ONTAPCLI命令创建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
如果要将映射到此子系统的设备供多个主机使用,您可以在逗号分隔列表中指定多个启动程序名称。有关更多信息,请参阅文档中的 vserver nvme 子系统主机添加
。 NetApp ONTAP -
使用 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于 i SCSI 和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用于 i SCSI 和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单一客户端(最大值 5Gb/s (~625 MB/s)的吞吐量,请按照《适用于 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方案 172.31.26.
iscsi_2
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设备。