0

open-iscsi をインストールし、複数のターゲットにログインしています。デバイスがマウントされ、IO が実行されます。
しかし、イニシエータとターゲットの tcp 接続を切断し、強制的に iscsid でリカバリを実行して再接続したいと考えています。
これを行う方法?

tcpkill を使用して一部の tcp 接続を強制終了しました。iscsid はリカバリを実行し、ターゲットに再接続します。しかし、どの tcp 接続がどのターゲットに属しているかはわかりません。したがって、target1 に再接続したい場合は、target2 の tcp 接続を切断できます。
ターゲットへの tcp 接続を識別する方法は?

4

1 に答える 1

1

ターゲットの IP アドレスが異なる場合は、ポート 3260 (iscsi) に対して netstat と grep を使用できます。

$ 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 -    

次に、ローカル ポートと宛先 IP で tcpkill を使用します。

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

ターゲットに異なる IP アドレスがない場合、iscsid のログ レベルを2に上げて、接続時にログに記録されるこのメッセージを確認できるようにするのが最善の方法のようです。

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

イニシエーター側のポートを iscsid から取得する別の方法はないようです。

于 2013-08-21T15:11:23.467 に答える