0

我已经安装了open-iscsi,并登录了多个目标。该设备已安装,并执行一些IO。
但我想断开启动器和目标的tcp连接,强制iscsid运行恢复并重新连接。
如何做到这一点?

我已经使用tcpkill来杀死一些tcp连接,并且iscsid将运行恢复并重新连接到目标。但我不知道哪个tcp连接属于哪个目标。所以如果我想重新连接target1,我可能会终止target2的tcp连接。
如何识别到目标的tcp连接?如何强制iscsid重新连接目标?

回答

0

如果您的目标具有不同的IP地址,则可以使用netstat和grep作为端口3260(iscsi)。

$ netstat -nap | grep 3260 
(Not all processes could be identified, non-owned process info 
will not be shown, you would have to be root to see it all.) 
tcp  0  0 172.16.10.16:48471   172.16.10.201:3260   ESTABLISHED -  

然后使用tcpkill上的本地端口和目的IP:

$ sudo tcpkill -9 -i eth1 "port 48471 and host 172.16.10.201" 

如果你的目标没有不同的IP地址,它看起来像最好的办法是增加iscsid的日志记录级别到,以便您可以看到此消息在建立连接时记录下来。

log_debug(1, "connected local port %s to %s:%s", 
      lserv, conn->host, serv); 

似乎没有其他方法可以将启动器端口从iscsid中取出。

+0

最后我在iscsiadm中添加了一个命令来获取某个连接的src ip和src端口。 – pengdu