Making NVMe-TCP connections persistent ensures that storage is automatically available after system reboots without manual intervention. This page covers the complete configuration including network interfaces, IP addressing, and automatic connection setup.
Pre-requisites:
Before configuring persistent connections, ensure:
- Network interfaces are configured with static IP addresses.
- NVMe kernel modules are loaded on boot.
- Host NQN is generated and registered with FlashArray.
- Network connectivity to the storage portals is verified.
Configuration Summary
By following these steps, you have:
- Configured network interfaces with static IPs in
/etc/network/interfaces. - Configured ARP for multipath (
/etc/sysctl.d/99-nvme-tcp-arp.conf). This prevents ARP responses on wrong interface, which is critical for same-subnet multipath. - Configured NVMe kernel modules to load on boot (
/etc/modules-load.d/nvme-tcp.conf). - Enabled Multipath (
/etc/modprobe.d/nvme-tcp.conf). - Generated and saved Host NQN (
/etc/nvme/hostnqn). - Created the discovery configuration (
/etc/nvme/discovery.confor/etc/nvme/config.d/*.conf). - Enabled the nvmf-autoconnect service.
- Created the IO policy udev rule (
/etc/udev/rules.d/99-nvme-iopolicy.rules). - Tested the configuration with a reboot.
Troubleshooting Persistent Connections:
-
Connections not restored after reboot:
# Check service status systemctl status nvmf-autoconnect.service # View service logs journalctl -u nvmf-autoconnect.service -b # Manually trigger connection nvme connect-all # Check for errors dmesg | grep nvme -
Wrong interface or IP being used:
# Verify discovery.conf has correct interface names and IPs cat /etc/nvme/discovery.conf # For VLAN interfaces, ensure VLAN interface names are used (e.g., ens1f0.100) # For physical interfaces, use physical interface names (e.g., ens1f0) # Check that host-traddr matches the IP configured on host-iface ip addr show ens1f0 ip addr show ens1f1 -
Paths missing after reboot:
# Check network interfaces are up ip link show # Verify IP addresses are assigned ip addr show # Test connectivity to storage portals ping -c 3 10.100.1.10 # Manually connect missing paths nvme connect -t tcp -a 10.100.1.10 -s 4420 -n <SUBSYSTEM_NQN> \ --host-iface=ens1f0 --host-traddr=10.100.1.101 \ --ctrl-loss-tmo=1800 --reconnect-delay=10 -
Intermittent connection issues or asymmetric routing:
# Check ARP configuration sysctl net.ipv4.conf.ens1f0.arp_ignore sysctl net.ipv4.conf.ens1f1.arp_ignore # Expected: 2 # If not set correctly, apply ARP configuration sysctl -p /etc/sysctl.d/99-nvme-tcp-arp.conf # Monitor ARP traffic to verify correct behavior tcpdump -i ens1f0 arp & tcpdump -i ens1f1 arp & # Each interface should only respond to ARP for its own IP # Check for ARP cache issues ip neigh show # Clear ARP cache if needed ip neigh flush all
Why ARP issues cause problems:
- Storage array may cache wrong MAC address for an IP.
- Traffic may be sent to one interface but routed through another.
- May break multipath path selection.
- May cause intermittent connection failures.