web-dev-qa-db-ja.com

接続されたクライアントでiSCSIターゲットをシャットダウンする適切な方法は何ですか?

2つのDRBDプライマリノードを備えたiSCSI 2つのパスが同時に書き込み要求を受け取る場合は、使用することをお勧めしません。しかし、私はこのアイデアをESXi5.5U2ホストのバックエンドストレージとして使用することを考えています。

私はすでにこれをプライマリ/セカンダリ構成と従来のフェールオーバークラスターでテストしました。

この時点でESXiが行うことは、マルチパスを検出し、アクティブに1つのパスのみを使用することです。したがって、このコンステレーションでは、同時書き込みio問題は発生しないようです。

両方の場合(プライマリ/セカンダリまたはプライマリ/プライマリ)の問題は次のとおりです。iSCSIクライアント(iSCSI用語ではiSCSIイニシエータ)へのアクティブなオープン接続があるiSCSIサーバー(iSCSI用語ではiSCSIターゲットプロバイダー)をシャットダウンするにはどうすればよいですか?

現在、ターゲットサーバーでCentOS5を使用しています。

CO5はtgtdを使用してターゲットを提供します。驚いたことに、接続されたクライアントがある場合、通常の停止方法は失敗します。代わりに、この場合、強制停止が必要なようです。

一方のサーバーをクリーンにシャットダウンしたいので(ターゲットへのアクセスを停止する必要があるため、drbdをセカンダリに切り替えることができます)、もう一方のサーバーは自動的にアクティブになります(このコンステレーションIMHOでは何もしません)。

その文脈での質問:次は大丈夫ですか、それとも何かが足りませんか?

  1. tgtdの強制停止(最初にターゲットをオフラインにします)
  2. iPをイニシエーターの方向に分解します(drbd-replicationに使用されるものとは異なるライン)
  3. drbdをシャットダウンします(最初にセカンダリにします)
  4. サーバーを再起動またはシャットダウンします
3
Nils

はい、私は何かを逃しました。問題は、基礎となるプロトコル(SCSI)がステートフルプロトコルであるということです。そのため、ターゲットをシャットダウンできたとしても(たとえば、強制停止で)、アクティビティイニシエーターは「ハング」状態のままになります。

しかし:私のユースケースでは、問題の解決策があります。

  1. vCenterで、特定のiSCSIサーバーへのすべてのパスを無効にします。
  2. これにより、開いているすべてのiSCSIトランザクションが正常に終了し、他のサーバーへの別のパスで新しいトランザクションが開きます。
  3. その後、iSCSIサーバーはクライアントを中断することなく安全に再起動できます。
  4. ISCSIサーバーが起動して再び実行された後、vCenterでこれらのパスを有効にすることにより、元のiSCSIパスを再アクティブ化できます。

したがって、私の質問に対する適切な答えは次のように思われます。

短い:適切な方法はありません。クライアントがハングします。

Long:状況によります。最初にiSCSIトラフィックを適切にサイレンシング/終了できるレイヤーが間にある場合は、後でターゲットを終了できます(ターゲットサーバーがまだ接続されたイニシエータークライアントがあると見なしている場合でも)。

0
Nils