使用 iscsiadm 和多路径阻止会话

使用 iscsiadm 和多路径阻止会话

我有一个 CentOS 服务器集群,它们都通过 iSCSI 连接到 NAS 设备。我需要添加的最新 NAS 是 LenovoEMC px4-400r。在此 Lenovo NAS 上,当启用 iSCSI 时,它会在所有网络接口上启用。在 Lenovo 方面,无法仅在一个网络接口上禁用 iSCSI。这给我带来了一个问题,因为我有一个管理网络,我不需要 iSCSI 流量。

iSCSI VLAN 为 10.100.100.0/24 和 10.100.101.0/24。管理VLAN为10.50.55.0/24。

我首先执行 iSCSI 发现。

# iscsiadm -m discovery -t st -p 10.100.100.16
10.100.100.16:3260,1 iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0
10.100.101.16:3260,1 iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0
10.50.55.16:3260,1 iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0

正如您所看到的,它发现了所有三个网络上的 iSCSI 目标。如果我照常进行并登录到这些节点,multipathd 将使用所有三个路径。

# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.50.55.16,3260] (multiple)
Logging in to [iface: default, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.100.100.16,3260] (multiple)
Logging in to [iface: default, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.100.101.16,3260] (multiple)
Login to [iface: default, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.50.55.16,3260] successful.
Login to [iface: default, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.100.100.16,3260] successful.
Login to [iface: default, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.100.101.16,3260] successful.
# multipath -ll
mpathj (35005907fe5a778fb) dm-3 SCST_FIO,lun0
size=7.2T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 4:0:0:0  sdc 8:32  active ready running
|-+- policy='round-robin 0' prio=1 status=active
| `- 9:0:0:0  sdt 65:48 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 10:0:0:0 sdu 65:64 active ready running

我研究了将 multipath.conf 中的路径列入黑名单的可能性,但我没有看到将路径列入黑名单的方法,只有整个设备。当我尝试时,多路径根本不会为该 NAS 创建路径。

我找到但无法正常工作的最有可能的解决方案是将管理网络上的 iSCSI 会话设置为“手动”登录。我这样做了:

iscsiadm -m node -T iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0 -p 10.50.55.16 -o update -n node.startup -v manual

然后我注销该会话并确保 iSCSI VLAN 上的会话仍然存在:

# iscsiadm -m node -u -T iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0 -p 10.50.55.16:3260
Logging out of session [sid: 9, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.50.55.16,3260]
Logout of [sid: 9, target: iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0, portal: 10.50.55.16,3260] successful.
# iscsiadm -m session
tcp: [10] 10.100.100.16:3260,1 iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0 (non-flash)
tcp: [11] 10.100.101.16:3260,1 iqn.2012-07.com.lenovoemc:storage.onapp-lenovo.lun0 (non-flash)

这有效,但只是暂时的,直到发生以下任一情况:

  • 我通过以下方式登录更多目标iscsiadm -m node -l
  • 服务器已重新启动

有谁知道永久阻止同一 LUN 的 iSCSI 会话的好方法吗?

答案1

您可以使用的一种方法是将iptables过滤器添加到您的INPUT防火墙OUTPUT链中(在您的链中适当放置):

-A INPUT -s 10.50.55.0/24 -p tcp -m tcp --sport 3260 -j DROP
-A OUTPUT -d 10.50.55.0/24 -p tcp -m -tcp --dport 3260 -j DROP

这将是一个最小的更改,因此不会阻止管理网络上的其他计算机访问 iSCSI LUN。我能立即想到的唯一其他方法是在 NAS 的管理接口前面放置一个桥接服务器/防火墙,其唯一的工作就是过滤那里的 iSCSI 流量。

相关内容