(57)【要約】【課題】ネットワークノード間の接続障害を自動的に回復する。【解決手段】スイッチ２０は、ネットワークノード間の接続処理を正常に行うための複数の標準ログを格納する標準ログ格納テーブル３１０と、ネットワークノード間の接続障害が生じたときに得られる障害ログを基に複数の標準ログの中から接続候補ログを検索する接続候補ログ検索プログラム４２０と、接続候補ログを用いてネットワークノード間の再接続を試行する再接続プログラム４４０とを備える。【選択図】図６
2007257180.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に分散接続されてなる複数のネットワークノードの間の接続障害を回復するためのネットワークノードであって、
ネットワークノード間の接続処理を正常に行うための複数の標準ログを格納する記憶部と、
ネットワークノード間の接続障害が生じたときに得られる障害ログを基に、前記複数の標準ログの中から接続候補ログを検索する接続候補ログ検索部と、
前記接続候補ログを用いてネットワークノード間の再接続を試行する再接続部と、
を備えるネットワークノード。
【請求項２】
請求項１に記載のネットワークノードであって、
ネットワークノード間のインターフェースプロトコルと前記障害ログとを基に障害原因を解析する障害原因解析部と、
前記障害原因を表示する表示部と、
を更に備えるネットワークノード。
【請求項３】
請求項１に記載のネットワークノードであって、
ネットワークノード間の接続処理を正常に行うことのできた接続ログを用いてネットワークノード間の接続処理を試行する接続部を更に備える、ネットワークノード。
【請求項４】
請求項１に記載のネットワークノードであって、
前記再接続部は、ネットワークノード間の再接続を試行することを接続相手に通知するためのリトライ通知コマンドを前記接続相手に送信し、前記接続相手から前記リトライ通知コマンドに対する応答を受信することを条件として、ネットワークノード間の再接続を試行する、ネットワークノード。
【請求項５】
請求項１に記載のネットワークノードであって、
第一のネットワークノードが第二のネットワークノードから取得する接続情報を前記第二のネットワークノードから予め取得する接続情報取得部と、
前記第一のネットワークノードから前記第二のネットワークノードへの情報取得要求に応答して、予め取得した接続情報を前記第一のネットワークノードに返す仮想応答部と、
を更に備えるネットワークノード。
【請求項６】
請求項１に記載のネットワークノードであって、
第一のネットワークノードから第二のネットワークノードに送信された処理要求がタイムアウトにならない前に、前記第一のネットワークノードにリトライ要求を送信する仮想応答部を更に備える、ネットワークノード。
【請求項７】
請求項１に記載のネットワークノードであって、
前記標準ログは、各種ベンダが提供するネットワークノードへの接続検証が確認された接続ログである、ネットワークノード。
【請求項８】
ファイバチャネルプロトコルに基づいてデータ通信を行うストレージネットワーク上に分散接続されてなるホスト計算機とストレージシステムとの間の接続障害を回復するためのスイッチであって、
ホスト計算機とストレージシステムとの間の接続処理を正常に行うための複数の標準ログを格納する記憶部と、
ホスト計算機とストレージシステムとの間の接続障害が生じたときに得られる障害ログを基に、前記複数の標準ログの中から接続候補ログを検索し、ホスト計算機とストレージシステムとの間の再接続を試行するプロセッサと、
を備えるスイッチ。
【請求項９】
請求項８に記載のスイッチであって、
前記プロセッサは、
（１）接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの送信順序、
（２）接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの送信タイミング、
（３）接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの発行数、
のうち何れかに基づいて、標準ログの中から接続候補ログを検索する、スイッチ。
【請求項１０】
請求項８に記載のスイッチであって、
前記プロセッサは、
（１）接続処理に失敗したネットワークノードと前記スイッチとの間で送受信されるシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信順序と、ファイバチャネルプロトコル上のシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信順序との相違、
（２）接続処理に失敗したネットワークノードと前記スイッチとの間で送受信されるシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信タイミングと、ファイバチャネルプロトコル上のシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信タイミングとの相違、
（３）接続処理に失敗したネットワークノードと前記スイッチとの間で送受信されるシーケンスに含まれるオーダードセット又はファイバチャネルフレームの発行数と、ファイバチャネルプロトコル上のシーケンスに含まれるオーダードセット又はファイバチャネルフレームの発行数との相違、
のうち何れかの情報に基づいて、前記ホスト計算機と前記ストレージシステムとの間の接続障害の原因を解析する、スイッチ。
【請求項１１】
ネットワーク上に分散接続されてなる複数のネットワークノードの間の接続障害を回復するためのネットワーク障害回復方法であって、
ネットワークノード間の接続障害が生じたときに得られる障害ログを基に、ネットワークノード間の接続処理を正常に行うための複数の標準ログの中から接続候補ログを検索するステップと、
前記接続候補ログを用いてネットワークノード間の再接続を試行するステップと、
を備えるネットワーク障害回復方法。
【請求項１２】
請求項１１に記載のネットワーク障害回復方法であって、
ネットワークノード間のインターフェースプロトコルと前記障害ログとを基に障害原因を解析するステップと、
前記障害原因を表示するステップと、
を更に備えるネットワーク障害回復方法。
【請求項１３】
請求項１１に記載のネットワーク障害回復方法であって、
ネットワークノード間の接続処理を正常に行うことのできた接続ログを用いてネットワークノード間の接続処理を試行するステップを更に備える、ネットワーク障害回復方法。
【請求項１４】
請求項１１に記載のネットワーク障害回復方法であって、
ネットワークノード間の再接続を試行することを接続相手に通知するためのリトライ通知コマンドを前記接続相手に送信し、前記接続相手から前記リトライ通知コマンドに対する応答を受信することを条件として、ネットワークノード間の再接続を試行するステップを更に備える、ネットワーク障害回復方法。
【請求項１５】
請求項１１に記載のネットワーク障害回復方法であって、
第一のネットワークノードが第二のネットワークノードから取得する接続情報を前記第二のネットワークノードから予め取得するステップと、
前記第一のネットワークノードから前記第二のネットワークノードへの情報取得要求に応答して、予め取得した接続情報を前記第一のネットワークノードに返すステップと、
を更に備えるネットワーク障害回復方法。
【請求項１６】
請求項１１に記載のネットワーク障害回復方法であって、
第一のネットワークノードから第二のネットワークノードに送信された処理要求がタイムアウトにならない前に、前記第一のネットワークノードにリトライ要求を送信するステップを更に備える、ネットワーク障害回復方法。
【請求項１７】
請求項１１に記載のネットワーク障害回復方法であって、
前記標準ログは、各種ベンダが提供するネットワークノードへの接続検証が確認された接続ログである、ネットワーク障害回復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークノード間の接続障害を回復するためのネットワークノード、スイッチ及びネットワーク障害回復方法に関する。
【背景技術】
【０００２】
政府、官公庁、地方自治体、企業、教育機関等では、多種多量のデータを取り扱うために、比較的大規模なストレージシステムを用いてデータを管理する。このストレージシステムは、例えば、ディスクアレイシステム等から構成される。ディスクアレイシステムは多数のストレージデバイスをアレイ状に配設して構成されるもので、ＲＡＩＤ（Redundant Arrays of Independent Inexpensive Disks）構成された記憶領域をホスト計算機に提供する。
【０００３】
近年、ＳＡＮ（Storage Area Network）環境の普及とともに、ストレージシステムの統合が急速に進められている。複数のストレージシステムがスイッチを介して複数のホスト計算機に接続されるという複雑なネットワークトポロジーを有するＳＡＮ環境においては、ネットワーク障害に対する迅速な対応が求められている。
【０００４】
例えば、特開２００５−７１１９６号公報には、異種ネットワークに接続可能なストレージシステムの障害情報を制御する方法が開示されている。
【０００５】
【特許文献１】特開２００５−７１１９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、ＳＡＮ環境においては様々なベンダから提供される製品（ホスト計算機、スイッチ、ストレージシステム等）がＦＣ−ＳＡＮ（Fibre Channel Storage Area Network）に接続されることが想定される。ファイバチャネルには、規格化されたインターフェースプロトコルが存在するが、ベンダ毎に規格解釈が異なるので、例えば、Ａ社のスイッチをＢ社のストレージシステムへの接続を試みても、インターフェースプロトコルの相違により、接続障害が生じる場合がある。また、大規模なＦＣ−ＳＡＮになると、インターフェースプロトコルに規定される接続シーケンスの送受信タイミングに時間ずれが生じ、接続障害が生じる場合がある。
【０００７】
そこで、本発明は上述の問題を解決し、ネットワークノード間の接続障害を自動的に回復することを課題とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明に係わるネットワークノードは、ネットワーク上に分散接続されてなる複数のネットワークノードの間の接続障害が生じたときに得られる障害ログを基に複数の標準ログの中から接続候補ログを検索し、接続候補ログを用いてネットワークノード間の再接続を試行する。標準ログとは、ベンダによる接続検証が確認された接続ログである。標準ログとして、各種ベンダが提供するネットワークノードへの接続検証が確認された接続ログを用いるのが好ましい。標準ログを用いて、ネットワークノード間の再接続を試行することで、ネットワーク障害を回復できる。本発明の好適な形態として、ネットワークノードは、ネットワークノード間のインターフェースプロトコルと障害ログとを基に障害原因を解析し、障害原因を表示してもよい。
【発明の効果】
【０００９】
本発明によれば、ネットワークノード間の接続障害を自動的に回復することができる。
【発明を実施するための最良の形態】
【００１０】
以下、各図を参照しながら本発明の実施形態について説明する。
図１は本実施形態に関わるストレージネットワークシステム１００のネットワーク構成を示す。ストレージネットワークシステム１００は、複数のホスト計算機１０と、複数のストレージシステム３０と、ＦＣ−ＳＡＮ２００とを含む。ＦＣ−ＳＡＮ２００は、ファイバチャネルプロトコル又はｉＳＣＳＩ（internet Small Computer System Interface）等の通信プロトコルにより、ブロック単位でのデータ伝送を制御するためのストレージエリアネットワークである。ＦＣ−ＳＡＮ２００は、ホスト計算機１０とストレージシステム３０との間の接続切り替えを制御するための一つ以上のスイッチ２０を有する。
【００１１】
ホスト計算機１０は、ワークステーションシステム、メインフレームコンピュータ、パーソナルコンピュータ等である。ホスト計算機１０は、ＦＣ−ＳＡＮ２００を介してストレージシステム３０に接続するための一つ以上のホストバスアダプタ（ＨＢＡ）１１と、ストレージシステム３０の記憶資源を利用するアプリケーションプログラム４６０とを有している。ホストアダプタ１１は、ホスト計算機１０のバスに接続されるアダプタカードであり、ＳＣＳＩ通信用のイニシエータ・インターフェースとして機能する。ホストアダプタ１１は、ネットワークインターフェースカード（ＮＩＣ）としての機能を実装することにより、他のホスト計算機１０とＴＣＰ／ＩＰ通信することもできる。アプリケーションプログラム４６０は、業務プログラム（例えば、データベースソフトウェア、Ｗｅｂアプリケーションソフトウェア、ストリーミングアプリケーションソフトウェア、ｅビジネスアプリケーションソフトウェア）である。
【００１２】
ストレージシステム３０は、複数のディスクドライブ５１を有する記憶装置５０と、記憶装置５０へのデータ入出力を制御するコントローラ４０とを備える。コントローラ４０は、ＦＣ−ＳＡＮ２００を介してホスト計算機１０に接続するための一つ以上のポート４１を含む。コントローラ４０は、複数のディスクドライブ５１をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式では、複数のディスクドライブ５１が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループは、例えば、４つのディスクドライブ５１を一組としてグループ化することにより（３Ｄ＋１Ｐ）、或いは８つのディスクドライブ５１を一組としてグループ化することにより（７Ｄ＋１Ｐ）、構成される。ＲＡＩＤグループ上には、ホスト計算機１０からのアクセス単位である一つ以上の論理ユニット５２が定義されている。一つのＲＡＩＤグループを複数に分割することにより、複数の論理ユニット５２を定義することもできるし、或いは複数のＲＡＩＤグループを一つにまとめて一つの論理ユニット５２を定義することもできる。
【００１３】
各論理ユニット５２は、各ポート４１にマッピングされる。ホスト計算機１０がＵＮＩＸ（登録商標）系のシステムである場合には、論理ユニット５２は、デバイスファイル（Device File）に対応付けられる。ホスト計算機１０がＷｉｎｄｏｗｓ（登録商標）系のシステムである場合には、論理ユニット５２は、ドライブレター（ドライブ名）に対応付けられる。論理ユニット５２には、ＬＵＮ（Logical Unit Number）がアサインされる。
【００１４】
ディスクドライブ５１は、例えば、ＦＣ（Fibre Channel）ディスクドライブ、ＳＡＴＡ（Serial Advanced Technology Attachment）ディスクドライブ、ＰＡＴＡ（Parallel Advanced Technology Attachment）ディスクドライブ、ＦＡＴＡ（Fibre Attached Technology Adapted）ディスクドライブ、ＳＡＳ（Serial Attached SCSI）ディスクドライブ或いはＳＣＳＩ（Small Computer System Interface）ディスクドライブ等のストレージデバイスである。
【００１５】
スイッチ２０は、二つ以上のポート２１を有している。あるポート２１は、接続パス２５０を介してホスト計算機１０に接続し、他のポート２１は、接続パス２６０を介してストレージシステム３０に接続している。スイッチ２０は、スイッチ２０自体がホスト計算機１０のＳＣＳＩターゲットになる仮想化スイッチであってもよい。
【００１６】
図２はファイバチャネルフレームを示す。ＦＣ−ＳＡＮ２００におけるデータ通信にはシリアル伝送方式が用いられる。ホスト計算機１０及びストレージシステム３０のそれぞれの内部では、シリアルデータをパラレル変換した上でデータ処理を行う。パラレル・シリアル変換として、８Ｂ／１０Ｂ変換が用いられる。同図に示すように、８Ｂ／１０Ｂ変換されたシリアルデータが意味を持つ最小の単位は、オーダードセット（Ordered Sets）と称される。オーダードセットは、４０ビットからなる。ファイバチャネルプロトコル上のデータ伝送単位をファイバチャネルフレームといい、複数のファイバチャネルフレームが集まってシーケンスを構成し、更に複数のシーケンスが集まってエクスチェンジを構成する。
【００１７】
オーダードセットには、デリミタオーダードセット（Delimiter Ordered Sets）、プリミティブシグナルオーダードセット（Primitive Signal Ordered Sets）、プリミティブシーケンスオーダードセット（Primitive Sequence Ordered Sets）がある。
【００１８】
図３はデリミタオーダードセットを示す。デリミタオーダードセットは、ファイバチャネルフレームの区切りに用いられる。ファイバチャネルフレームの先頭には、ＳＯＦ（Start of Frame）が付加され、ファイバチャネルフレームの最後尾には、ＥＯＦ（End of Frame）が付加される。更に、デリミタオーダードセットの中には、例えば、クラス１で接続せよ（ＳＯＦｃ１）、クラス２で初期化せよ（ＳＯＦｉ２）、リンクを切断せよ（ＥＯＦｔ）、などの意味を持つものもある。ＲＤ（Running Disparity）が一義的に決まっていないＥＯＦｔ以下のオーダードセットは、その前のデータによって、ＲＤ＋で送信するか、或いはＲＤ−で送信するかが決定される。１と０との数がそれぞれ等しくなるように選ばれた２組の１０ビットのうち一方をＲＤ＋と称し、他方をＲＤ−と称する。
【００１９】
図４はプリミティブシグナルオーダードセットを示す。プリミティブシグナルオーダードセットは、レスポンダからオリジネータ又はイニシエータにレスポンスを返すときに用いられる。Ｒ＿ＲＤＹ（Receiver_Ready）は、ファイバチャネルフレームを受信したことを示す。Ｉｄｌｅは、リンクが使用できる状態にあることを示す。Ｒ＿ＲＤＹとＩｄｌｅは、汎用的なものである。同図に示されていないプリミティブシグナルオーダードセットとして、例えば、ループトポロジにおけるアービトレーションなどに必要なオーダードセットもある。
【００２０】
図５はプリミティブシーケンスオーダードセットを示す。プリミティブシーケンスオーダードセットの中は、リンクを切断する（Link Offline：ＯＬＳ）、リンクが使えない（Link Not Operation：ＮＯＳ）、リンクをリセットせよ（Link Reset：ＬＲ）、などの意味を持つものがある。この他に、同図に示されてないが、プリミティブシーケンスオーダードセットの中には、ループイニシャライズ手順（ＬＩＰ）に関するオーダードセットもある。
【００２１】
ホスト計算機１０のホストバスアダプタ１１と、スイッチ２０のポート２１との間のリンク確立及び維持に必要なシーケンス（オーダードセット又はファイバチャネルフレームの発行タイミング、発行数、タイムアウト時間など）は、ファイバチャネルプロトコルにおいて予め定められている。スイッチ２０のポート２１と、ストレージシステム３０のポート４１との間のリンク確立及び維持に必要なシーケンスについても、同様である。ところが、ベンダによって規格解釈が異なるため、例えば、リンク確立をするためのシーケンスに含まれているオーダードセット又はファイバチャネルフレームの種類、発行タイミング、タイムアウト時間などがベンダによって異なる場合がある。このような相違があると、異なるベンダの製品間では、リンクエラー等により接続障害が生じ得る。
【００２２】
また、ホスト計算機１０とストレージシステム３０との間にスイッチ２０が介在する場合（ストレージシステム３０がネットワーク接続する場合）と、ホスト計算機１０とストレージシステム３０との間にスイッチ２０が介在しない場合（ストレージシステム３０をスタンドアロンで使用する場合）とでは、リンク確立時にストレージシステム３０が送受信するシーケンスが異なる。ストレージシステム３０がネットワーク接続する場合では、ストレージシステム３０は、スイッチ２０との間でリンク確立を行うため、スイッチ２０を提供するベンダの規格解釈に準拠したシーケンスを実行する必要があるのに対し、ストレージシステム３０をスタンドアロンで使用する場合では、ストレージシステム３０は、ホスト計算機１０との間でリンク確立を行うため、ホスト計算機１０を提供するベンダの規格解釈に準拠したシーケンスを実行する必要がある。
【００２３】
本実施形態では、ホスト計算機１０、スイッチ３０、ストレージシステム３０又はその他のネットワークノードがネットワーク障害回復機能を有することによりネットワークノード間の接続障害を自動的に回復し、インターフェースプロトコルの相違を吸収する。
【００２４】
図６はネットワーク障害回復機能を有するスイッチ２０のハードウェア構成を示す。スイッチ２０は、二つ以上のポート２１、プロセッサ２２、記憶装置２３、及びディスプレイ２４を備える。記憶装置２３は、標準ログ格納テーブル３１０、接続ログ格納テーブル３２０、障害ログ格納テーブル３３０、規格情報格納テーブル３４０、接続プログラム４００、障害回復プログラム４１０、接続候補ログ検索プログラム４２０、障害原因解析プログラム４３０、再接続プログラム４４０、及び障害メッセージ表示プログラム４５０を格納している。プロセッサ２２は、ホスト計算機１０とストレージシステム３０との間の接続を制御する。接続障害が発生すると、プロセッサ２２は、上述したプログラム（障害回復プログラム４１０、接続候補ログ検索プログラム４２０、障害原因解析プログラム４３０、再接続プログラム４４０、及び障害メッセージ表示プログラム４５０）の命令コードを解釈実行し、障害回復処理を行う。接続障害発生時には、ディスプレイ２４には、例えば、図９に示すように、障害メッセージ（障害原因などの情報）が表示される。
【００２５】
標準ログ格納テーブル３１０には、各種ベンダから提供されるネットワークノード（ホスト計算機、スイッチ、ストレージシステム、テープライブラリなど）に接続するための標準ログが格納されている。本明細書において、標準ログとは、ベンダによる接続検証が確認された接続ログを意味するものとする。標準ログは、各ベンダが提供するＷｅｂサイトなどから取り寄せることができる。例えば、図７に示すように標準ログ格納テーブル３１０には、「ログ番号」、「ベンダ情報」、及び「ログ情報」がそれぞれ対応付けられて格納されている。「ログ番号」は、それぞれの標準ログに一意に付与された識別情報を示す。「ベンダ情報」は、どのベンダが提供する何の製品であるかを示す。「ログ情報」は、標準ログの情報を示す。
【００２６】
図７に示す例では、標準ログ格納テーブル３１０には、Ａ社のホストバスアダプタに接続するための標準ログ、Ｂ社のホストバスアダプタに接続するための標準ログ、Ｃ社のホストバスアダプタに接続するための標準ログ、Ｄ社のスイッチに接続するための標準ログ、Ｅ社のスイッチに接続するための標準ログ、Ｆ社のスイッチに接続するための標準ログ、Ｇ社のストレージシステムに接続するための標準ログ、Ｈ社のストレージシステムに接続するための標準ログ、Ｉ社のストレージシステムに接続するための標準ログ、Ｊ社のテープライブラリに接続するための標準ログ、Ｋ社のテープライブラリに接続するための標準ログが格納されている。尚、図７に示す標準ログは、説明の便宜上のものであって、これに限られるものではない。
【００２７】
接続ログ格納テーブル３２０には、スイッチ２０のポート２１がＦＣ−ＳＡＮ２００上のネットワークノード（ホスト計算機、ストレージシステム、テープライブラリなど）との接続に成功したときの接続ログがそれぞれのポート２１毎に分けて格納されている。例えば、図８に示すように、接続ログ格納テーブル３２０には、「ポート番号」、「ログ情報」、及び「登録ログ情報」がそれぞれ対応付けられて格納されている。「ポート番号」は、スイッチ２０が有するそれぞれのポート２１に一意に付与された識別情報を示す。「ログ情報」は、接続処理に成功したときの接続ログの情報を示す。「登録ログ情報」は、接続ログを用いた接続処理には失敗したが、標準ログを用いた接続処理には成功した場合に、その標準ログがどのベンダが提供する何の製品に接続するためのものであるかを示す。
【００２８】
尚、詳細については後述するが、スイッチ２０は、接続ログ格納テーブル３２０に格納されている接続ログを用いて、ネットワークノードへの接続を試みる。ＦＣ−ＳＡＮ２００に新規に追加されたネットワークノードへの接続を試みても、接続ログ格納テーブル３２０に格納された接続ログでは、接続に成功するとは限らない。このとき、スイッチ２０は、標準ログを用いてネットワークノードへの再接続を試みる。「登録ログ情報」には、標準ログを用いた再接続に成功したときにその標準ログがどのベンダが提供する何の製品に接続するためのものであるかを示す。
【００２９】
障害ログ格納テーブル３３０には、接続処理に失敗したときの障害ログが格納されている。規格情報格納テーブル３４０には、ファイバチャネルプロトコルに関する詳細な規格情報（例えば、リンク確立をするためのシーケンスに含まれているオーダードセット又はファイバチャネルフレームの種類、発行タイミング、タイムアウト時間などの情報）が格納されている。
【００３０】
接続プログラム４００は、ネットワークノード間の接続処理（図１０）を実行するためのプログラム（接続部）である。障害回復プログラム４１０は、ネットワークノード間の障害回復処理（図１１）を実行するためのプログラム（障害回復部）である。接続候補ログ検索プログラム４２０は、複数の標準ログの中から接続候補ログを検索する処理（図１２）を実行するためのプログラム（接続候補ログ検索部）である。障害原因解析プログラム４３０は、ネットワークノード間の接続障害の原因を解析する処理（図１４）を実行するためのプログラム（障害原因解析部）である。再接続プログラム４４０は、ネットワークノードの再接続処理（図１３）を試行するためのプログラム（再接続部）である。障害メッセージ表示プログラム４５０は、障害原因を表示するためのプログラムである。
【００３１】
次に、図１０乃至図１４を参照しながら、ネットワークノード（ホスト計算機１０又はストレージシステム３０のうち何れか一方又は両者）とスイッチ２０との間に接続障害が発生したときの障害回復処理について説明する。
【００３２】
図１０は接続処理ルーチンの処理手順を記述したフローチャートである。スイッチ２０は、まず、接続プログラム４００を呼び出し、接続ログを採取するための準備を行う（ステップ１０１）。次に、接続格納テーブル３２０に格納されている接続ログを用いて、スイッチ２０とネットワークノードとの間のリンク確立を試行する（ステップ１０２）。
【００３３】
インターフェースプロトコルの相違による接続異常が発生しない場合には（ステップ１０３；ＮＯ）、スイッチ２０は、ネットワークノードに接続したときの接続ログを接続ログ格納テーブル３２０に格納する（ステップ１０４）。
【００３４】
インターフェースプロトコルの相違による接続異常が発生した場合には（ステップ１０３；ＹＥＳ）、スイッチ２０は、障害回復プログラム４１０を呼び出し、障害回復処理を行う（ステップ１０５）。
【００３５】
図１１は障害回復処理ルーチンの処理手順を記述したフローチャートである。スイッチ２０は、まず、接続候補ログ検索プログラム４２０を呼び出し、標準ログ格納テーブル３１０に格納されている複数の標準ログの中から一つ以上の接続候補ログを検索する（ステップ２０１）。本明細書において、接続候補ログとは、接続に失敗したネットワークノードに再接続をリトライするためのログを意味するものとする。接続候補ログを検索する処理の詳細については、後述する。
【００３６】
接続候補ログが存在するならば（ステップ２０２；ＹＥＳ）、スイッチ２０は、再接続プログラム４４０を呼び出し、接続候補ログを用いてネットワークノードへの再接続を試みる（ステップ２０３）。再接続処理の詳細については、後述する。
【００３７】
再接続時に接続障害が生じると（ステップ２０４；ＮＯ）、スイッチ２０は、次の接続候補ログを選択し（ステップ２０５）、ステップ２０２以降の処理を繰り返す。
【００３８】
接続障害が生じることなく、再接続が成功すると（ステップ２０４；ＹＥＳ）、スイッチ２０は、障害原因解析プログラム４３０を呼び出して、障害原因解析処理を行う（ステップ２０６）。障害原因解析処理とは、規格情報格納テーブル３４０に格納されている規格情報と、接続障害時に取得した障害ログとを比較することにより、どのような原因で接続障害が生じたのかを解析する処理である。障害原因解析処理の詳細については、後述する。
【００３９】
次に、スイッチ２０は、障害メッセージ表示プログラム４５０を呼び出し、ディスプレイ２４に障害メッセージを表示する（ステップ２０７）。障害メッセージは、例えば、図９に示すように、障害原因を記述したものである。障害原因として、例えば、オーダードセットが規定時間内に受信できないことによるタイムオーバーの他に、ネットワークノードから送信されてくるオーダードセットの送信順序又は送信タイミングが、接続ログのオーダートセットの送信順序又は送信タイミングとは異な又は場合などがある。
【００４０】
次に、スイッチ２０は、再接続に成功した標準ログを接続ログ格納テーブル３２０に格納するとともに、その標準ログがどのベンダが提供する何の製品に接続するためのものであるかを示す「登録ログ情報」を更新する（ステップ２０８）。
【００４１】
一方、接続候補ログが存在しないならば（ステップ２０２；ＹＥＳ）、スイッチ２０は、障害原因解析プログラム４３０を呼び出して、障害原因解析処理を行い（ステップ２０９）、次いで、障害メッセージ表示プログラム４５０を呼び出して、ディスプレイ２４に障害メッセージを表示する（ステップ２１０）。
【００４２】
図１２は接続候補ログ検索処理ルーチンの処理手順を記述したフローチャートである。スイッチ２０は、まず、障害ログ格納テーブル３３０から障害ログを取得し（ステップ３０１）、標準ログ格納テーブル３１０から標準ログを一つ選択する（ステップ３０２）。
【００４３】
次に、スイッチ２０は、障害ログと標準ログとを比較し（ステップ３０３）、選択した標準ログが接続候補ログになり得るか否かをチェックする（ステップ３０４）。接続候補ログとしては、接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの種類、発行タイミング、発行数などが、標準ログのそれ（標準ログのシーケンスに含まれているオーダードセット又はファイバチャネルフレームの種類、発行タイミング、発行数など）とできるだけ近似しているものが好ましい。スイッチ２０は、障害ログを解析することにより、接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの種類、発行タイミング、発行数、タイムアウト時間などの情報を得ることができる。
【００４４】
スイッチ２０は、選択した標準ログが接続候補ログに成りえるか否かを以下の優先順位に基づいてチェックする。
（１）接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの送信順序。
（２）接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの送信タイミング。
（３）接続処理に失敗したネットワークノードから送信されてくるシーケンスに含まれているオーダードセット又はファイバチャネルフレームの発行数。
【００４５】
つまり、複数の標準ログの中からオーダードセット又はファイバチャネルフレームの送信順序が上記（１）の送信順序と一致又は近似しているものを第一番目の優先順位で検索する。複数の標準ログの中にオーダードセット又はファイバチャネルフレームの送信順序が上記（１）の送信順序と一致又は近似しているものが存在すれば、それを第一優先順位の接続候補ログとする。
【００４６】
次に、複数の標準ログの中からオーダードセット又はファイバチャネルフレームの送信タイミングが上記（２）の送信タイミングと一致又は近似しているものを第二番目の優先順位で検索する。複数の標準ログの中からオーダードセット又はファイバチャネルフレームの送信タイミングが上記（２）の送信タイミングと一致又は近似しているものが存在すれば、それを第二優先順位の接続候補ログとする。
【００４７】
次に、複数の標準ログの中からオーダードセット又はファイバチャネルフレームの発行数が上記（３）の発行数と一致又は近似しているものを第三番目の優先順位で検索する。複数の標準ログの中からオーダードセット又はファイバチャネルフレームの発行数が上記（２）の発行数と一致又は近似しているものが存在すれば、それを第三優先順位の接続候補ログとする。
【００４８】
上記以外にも、例えば、特定のベンダの製品のみから特徴的なオーダートセットが送信されてくるような場合には、その特徴的なオーダードセットの有無を基準に、選択した標準ログが接続候補ログに成り得るか否かをチェックしてもよい。また、上記（１）の基準では接続候補ログを検索できない場合に限り、上記（２）の基準で接続候補ログを検索し、上記（２）の基準では接続候補ログを検索できない場合に限り、上記（３）の基準で接続候補ログを検索してもよい。
【００４９】
選択した標準ログが接続候補ログに成りえるならば（ステップ３０４；ＹＥＳ）、スイッチ２０は、選択した標準ログを接続候補ログとして登録する（ステップ３０５）。接続候補ログが複数存在する場合には、近似の度合いが高いものから順に優先順位を付するのが好ましい。
【００５０】
一方、選択した標準ログが接続候補ログに成りえないならば（ステップ３０４；ＮＯ）、スイッチ２０は、ステップ３０６に進む。
【００５１】
スイッチ２０は、標準ログ格納テーブル３１０に格納されている標準ログの全てについて、比較処理（ステップ３０３）を実行したか否かをチェックする（ステップ３０６）。一部の標準ログについて、比較処理が未実施であれば（ステップ３０６；ＮＯ）、スイッチ２０は、ステップ３０２以降の処理を繰り返し実行する。一方、全ての標準ログについて、比較処理が実施済みであれば（ステップ３０６；ＹＥＳ）、スイッチ２０は、接続候補ログ検索処理ルーチンを終了する。
【００５２】
図１３は再接続処理ルーチンの処理手順を記述したフローチャートである。スイッチ２０は、まず、接続候補ログを取得し（ステップ４０１）、接続処理に失敗したネットワークノードにリトライ通知コマンドを送信する（ステップ４０２）。リトライ通知コマンドは、再接続をリトライすることをノードに通知するためのコマンドである。
【００５３】
接続処理に失敗したネットワークノードがネットワーク障害回復機能を有している場合には、当該ノードからスイッチ２０にリトライ通知コマンドが送信されてくる可能性がある。そこで、スイッチ２０は、接続処理に失敗したネットワークノードからリトライ通知コマンドが送信されたか否かをチェックする（ステップ４０３）。
【００５４】
ネットワークノードからリトライ通知コマンドが送信されて来たならば（ステップ４０３；ＹＥＳ）、スイッチ２０は、リトライ通知コマンドに対する応答をネットワークノードに返す（ステップ４０４）。
【００５５】
一方、ネットワークノードからリトライ通知コマンドが送信されて来ないならば（ステップ４０３；ＮＯ）、スイッチ２０は、ステップ４０２で送信したリトライ通知コマンドに対する応答を待つ（ステップ４０５）。
【００５６】
スイッチ２０は、ネットワークノードからの応答を受信したならば（ステップ４０５；ＹＥＳ）、接続候補ログを用いて、ネットワークノードへの再接続を試みる（ステップ４０６）。
【００５７】
図１４は障害原因解析処理ルーチンの処理手順を記述したフローチャートである。スイッチ２０は、まず、障害ログ格納テーブル３３０から障害ログを取得し（ステップ５０１）、次いで、規格情報格納テーブル３４０からファイバチャネルプロトコルの規格情報を取得する（ステップ５０２）。
【００５８】
スイッチ２０は、障害ログと規格情報とを比較することで、ネットワークノードへの接続を試みた接続ログのどこに障害原因があるのかを解析する（ステップ５０３）。例えば、スイッチ２０は、下記の（１）〜（３）の情報を基に障害原因を解析する。
（１）接続処理に失敗したネットワークノードとスイッチ２０との間で送受信されるシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信順序と、ファイバチャネルプロトコル上のシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信順序との相違。
（２）接続処理に失敗したネットワークノードとスイッチ２０との間で送受信されるシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信タイミングと、ファイバチャネルプロトコル上のシーケンスに含まれるオーダードセット又はファイバチャネルフレームの送信タイミングとの相違。
（３）接続処理に失敗したネットワークノードとスイッチ２０との間で送受信されるシーケンスに含まれるオーダードセット又はファイバチャネルフレームの発行数と、ファイバチャネルプロトコル上のシーケンスに含まれるオーダードセット又はファイバチャネルフレームの発行数との相違。
【００５９】
尚、スイッチ２０は、上記（１）〜（３）以外の情報に基づいて障害原因を解析することも可能である。
【００６０】
本実施形態によれば、スイッチ２０は、各ベンダの規格解釈の相違又はＦＣ−ＳＡＮ２００のネットワーク構成の大規模化等の理由により、ＦＣ−ＳＡＮ２００上のノードへの接続処理に失敗した場合に、予め用意してある複数の標準ログの中から接続候補ログを選択し、再接続を試みるので、接続障害を自動的に回復することが可能となる。特に、スイッチ２０は、ホスト計算機１０にもストレージシステム３０にも接続するので、スイッチ２０にネットワークノードとしての機能を搭載することのメリットは大きい。スイッチ２０は、ホスト計算機１０とスイッチ２０との間の接続障害を回復できるだけでなく、ストレージシステム３０とスイッチ２０との間の接続障害も回復できる。
【００６１】
尚、本実施形態においては、ホスト計算機１０、スイッチ２０、又はストレージシステム３０のうち何れかがネットワーク障害回復機能を有していればよい。例えば、ホスト計算機１０のみがネットワーク障害回復機能を有していてもよく、或いはストレージシステム３０のみがネットワーク障害回復機能を有していてもよい。ホスト計算機１０がネット障害回復機能を有する場合は、ホスト計算機１０は、ホスト計算機１０とスイッチ２０との間の接続障害を回復できる。ホスト計算機１０とストレージシステム３０がスイッチ２０を介することなく直接接続する場合には、ホスト計算機１０は、ホスト計算機１０とストレージシステム３０との間の接続障害を回復できる。ストレージシステム３０がネットワーク障害回復機能を有する場合は、ストレージシステム３０は、ストレージシステム３０とスイッチ２０との間の接続障害を回復できる。ホスト計算機１０とストレージシステム３０がスイッチ２０を介することなく直接接続する場合には、ストレージシステム３０は、ホスト計算機１０とストレージシステム３０との間の接続障害を回復できる。
【００６２】
また、ホスト計算機１０、スイッチ２０、又はストレージシステム３０のうち二つ以上がネットワーク障害回復機能を有していてもよい。更に、ホスト計算機１０、スイッチ２０、及びストレージシステム３０以外のその他のネットワークノード（例えば、テープライブラリ、バックアップサーバ、メディアサーバ、仮想化装置など）がストレージネットワークシステム１００に接続される場合には、そのネットワークノードがネットワーク障害回復機能を有してもよい。
【００６３】
図１５はネットワーク障害回復機能を有するホスト計算機１０のハードウェア構成を示す。ホスト計算機１０は、一つ以上のホストバスアダプタ１１、プロセッサ１２、記憶装置１３、及びディスプレイ１４を備える。記憶装置１３は、標準ログ格納テーブル３１０、接続ログ格納テーブル３５０、障害ログ格納テーブル３３０、規格情報格納テーブル３４０、接続プログラム４００、障害回復プログラム４１０、接続候補ログ検索プログラム４２０、障害原因解析プログラム４３０、再接続プログラム４４０、及び障害メッセージ表示プログラム４５０を格納している。接続障害が発生すると、プロセッサ１２は、上述したプログラム（障害回復プログラム４１０、接続候補ログ検索プログラム４２０、障害原因解析プログラム４３０、再接続プログラム４４０、及び障害メッセージ表示プログラム４５０）の命令コードを解釈実行し、障害回復処理を行う。接続障害発生時には、ディスプレイ１４には、障害メッセージが表示される。
【００６４】
図１６はネットワーク障害回復機能を有するストレージシステム３０のハードウェア構成を示す。コントローラ４０は、一つ以上のポート４１、プロセッサ４２、メモリ４３、ドライブインターフェース４４、及びＬＡＮインターフェース４５を備える。メモリ４３は、標準ログ格納テーブル３１０、接続ログ格納テーブル３６０、障害ログ格納テーブル３３０、規格情報格納テーブル３４０、接続プログラム４００、障害回復プログラム４１０、接続候補ログ検索プログラム４２０、障害原因解析プログラム４３０、再接続プログラム４４０、及び障害メッセージ表示プログラム４５０を格納している。接続障害が発生すると、プロセッサ４２は、上述したプログラム（障害回復プログラム４１０、接続候補ログ検索プログラム４２０、障害原因解析プログラム４３０、再接続プログラム４４０、及び障害メッセージ表示プログラム４５０）の命令コードを解釈実行し、障害回復処理を行う。
【００６５】
ＬＡＮインターフェース４５は、管理ＬＡＮ６２を介して管理サーバ６０に接続されている。管理ＬＡＮ６２は、イーサネット（登録商標）ケーブルなどで構成されるＴＣＰ／ＩＰ通信用のＬＡＮである。管理サーバ５０は、例えば、ホスト計算機１０とストレージシステム３０との間のアクセスパスの設定（ＬＵＮマスキング又はゾーニングなど）などを管理する。管理サーバ６０は、ディスプレイ６１を備えている。接続障害発生時には、ディスプレイ６１には、障害メッセージが表示される。
【００６６】
次に、図１７を参照しながらスイッチ２０の仮想応答機能について説明を加える。スイッチ２０は、仮想応答プログラム（仮想応答部）５００を有しており、ホスト計算機１０又はストレージシステム３０からの要求に対して仮想応答を返す。本明細書において、仮想応答とは、要求先に替わって要求元に応答を返すことをいう。仮想応答の第一の例として、例えば、ホスト計算機１０がストレージシステム３０からベンダ名、装置名称、製品番号、ＷＷＮ（World Wide Name）、ＬＵＮ（Logical Unit Number）などの情報を取得するために、ホスト計算機１０からストレージシステム３０へ送信される照会コマンドに対し、スイッチ２０がこれに仮想応答することで、本来ならば、ストレージシステム３０から取得するはずの情報をスイッチ２０から取得することを可能にする。仮想応答の第二の例として、例えば、ストレージシステム３０がホスト計算機１０のＷＷＮを取得するために、ストレージシステム３０からホスト計算機１０に送信される問い合わせに対し、スイッチ２０がこれに仮想応答することで、本来ならば、ホスト計算機１０から取得するはずの情報をスイッチ２０から取得することを可能にする。
【００６７】
仮想応答の第一の例について説明を加える。スイッチ２０は、ホスト計算機１０とスイッチ２０との間のリンク７１０を確立する前に、ストレージシステム３０とスイッチ２０との間のリンク７２０を確立する。リンク７２０が確立されたならば、スイッチ２０は、ストレージシステム３０に照会コマンドを送信し、ストレージシステム３０ベンダ名、装置名称、製品番号、ＷＷＮ（World Wide Name）、ＬＵＮ（Logical Unit Number）などの情報をストレージシステム３０から取得する。そして、スイッチ２０は、その取得した情報を接続情報６００として、記憶装置２３に格納する。但し、リンク７２０が未だ確立していない段階で、ホスト計算機１０からスイッチ２０に向けて、リンク７１０の確立要求が送信される場合も想定される。このような場合には、スイッチ２０は、ホスト計算機１０にリジェクトフレームを返し、リンク７１０の確立を拒否する。その後、リンク７２０が確立されたならば、スイッチ２０は、ホスト計算機１０に再接続通知を送信することで、リンク７１０を確立する。
【００６８】
さて、リンク７１０，７２０が確立されると、ホスト計算機１０は、ホスト計算機１０とストレージシステム３０との間にリンク７３０を確立し、ストレージシステム３０に向けて照会コマンドを送信し、ストレージシステム３０の情報の取得を試みる。すると、スイッチ２０は、ホスト計算機１０からストレージシステム３０に送信された照会コマンドを取得し、予め取得してある接続情報６００をホスト計算機１０に送信することで、ストレージシステム３０に替わって、ホスト計算機１０に仮想応答する。例えば、ストレージシステム３０が高負荷状態にあり、ホスト計算機１０からの問い合わせに対して直ぐに応答できないような場合には、タイムアウトエラーなどが生じる可能性があるが、スイッチ２０が仮想応答することで、このようなエラー（ネットワーク障害）の発生を未然に防ぐことができる。
【００６９】
仮想応答の第二の例について説明を加える。スイッチ２０は、ストレージシステム３０とスイッチ２０との間のリンク７２０を確立する前に、ホスト計算機１０とスイッチ２０との間のリンク７１０を確立する。リンク７１０が確立されたならば、スイッチ２０は、ホスト計算機１０に問い合わせを行い、ホスト計算機１０のＷＷＮ（World Wide Name）を取得する。そして、スイッチ２０は、その取得したＷＷＮを接続情報６００として、記憶装置２３に格納する。但し、リンク７１０が未だ確立していない段階で、ストレージシステム３０からスイッチ２０に向けて、リンク７２０の確立要求が送信される場合も想定される。このような場合には、スイッチ２０は、ストレージシステム３０にリジェクトフレームを返し、リンク７２０の確立を拒否する。その後、リンク７１０が確立されたならば、スイッチ２０は、ストレージシステム３０に再接続通知を送信することで、リンク７２０を確立する。
【００７０】
さて、リンク７１０，７２０が確立されると、ストレージシステム３０は、ホスト計算機１０とストレージシステム３０との間にリンク７３０を確立し、ホスト計算機１０に対して問い合わせを行い、ホスト計算機１０のＷＷＮの取得を試みる。すると、スイッチ２０は、ストレージシステム３０からホスト計算機１０への問い合わせに対し、予め取得してある接続情報６００をストレージシステム３０に送信することで、ホスト計算機１０に替わって、ストレージシステム３０に仮想応答する。例えば、ホスト計算機１０が高負荷状態にあり、ストレージシステム３０からの問い合わせに対して直ぐに応答できないような場合には、タイムアウトエラーなどが生じる可能性があるが、スイッチ２０が仮想応答することで、このようなエラー（ネットワーク障害）の発生を未然に防ぐことができる。
【００７１】
尚、仮想応答の他の例として、例えば、ホスト計算機１０がリンク７３０を介してストレージシステム３０に対して何等かの処理を要求したが、ストレージシステム３０が高負荷状態にあり、直ぐに応答できないような場合には、タイムアウトエラーになる前に、スイッチ２０がホスト計算機１０にリトライ要求を送信することで、タイムエラーの発生を未然に防ぐことができる。スイッチ２０は、記憶装置２３内の規格情報格納テーブル３４０に格納されているファイバチャネルプロトコルの規格情報を基に、タイムアウト時間を求めることができる。同様にして、ストレージシステム３０からホスト計算機１０へ送信された何等かの処理要求がタイムアウトになる前に、スイッチ２０は、ストレージシステム３０にリトライ要求をすることができる。
【００７２】
ホスト計算機１０とストレージシステム３０とを接続するＦＣ−ＳＡＮ２００上のネットワークノード（スイッチ以外のネットワークノード）が上述した仮想応答機能を搭載してもよい。
【００７３】
尚、ストレージネットワークの一例として、ＦＣ−ＳＡＮ２００を例示したが、本実施形態は、ファイバチャネルプロトコル以外の通信プロトコルを用いたあらゆるストレージネットワークにも適用できる。
【図面の簡単な説明】
【００７４】
【図１】本実施形態に関わるストレージネットワークシステムのネットワーク構成図である。
【図２】ファイバチャネルフレームの説明図である。
【図３】デリミタオーダードセットの説明図である。
【図４】プリミティブシグナルオーダードセットの説明図である。
【図５】プリミティブシーケンスオーダードセットの説明図である。
【図６】本実施形態に係わるスイッチのハードウェア構成図である。
【図７】スイッチが保持する標準ログ格納テーブルの説明図である。
【図８】スイッチが保持する接続ログ格納テーブルの説明図である。
【図９】障害メッセージを表示する画面を示す図である。
【図１０】接続処理ルーチンを示すフローチャートである。
【図１１】障害回復処理ルーチンを示すフローチャートである。
【図１２】接続候補ログ検索処理ルーチンを示すフローチャートである。
【図１３】再接続処理ルーチンを示すフローチャートである。
【図１４】障害原因解析処理ルーチンを示すフローチャートである。
【図１５】本実施形態に係わるホスト計算機のハードウェア構成図である。
【図１６】本実施形態に係わるストレージシステムのハードウェア構成図である。
【図１７】スイッチの仮想応答機能の説明図である。
【符号の説明】
【００７５】
１０…ホスト計算機  ２０…スイッチ  ３０…ストレージシステム  ３１０…標準ログ格納テーブル  ３２０…接続ログ格納テーブル  ３３０…障害ログ格納テーブル  ３４０…規格情報格納テーブル  ４００…接続プログラム  ４１０…障害回復プログラム  ４２０…接続候補ログ検索プログラム  ４３０…障害原因解析プログラム  ４４０…再接続プログラム  ４５０…障害メッセージ表示プログラム
【図１】
2007257180.tif 000003
【図２】
2007257180.tif 000004
【図３】
2007257180.tif 000005
【図４】
2007257180.tif 000006
【図５】
2007257180.tif 000007
【図６】
2007257180.tif 000008
【図７】
2007257180.tif 000009
【図８】
2007257180.tif 000010
【図９】
2007257180.tif 000011
【図１０】
2007257180.tif 000012
【図１１】
2007257180.tif 000013
【図１２】
2007257180.tif 000014
【図１３】
2007257180.tif 000015
【図１４】
2007257180.tif 000016
【図１５】
2007257180.tif 000017
【図１６】
2007257180.tif 000018
【図１７】
2007257180.tif 000019