![使用 iscsiadm 和多路径阻止会话](https://linux22.com/image/126507/%E4%BD%BF%E7%94%A8%20iscsiadm%20%E5%92%8C%E5%A4%9A%E8%B7%AF%E5%BE%84%E9%98%BB%E6%AD%A2%E4%BC%9A%E8%AF%9D.png)
我有一个 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 流量。