CentOS 客户端 - 无法与启动器上的多个接口建立 iSCSI 连接

CentOS 客户端 - 无法与启动器上的多个接口建立 iSCSI 连接

因此,在升级到 CentOS 6.2 后,我似乎无法再登录我的 iSCSI 目标。我在系统的不同子网上有多个接口,我首先想到的是,这可能与我可能没有绑定正确的接口有关,查看 netstat 时似乎就是这种情况,因为这显然是错误的:

[root]⌘ netstat -na|grep .90
tcp        0      1 10.10.100.60:42354          10.10.8.90:3260             SYN_SENT    
tcp        0      1 10.10.100.60:40777          10.10.9.90:3260             SYN_SENT 

然后我继续禁用除一个接口之外的所有接口,因此 netstat 似乎是正确的,但登录问题仍然存在。我确信目标永远不会看到数据包,因为我看不到 SYN_SENT 的任何内容。我知道问题出在我的客户端上,因为目标正在为多个系统提供服务,其中没有一个是 CentOS 6.2。目前,我非常确信 CentOS 6.0/6.1 和 6.2 之间发生了一些变化。所以,如果有人有任何想法,或者遇到过这种情况,我非常想听听你的想法。

[root]⌘ iscsiadm --mode node --targetname iqn.2011-12.dom.homer:01:lab-centos-servers-00001 --portal 10.10.8.90:3260,2 --interface=sw-iscsi-0 --login
Logging in to [iface: sw-iscsi-0, target: iqn.2011-12.dom.homer:01:lab-centos-servers-00001, portal: 10.10.8.90,3260] (multiple)
iscsiadm: Could not login to [iface: sw-iscsi-0, target: iqn.2011-12.dom.homer:01:lab-centos-servers-00001, portal: 10.10.8.90,3260].
iscsiadm: initiator reported error (8 - connection timed out)
iscsiadm: Could not log into all portals


[root]⌘ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.10.8.0       0.0.0.0         255.255.255.0   U         0 0          0 eth2.7
10.10.9.0       0.0.0.0         255.255.255.0   U         0 0          0 eth3.7
10.10.100.0     0.0.0.0         255.255.252.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth2
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth3
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth2.7
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth3.7
0.0.0.0         10.10.100.1     0.0.0.0         UG        0 0          0 eth0

ip addr show涉及的两个接口的输出:

[root]⌘ for i in 2.7 3.7; do ip addr show eth$i; done
6: eth2.7@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:94:5b:8d brd ff:ff:ff:ff:ff:ff
    inet 10.10.8.60/24 brd 10.10.8.255 scope global eth2.7
    inet6 fe80::20c:29ff:fe94:5b8d/64 scope link 
       valid_lft forever preferred_lft forever
7: eth3.7@eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:94:5b:97 brd ff:ff:ff:ff:ff:ff
    inet 10.10.9.60/24 brd 10.10.9.255 scope global eth3.7
    inet6 fe80::20c:29ff:fe94:5b97/64 scope link 
       valid_lft forever preferred_lft forever

2012年1月6日更新:

这个问题似乎一天比一天更有趣了。几周前,我抓取了升级到 6.2 之前的系统快照。我从快照启动了一个新系统,并重新配置了接口信息和主机密钥,以及 iSCSI 启动器和 iscsi 接口信息以匹配新的 MAC。其他什么都没做。

然后,我尝试连接到目标,没有任何问题。我不能说这是意外。然后我继续比较两个系统的 sysctl 设置,升级后存在差异,但似乎与 iSCSI 或 IP 无关,可能导致这种情况。我还注意到,升级后默认每个连接启用两个会话,但我在 /etc/iscsi/iscsid.conf 中将其改回 1 个会话。

在有问题的系统上,我们可以看到源接口似乎有误,但即使我禁用 10.10.100 接口,问题仍然存在。因此,虽然这可能相关,但我无法确定。不用说,还需要进一步研究。不同版本之间显然存在一些不同。正常工作的系统是 6.1,不正常工作的系统是 6.2。

::Working System::
tcp        0      0 10.10.8.210:39566           10.10.8.90:3260             ESTABLISHED 
tcp        0      0 10.10.9.210:46518           10.10.9.90:3260             ESTABLISHED 

[root]⌘ ip route show
10.10.8.0/24 dev eth2.6  proto kernel  scope link  src 10.10.8.210 
10.10.9.0/24 dev eth3.7  proto kernel  scope link  src 10.10.9.210 
10.10.100.0/22 dev eth0  proto kernel  scope link  src 10.10.100.210 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev eth2.6  scope link  metric 1006 
169.254.0.0/16 dev eth3.7  scope link  metric 1007 
default via 10.10.100.1 dev eth0

::Non-working System::
tcp        0      1 10.10.100.60:44737          10.10.9.90:3260             SYN_SENT    
tcp        0      1 10.10.100.60:55479          10.10.8.90:3260             SYN_SENT

[root]⌘ ip route show
10.10.8.0/24 dev eth2.6  proto kernel  scope link  src 10.10.8.60 
10.10.9.0/24 dev eth3.7  proto kernel  scope link  src 10.10.9.60 
10.10.100.0/22 dev eth0  proto kernel  scope link  src 10.10.100.60 
169.254.0.0/16 dev eth0  scope link  metric 1002 
169.254.0.0/16 dev eth2.6  scope link  metric 1006 
169.254.0.0/16 dev eth3.7  scope link  metric 1007 
default via 10.10.100.1 dev eth0 

And the result is still same:

[root]⌘ iscsiadm: Could not login to [iface: sw-iscsi-0, target: iqn.2011-12.dom.homer:01:lab-centos-servers-00001, portal: 10.10.8.90,3260].
iscsiadm: initiator reported error (8 - connection timed out)
iscsiadm: Could not login to [iface: sw-iscsi-1, target: iqn.2011-12.dom.homer:02:lab-centos-servers-00001, portal: 10.10.9.90,3260].
iscsiadm: initiator reported error (8 - connection timed out)
iscsiadm: Could not log into all portals

2012年1月8日更新:

我相信我已经能够找到问题的答案。这个问题相当模糊,我怀疑这种情况不会很快发生在其他人身上。事实证明,设置iface.iscsi_ifacenameiface.hwaddress在接口配置文件中是不合法的。当手动添加 iscsi 目标时(例如下面),接口配置文件中的所有设置都将复制到节点配置文件中,该文件由以下命令创建。结果是参数iface.iscsi_ifacenameiface.hwaddress在同一个配置文件中。这些参数似乎是互斥的,这不太合理,或者可能是代码路径中存在疏忽。也许我会进一步调查。

# iscsiadm -m node --op new -T iqn.2011-12.dom.homer:01:lab-centos-servers-00001 -p 10.10.8.90,3260,2 -I sw-iscsi-0
# iscsiadm -m node --op new -T iqn.2011-12.dom.homer:02:lab-centos-servers-00001 -p 10.10.9.90,3260,2 -I sw-iscsi-1

注意,下面我注释掉了iface.hwaddressiface.ipaddress,之后我使用与上述相同的命令重新添加了目标。一切正常。

[root]⌘ cat *
# BEGIN RECORD 2.0-872.33.el6
iface.iscsi_ifacename = sw-iscsi-0
iface.net_ifacename = eth2.6
#iface.hwaddress = XX:XX:XX:XX:XX:XX 
#iface.ipaddress = 10.10.8.60
iface.transport_name = tcp
iface.vlan_id = 6
iface.vlan_priority = 0
iface.iface_num = 0
iface.mtu = 0
iface.port = 0
# END RECORD
# BEGIN RECORD 2.0-872.33.el6
iface.iscsi_ifacename = sw-iscsi-1
iface.net_ifacename = eth3.7
#iface.hwaddress = XX:XX:XX:XX:XX:XX
#iface.ipaddress = 10.10.9.60
iface.transport_name = tcp
iface.vlan_id = 7
iface.vlan_priority = 0
iface.iface_num = 0
iface.mtu = 0
iface.port = 0
# END RECORD

再次强调,这种情况发生在其他人身上的可能性微乎其微,所以写下这些内容很可能是浪费时间。但是,如果有人确实遇到了这个问题,我希望这篇文章能有所帮助。

答案1

发现了同样的问题,但在 CentOS 6.2 新安装中。在以太网适配器上为 KVM 创建桥接后,iSCSI 登录超时。在此之前(未创建桥接),iSCSI 登录没有问题。

似乎 iscsiadm 尝试连接到定义的 iface.hwaddress(但在我的设置中有两个:eth1 和 br1 接口)并使用 eth1。连接超时。

删除 iface.hwaddress 并添加 iface.net_ifacename(按照建议)并将其设置为正确的接口名称 (br1),即可解决问题。

相关内容