Ubuntu 24.04 设置 NVMe over TCP 连接到 PowerFlex 4.6 详细步骤 前提条件Dell PowerFlex 4.6 存储系统已配置好 NVMe over TCP 目标端Ubuntu 24.04 LTS 主机作为 Initiator网络连通性已确认建议使用高速网络如 25GbE/100GbE已获取 PowerFlex 存储端的 NQN、IP 地址、端口等信息第一部分Ubuntu 24.04 主机端配置1. 安装必要的软件包# 更新系统sudo apt update sudo apt upgrade -y# 安装 nvme-cli 工具sudo apt install -y nvme-cli# 确认版本nvme version2. 加载内核模块# 加载 NVMe over TCP 所需的内核模块sudo modprobe nvmesudo modprobe nvme-coresudo modprobe nvme-fabricssudo modprobe nvme-tcp# 验证模块已加载lsmod | grep nvme3. 设置模块开机自动加载# 创建模块自动加载配置文件sudo tee /etc/modules-load.d/nvme-tcp.conf EOFnvmenvme-corenvme-fabricsnvme-tcpEOF4. 配置主机 NQNHost NQN# 查看系统自动生成的 Host NQNcat /etc/nvme/hostnqn# 如果文件不存在生成一个sudo mkdir -p /etc/nvmesudo nvme gen-hostnqn | sudo tee /etc/nvme/hostnqn# 查看生成的 NQNcat /etc/nvme/hostnqn输出示例nqn.2014-08.org.nvmexpress:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx第二部分网络配置优化1. 配置网络接口Netplan 示例network:version: 2ethernets:# NVMe/TCP 专用网络接口根据实际接口名称修改ens192:addresses:- 192.168.100.10/24mtu: 9000 # 推荐启用巨型帧dhcp4: falseroutes: []# 如有第二条路径多路径场景ens224:addresses:- 192.168.200.10/24mtu: 9000dhcp4: falseroutes: []# 应用网络配置sudo netplan apply# 验证 MTU 设置ip link show ens1922. TCP 网络性能调优sudo tee -a /etc/sysctl.d/99-nvme-tcp.conf EOF# NVMe/TCP 网络调优net.core.rmem_max 16777216net.core.wmem_max 16777216net.core.rmem_default 1048576net.core.wmem_default 1048576net.ipv4.tcp_rmem 4096 1048576 16777216net.ipv4.tcp_wmem 4096 1048576 16777216net.core.netdev_max_backlog 30000net.ipv4.tcp_timestamps 1net.ipv4.tcp_sack 1net.ipv4.tcp_window_scaling 1EOF# 应用参数sudo sysctl --system3. 验证网络连通性# Ping PowerFlex 存储端 NVMe/TCP 目标 IPping -c 4 192.168.100.1 # PowerFlex SDT 端 IP路径1ping -c 4 192.168.200.1 # PowerFlex SDT 端 IP路径22. 配置 NVMe Hosts / Host GroupsPowerFlex Manager UI:→ NVMe → Hosts→ Add Host→ 输入 Ubuntu 主机的 Host NQN从 /etc/nvme/hostnqn 获取→ 设置 Host 名称3. 创建并映射 VolumePowerFlex Manager UI:→ Volumes → Create Volume→ 设置容量、名称、存储池→ 将 Volume 映射到对应的 NVMe Host4. 记录 Target 信息从 PowerFlex 管理界面获取以下关键信息| 参数 | 示例值 ||------|--------|| Target NQN | nqn.2014-08.com.dell:powerflex:xxxxx || Target IPSDT 端口地址| 192.168.100.1, 192.168.200.1 || Transport Port | 4420默认端口 || Transport Type | tcp |第四部分发现并连接 NVMe Subsystem1. 发现 NVMe over TCP 目标# 发现存储端的 NVMe subsystem单路径sudo nvme discover -t tcp -a 192.168.100.1 -s 4420示例输出Discovery Log Number of Records 1, Generation counter 1Discovery Log Entry 0trtype: tcpadrfam: ipv4subtype: nvme subsystemtreq: not requiredportid: 0trsvcid: 4420subnqn: nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxxtraddr: 192.168.100.1sectype: none# 发现第二条路径如配置多路径sudo nvme discover -t tcp -a 192.168.200.1 -s 4420Dell PowerFlex 4.6 存储系统已配置好 NVMe over TCP 目标端Ubuntu 24.04 LTS 主机作为 Initiator网络连通性已确认建议使用高速网络如 25GbE/100GbE已获取 PowerFlex 存储端的 NQN、IP 地址、端口等信息3. 验证网络连通性# Ping PowerFlex 存储端 NVMe/TCP 目标 IPping -c 4 192.168.100.1 # PowerFlex SDT 端 IP路径1ping -c 4 192.168.200.1 # PowerFlex SDT 端 IP路径2第三部分PowerFlex 4.6 存储端配置1. 在 PowerFlex Manager 中启用 NVMe/TCP登录PowerFlex ManagerWeb UI进入Storage→Protection Domains→ 选择目标 Protection Domain确认SDTStorage Data Target已部署并配置2. 连接到 NVMe Subsystem单路径连接sudo nvme connect \-t tcp \-a 192.168.100.1 \-s 4420 \-n nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxx \--hostnqn$(cat /etc/nvme/hostnqn) \--hostid$(cat /etc/nvme/hostid)多路径连接推荐# 连接路径 1sudo nvme connect \-t tcp \-a 192.168.100.1 \-s 4420 \-n nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxx \--hostnqn$(cat /etc/nvme/hostnqn) \--hostid$(cat /etc/nvme/hostid) \--ctrl-loss-tmo3600 \--reconnect-delay10# 连接路径 2sudo nvme connect \-t tcp \-a 192.168.200.1 \-s 4420 \-n nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxx \--hostnqn$(cat /etc/nvme/hostnqn) \--hostid$(cat /etc/nvme/hostid) \--ctrl-loss-tmo3600 \--reconnect-delay10| 参数 | 说明 ||------|------|| -t tcp | 传输类型为 TCP || -a | 目标 IP 地址SDT 地址 || -s 4420 | 目标服务端口默认 4420 || -n | 目标子系统 NQN || --ctrl-loss-tmo | 控制器丢失超时时间秒-1 为永不放弃 || --reconnect-delay | 自动重连间隔秒 |3. 使用 connect-all 批量连接# 通过 discover 自动连接所有发现的 subsystemsudo nvme connect-all \-t tcp \-a 192.168.100.1 \-s 4420 \--ctrl-loss-tmo3600 \--reconnect-delay10可以写个脚本信息第五部分验证连接1. 查看已连接的 NVMe 控制器sudo nvme list通常的显示案例Node SN Model Namespace Usage Format-------------- ---------------- ---------------------- --------- -------------- --------/dev/nvme0n1 XXXXXXXX Dell PowerFlex 1 107.37 GB 512 B 0 B2. 查看详细控制器信息# 列出所有 NVMe 控制器sudo nvme list-subsys# 查看特定控制器详情sudo nvme id-ctrl /dev/nvme0# 查看命名空间信息sudo nvme id-ns /dev/nvme0n13. 验证多路径状态sudo nvme list-subsys多路径输出示例nvme-subsys0 - NQNnqn.2014-08.com.dell:powerflex:xxxxxxx\- nvme0 tcp traddr192.168.100.1,trsvcid4420 live- nvme1 tcp traddr192.168.200.1,trsvcid4420 live4. 检查 NVMe 原生多路径# 确认 NVMe 原生多路径已启用cat /sys/module/nvme_core/parameters/multipath# 输出应为 Y如果未启用# 启用 NVMe 原生多路径echo options nvme_core multipathY | sudo tee /etc/modprobe.d/nvme-multipath.conf# 更新 initramfs 并重启sudo update-initramfs -usudo reboot第六部分配置持久化连接开机自动连接方法一使用 nvme connect-all 配置文件推荐# 创建持久化发现配置sudo mkdir -p /etc/nvmesudo tee /etc/nvme/discovery.conf EOF# PowerFlex Path 1-t tcp -a 192.168.100.1 -s 4420# PowerFlex Path 2-t tcp -a 192.168.200.1 -s 4420EOF方法二使用 systemd 服务sudo tee /etc/systemd/system/nvme-tcp-connect.service EOF[Unit]DescriptionNVMe over TCP Connection to PowerFlexAfternetwork-online.targetWantsnetwork-online.target[Service]TypeoneshotRemainAfterExityes# 路径 1ExecStart/usr/sbin/nvme connect -t tcp -a 192.168.100.1 -s 4420 -n nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxx --ctrl-loss-tmo3600 --reconnect-delay10# 路径 2ExecStart/usr/sbin/nvme connect -t tcp -a 192.168.200.1 -s 4420 -n nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxx --ctrl-loss-tmo3600 --reconnect-delay10# 断开连接ExecStop/usr/sbin/nvme disconnect-all[Install]WantedBymulti-user.targetEOF# 启用服务sudo systemctl daemon-reloadsudo systemctl enable nvme-tcp-connect.servicesudo systemctl start nvme-tcp-connect.service# 查看状态sudo systemctl status nvme-tcp-connect.service方法三使用 nvme-cli 内置的 udev/systemd 自动连接# 持久化发现控制器nvme-cli 2.x 支持sudo nvme discover -t tcp -a 192.168.100.1 -s 4420 --persistentsudo nvme discover -t tcp -a 192.168.200.1 -s 4420 --persistent# 启用 nvme 自动连接服务sudo systemctl enable nvmefc-boot-connections.servicesudo systemctl enable nvmf-autoconnect.service第七部分文件系统和使用1. 分区和格式化# 查看新的 NVMe 设备lsblk# 创建分区可选sudo fdisk /dev/nvme0n1# 格式化为 ext4 或 xfssudo mkfs.ext4 /dev/nvme0n1# 或sudo mkfs.xfs /dev/nvme0n12. 挂载# 创建挂载点sudo mkdir -p /mnt/powerflex# 挂载sudo mount /dev/nvme0n1 /mnt/powerflex# 配置 fstab 持久挂载使用 UUIDUUID$(sudo blkid -s UUID -o value /dev/nvme0n1)echo UUID$UUID /mnt/powerflex ext4 _netdev,defaults 0 0 | sudo tee -a /etc/fstab第八部分监控与故障排查1. 实时监控# 查看 NVMe 控制器状态sudo nvme list-subsys# 查看控制器健康信息sudo nvme smart-log /dev/nvme0# 查看连接详细信息sudo nvme show-regs /dev/nvme02. 日志检查# 检查内核日志中 NVMe 相关信息sudo dmesg | grep -i nvmesudo journalctl -k | grep -i nvme# 查看系统日志sudo journalctl -u nvme-tcp-connect.service3. 常见故障排查| 问题 | 排查方法 ||------|----------|| discover 无响应 | 检查防火墙sudo ufw allow 4420/tcp检查网络连通性 || connect 失败 | 确认 Host NQN 已在 PowerFlex 端注册 || 设备不可见 | 检查 Volume 是否已映射到 Host || 多路径未生效 | 确认 nvme_core multipathY检查 nvme list-subsys || 性能不佳 | 检查 MTU、TCP 调优参数、网络带宽 || 连接中断后未恢复 | 确认 --ctrl-loss-tmo 和 --reconnect-delay 参数 |4. 断开连接# 断开特定控制器sudo nvme disconnect -n nqn.2014-08.com.dell:powerflex:xxxxxxxxxxxxxxx# 断开所有连接sudo nvme disconnect-all第九部分防火墙配置# 如果使用 UFWsudo ufw allow 4420/tcp comment NVMe over TCPsudo ufw allow 8009/tcp comment NVMe Discovery# 如果使用 iptablessudo iptables -A INPUT -p tcp --dport 4420 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 8009 -j ACCEPT