因此,在升级到 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_ifacename
和iface.hwaddress
在接口配置文件中是不合法的。当手动添加 iscsi 目标时(例如下面),接口配置文件中的所有设置都将复制到节点配置文件中,该文件由以下命令创建。结果是参数iface.iscsi_ifacename
和iface.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.hwaddress
和iface.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),即可解决问题。