(57)【特許請求の範囲】
【請求項１】
ネットワーク上のネットワークスイッチを介してホストに通信可能に接続されるストレージ装置であって、
データを格納する記憶媒体を有するディスクアレイと、
前記ネットワークに接続するためのポートを有し、前記ディスクアレイに対するＩ／Ｏ処理を制御する複数のコントローラユニットと、を備え、
前記複数のコントローラユニットのうちの第１のコントローラユニットは、
前記ネットワークスイッチに対して、前記ホストが送信した第２のコントローラユニットへのパケットを前記第１のコントローラユニットへ送信するように第１の設定を行うとともに、前記第１のコントローラユニットが送信した前記ホストへのパケットを前記第２のコントローラユニットが送信したように前記ホストにみせかける第２の設定を行い、
前記第２のコントローラユニットは、前記第１のコントローラユニットにおける障害の発生を検出した場合に、前記ネットワークスイッチに対して、前記第１の設定を解除する、
ストレージ装置。
【請求項２】
前記第２のコントローラユニットは、前記第１のコントローラユニットにおける前記障害の発生を検出した場合に、前記ネットワークスイッチに対して、前記第２の設定を解除する、請求項１記載のストレージ装置。
【請求項３】
前記第１の設定は、パケットの送信先Mac addressが前記第２のコントローラユニットのMac addressに一致し、かつ、前記パケットのFC header内のD_IDが前記第１のコントローラユニットのN_Port_IDと一致する場合に、当該パケットを検出するルール、及び当該パケットの送信先Mac addressを書き換えるためのアクションを含む、請求項２記載のストレージ装置。
【請求項４】
前記第２の設定は、パケットの送信元Mac addressが前記第１のコントローラユニットのMac addressに一致し、かつ、前記パケットのFC header内のS_IDが前記第２のコントローラユニットのN_Port_IDと一致する場合に、当該パケットを検出するルール、及び当該パケットの送信元Mac addressを書き換えるためのアクションを含む、請求項３記載のストレージ装置。
【請求項５】
前記第１のコントローラユニットは、前記ホストからのログイン要求に基づいて、前記第２のコントローラユニットのポートにログインする、請求項４記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びこれの制御方法に関し、特に、ＦＣｏＥ（Fibre channel over ethernet）に対応したストレージ装置の制御技術に関する。
【背景技術】
【０００２】
ＦＣｏＥは、イーサネット（登録商標）上にＦＣ（Fibre Channel）のフレームをカプセル化する技術として知られている。このＦＣｏＥは、物理層（MACとイーサネットヘッダ）にイーサネット（登録商標）を使用するが、上位層にはＦＣを使用することで、ＦＣ上のリソースを有効に活用することができる。
【０００３】
下記特許文献１は、ネットワーク接続されたデバイスのホストバスアダプタ（ＨＢＡ）モジュールによって、ファイバーチャネル通信を生成し、該ネットワーク接続されたデバイスのＦＣｏＥモジュールによって、該ファイバーチャネル通信をイーサネット（登録商標）通信に変換し、送信する技術を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１１-５０８５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＦＣｏＥベースのストレージシステムでは、通常、耐障害性を考慮して、ホストとストレージとは複数のパスにより接続される。このようなストレージシステムにおいて、ストレージに障害が発生すると、ホストは、パス切替プログラムを実装している場合には、当該パス切替プログラムにより、パスの切り替えを実施する。
【０００６】
従って、従来は、ストレージが主導的にパスの切り替えを制御することはなかった。また、ホストがパス切替プログラムを実装していない場合、パスの切り替えを実施することができなかった。
【０００７】
そこで、本発明は、ＦＣｏＥベースのストレージシステムにおいて、ホストに依存することなく、パスの切り替えを実施できるようにしたストレージを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、ストレージ装置がネットワークスイッチ（OpenFlowスイッチ）と連携することによって、ストレージ装置が主体的にパスを切り替えることを特徴とする。
【０００９】
即ち、第１の観点に従う本発明は、ネットワーク上のネットワークスイッチを介してホストに通信可能に接続されるストレージ装置であって、データを格納する記憶媒体を有するディスクアレイと、前記ネットワークに接続するためのポートを有し、前記ディスクアレイに対するＩ／Ｏ処理を制御する複数のコントローラユニットと、を備え、前記複数のコントローラユニットのうちの第１のコントローラユニットは、前記ネットワークスイッチに対して、前記ホストが送信した第２のコントローラユニットへのパケットを前記第１のコントローラユニットへ送信するように第１の設定を行うとともに、前記第２のコントローラユニットが送信した前記ホストへのパケットを前記第１のコントローラユニットが送信したように前記ホストにみせかける第２の設定を行い、前記第２のコントローラユニットは、前記第１のコントローラユニットにおける障害の発生を検出した場合に、前記ネットワークスイッチに対して、前記第１の設定を解除する、ストレージ装置である。
【００１０】
また、第２の観点に従う本発明は、ネットワーク上のネットワークスイッチを介してホストに通信可能に接続される複数のノードから構成されるストレージ装置であって、
前記複数のノードのそれぞれは、データを格納する記憶媒体を有するディスクアレイと、
前記ネットワークに接続するためのポートを有し、前記ディスクアレイに対するＩ／Ｏ処理を制御する複数のコントローラユニットと、を備え、前記複数のノードは、相互に通信可能に接続されてなり、前記複数のノードのそれぞれは、一のノードにおける前記複数のコントローラユニットのそれぞれのポートが、前記ホストからのログイン要求を受け付け、他のノードにおける前記複数のコントローラユニットのそれぞれのポートが、前記ホストからのログイン要求に対して拒否するように設定する、ストレージ装置である。
【００１１】
また、本発明は、上記装置の発明を方法の観点から把握した方法の発明としても成立し、また、ストレージ装置を制御するプログラムの発明としても成立する。
【発明の効果】
【００１２】
本発明によれば、ホストの処理に依存することなく、ストレージ装置が、ホスト−ストレージ装置間のパスの切り替えを制御することができるようになる。特に、ストレージ装置が主導的にOpenFlow対応型のネットワークスイッチに対して、パス切り替えの制御を行うので、ホスト上にパス切り替えプログラムを実装する必要がなくなる。
【００１３】
また、ストレージ装置は、自身に障害が発生した場合であっても、ホストによる障害発生の検出をする必要がなく、パス切り替えを高速に行うことができるようになる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係るストレージシステムの概略構成を示すブロックダイアグラムである。
【図２】本発明の一実施形態に係るストレージシステムにおけるホスト−ストレージ装置間の接続構成を説明するためのブロックダイアグラムである。
【図３】本発明の一実施形態に係るストレージシステムの概略構成を示すブロックダイアグラムである。
【発明を実施するための形態】
【００１５】
次に、本発明の実施の形態について、図面を参照しつつ説明する。
【００１６】
図１は、本発明の一実施形態に係るストレージシステムの概略構成を示すブロックダイアグラムである。同図に示すように、ストレージシステム１００は、ホスト１１０と、ネットワーク及びネットワークスイッチを介して接続されたストレージ装置１２０を含んで構成される。ストレージシステム１００はまた、ストレージ装置を保守・管理するための管理端末装置１３０を含む。
【００１７】
ストレージ装置１２０は、典型的には、コントローラユニット１２１とディスクアレイ１２２とから構成される。コントローラユニット１２１は、例えば、ホストインタフェース１２１１と、キャッシュメモリ１２１２と、ディスクコントローラユニット１２１Ａ２１３とを備える。コントローラユニットは、複数備えてられていても良い。後述するように、本実施形態では、ストレージ装置１２０は、２つのコントローラユニット１２１Ａ及び１２１Ｂを備える（図２参照）。
【００１８】
ホストインタフェース１２１１は、ホスト１１０とのプロトコル通信を行うインターフェース回路である。ホストインターフェース１２１１は、例えば、ホスト１１０からリードコマンドやライトコマンド等のＩ／Ｏ要求を受信し、その応答をホスト１１０に送信する。キャッシュメモリ１２１２は、ホスト１１０から受信したコマンドやデータ及びホスト１１０へ送信したデータをキャッシュする。
【００１９】
例えば、ホストインタフェース１２１１は、ホスト１１０からリードコマンドを受信した場合、キャッシュメモリ１２１２上にその要求するデータが存在する場合は、キャッシュメモリ１２１２上のデータを送信し、一方、当該データが存在しない場合には、ディスクコントローラ２１３に対してディスクアレイ１２２からデータを読み出すように要求し、その結果、ディスクアレイ１２２からキャッシュメモリ１２１２に書き込まれるデータを、ホスト１１０に送信する。
【００２０】
また、ホストインタフェース１２１１は、ホスト１１０からライトコマンドを受信した場合、当該ライトコマンドに従うデータをキャッシュメモリ１２１２に書き込むとともに、ディスクコントローラ２１３にそれを通知する。これによって、ディスクコントローラ２１３は、ディスクアレイ１２２へのデータの書き込みを開始する。書き込みが完了すると、ディスクコントローラ２１３は、ホストインタフェース１２１１に書き込み完了を報告し、ホストインタフェース１２１１はその応答をホスト１１０に送信する。
【００２１】
ディスクアレイ１２２は、典型的には、複数のハードディスクドライブから構成されるが、これに限定されない。ディスクアレイ１２２は、ディスクコントローラユニット１２１Ａ２１３のＲＡＩＤ制御の下、ＲＡＩＤによる仮想ディスクを構成する。
【００２２】
ディスクコントローラ２１３は、上記ＲＡＩＤ制御の他、ディスクアレイ１２３の動作を制御する制御回路である。
【００２３】
管理端末装置１３０は、ストレージ装置１２０に対する様々なパラメータを設定し、変更を行う装置である。管理端末装置１３０は、典型的には、このような設定・変更を行うための管理プログラムを実装した汎用コンピュータである。
【００２４】
図２は、本発明の一実施形態に係るストレージシステムにおけるホスト−ストレージ装置間の接続構成を説明するためのブロックダイアグラムである。
【００２５】
同図に示すように、本実施形態のストレージ装置１２０は、２つのコントローラユニット１２１Ａ及び１２１Ｂを備える。コントローラユニット１２１Ａ及び１２１Ｂはそれぞれ、ホストインターフェース１２１１Ａ及び１２１１Ｂを備える。ホストインターフェース１２１１Ａ及び１２１１Ｂのそれぞれは、ネットワークスイッチ２１０を介して、ホスト１１０に接続されている。従って、ホスト１１０は、ネットワークスイッチ２１０を介して、ストレージ装置１２０上のホストインターフェース１２１１Ａ又は１２１１Ｂにアクセスする。本例では、ネットワークスイッチ２１０は、OpenFlow対応のスイッチデバイスである。OpenFlowは、ネットワーク制御技術の一つとして知られるプログラマブルなネットワーク構成を実現することができる。
【００２６】
次に、複数のコントローラユニット１２１のいずれか一つに障害が発生した場合のストレージ装置１２０の処理（パスの切り替え処理）について説明する。ストレージ装置１２０は、コントローラユニット１２１の障害を検出すると、ネットワークスイッチ２１０に対してフローを設定し、これによって、障害のあったコントローラユニット１２１に関わるパスを他のパスで代替し、Ｉ／Ｏ処理の継続を可能にする機能を有する。ここでは、コントローラユニット１２１Ａの障害に対して、コントローラユニット１２１Ｂが代替する例を示す。
【００２７】
まず、ストレージ装置１２０は、ネットワークスイッチ２１０にＩ／Ｏトランザクションのパス情報を設定する。Ｉ／Ｏトランザクションのパス情報は、ホスト１１０とコントローラユニット１２１Ａ及び１２１Ｂそれぞれとの間の経路を示す。本例では、ホスト１１０がコントローラユニット１２１Ｂに対して送信したデータ（パケット）がコントローラユニット１２１Ａに送信されるように、パス情報が設定される。つまり、コントローラユニット１２１Ａがアクティブの状態となり、コントローラユニット１２１Ｂがスタンバイの状態となる。具体的には、コントローラユニット１２１Ａは、コントローラユニット１２１Ｂに割り当てられたMac addressを取得し、ネットワークスイッチ２１０に以下のルール及びアクションを設定する。
・ルール：(1) パケットの送信先MAC addressがコントローラユニット１２１Ｂのそれと一致し、かつ、(2) ＦＣｏＥパケットにおけるFC Header内のD_IDがコントローラユニット１２１ＢのN_Port_IDと一致する、パケットを検出する。ここで、D_IDは、パケットの送信先のN_Port_IDを格納する領域であり、N_Port_IDは、ＦＣｏＥ通信におけるデバイスを特定する識別子である。
・アクション：パケットの送信先MAC addressをコントローラユニット１２１Ａのそれに置換する。
【００２８】
また、コントローラユニット１２１Ａは、コントローラユニット１２１Ｂのホストインタフェース１２１１Ｂが有するN_Port_IDを取得し、コントローラユニット１２１Ａのホストインタフェース１２１１ＡにおいてＦＣｏＥ通信を制御するプロセッサチップに対して、コントローラユニット１２１Ｂのホストインタフェース１２１１ＢのN_Port_IDにより宛先が指定されたパケットを受信できるよう設定する。
【００２９】
なお、プロセッサチップが、ＦＣｏＥパケットを受信する場合、受信したＦＣｏＥパケットのD_IDが自ポートのN_Port_IDと一致する必要がある。その場合、予め、プロセッサチップに対して、受信可能なN_Port_ID（つまり、ＦＣｏＥ受信フレームにおけるD_ID）が設定される。
【００３０】
以上により、ホスト１１０がコントローラユニット１２１Ａ及び１２１Ｂに対して発行された全てのＩ／Ｏトランザクションは、コントローラユニット１２１Ａに送信されることになり、ホストインタフェース１２１１Ａによって通信処理されることになる。
【００３１】
次に、コントローラユニット１２１Ａがホスト１１０に送信したパケットが、コントローラユニット１２１Ｂからホスト１１０へ送信されたパケットとしてホスト１１０に見せかける方法について説明する。
【００３２】
コントローラユニット１２１Ａは、ネットワークスイッチ２１０に対して、コントローラユニット１２１Ａからホスト１１０へ送信されるパケットがコントローラユニット１２１Ｂからホスト１１０へ送信されるパケットであるかのように、ホスト１１０に見せかけるための設定を行う。
【００３３】
具体的には、コントローラユニット１２１Ａから送信されるパケットの送信元MAC addressを、コントローラユニット１２１Ｂの送信元MAC addressに置換するため、ネットワークスイッチ２１０に以下のルール及びアクションを設定する。
・ルール：(1) パケットの送信元MAC addressがコントローラユニット１２１Ａのそれと一致し、かつ、(2) ＦＣｏＥパケットにおけるFC header内のS_ID(FCの送信元のN_Port_IDを格納する領域)がコントローラユニット１２１Ｂの N_Port_IDと一致するパケットを検出する。ここで、S_IDは、FCの送信元 の N_Port_IDを格納する領域である。
・アクション：送信元MAC addressをコントローラユニット１２１Ｂのそれに置換する。
【００３４】
以上により、ホスト１１０からは、コントローラユニット１２１Ａ及び１２１Ｂの２つが存在し、それぞれに対してＩ／Ｏトランザクションを送信できるように見えるが、実際は、全てのＩ／Ｏトランザクションをコントローラユニット１２１Ａが処理する状態を構築することができる。
【００３５】
また、コントローラユニット１２１Ｂは、実際には、ホスト１１０がログインしていない。ＦＣｏＥ通信を行うためには、ホスト１１０は、ストレージ装置１２０に対してログインする必要があるが、本実施形態では、ホスト１１０が発行するパケットは、コントローラユニット１２１Ａに送信されるので、コントローラユニット１２１Ａがコントローラユニット１２１Ｂに、別途ログイン処理を実施する必要がある。本実施形態では、ストレージでネットワークスイッチ２１０にストレージ装置１２０からのパケットに対するIDをホスト１１０のIDに変換するルールを設定し、ホスト１１０がログインしたかのようにコントローラユニット１２１Ａがコントローラユニット１２１Ｂに対してログインする。
【００３６】
即ち、コントローラユニット１２１Ａは、コントローラユニット１２１ＢのＦＣｏＥポートにログインする。このとき、コントローラユニット１２１Ａは、上述したように、ログインを送信するコントローラユニット１２１Ａのポート（ホスト１１０が本ログインを送信するポートとなる。）のMAC Addressを取得し、そのMAC addressからのパケットを、ホスト１１０のMAC addressに置換して、コントローラユニット１２１Ｂに送信する。また、ログインを送信するポートにおいては、ログインパケットの中にある、ＦＣ層のログインフレームヘッダにある、S_ID（ＦＣ層における送信元識別子であり、送信元N_PortIDが格納される。）に、ホスト１１０のN_Port_IDを指定し、その格納したホスト１１０のN_Port_IDが宛先のフレームを受信できるよう、プロセッサチップに設定する。
【００３７】
以上により、ログインを送信するポートからのログインは、新規代替ポートから見ると、ホスト１１０からのログイン要求と同様に処理できる。この処理によって、コントローラユニット１２１ＢのＦＣｏＥポートは、ホスト１１０がログインした状態に遷移することができる。
【００３８】
次に、ホスト１１０から送信されるＩ／Ｏトランザクションを新規代替ポートで処理する方法を説明する。
【００３９】
コントローラユニット１２１は、障害が発生したポートのMAC addressを取得し、ネットワークスイッチ２１０に対して、そのMAC addressを検出した場合には、新規代替ポートのMAC addressに置き換えるよう、ルールとアクションを設定する。また、コントローラユニット１２１は、障害が発生したポートのN_Port_IDが宛先のフレームを受信できるよう、プロセッサチップに対して設定を行う。これによって、障害が発生したポートに対するＩ／Ｏトランザクションを新規代替ポートが処理、送受信することができ、ホスト１１０から見ると、障害が発生したポートとあたかも通信しているように見える。これらの処理によって、ホスト１１０からは、ストレージ装置１２０のポートの障害に関係なく、ストレージ装置１２０の特定のN_Port_IDを有するポートとＩ／Ｏトランザクションを継続することができる。従って、ホスト１１０のパス切り替え手段を必要とせず、ストレージ１２０が主導的に、システムのパスを制御することができるようになる。
【００４０】
次に、コントローラユニット１２１の障害によって、パスを切り替える方法について説明する。
【００４１】
コントローラユニット１２１Ａが障害になり、ホスト１１０と通信できない状態におちいった場合、それをコントローラユニット１２１Ｂが検出する。コントローラユニット１２１Ｂは、コントローラユニット１２１Ａの障害を検出した場合、ネットワークスイッチ２１０に対して、コントローラユニット１２１Ａ及び１２１ＢのＩ／Ｏトランザクションをコントローラユニット１２１Ｂで処理するように設定を変更する。
【００４２】
即ち、コントローラユニット１２１Ｂは、ネットワークスイッチ２１０に対して、コントローラユニット１２１Ａ及び１２１Ｂに対するＩ／Ｏトランザクションをコントローラユニット１２１Ｂに送信するように設定する。具体的には、コントローラユニット１２１Ａのポートに割り当てられたMAC addressを取得し、ネットワークスイッチ２１０に以下のルール及びアクションを設定する。
・ルール：(1) パケットの送信先MAC addressがコントローラユニット１２１Ａのそれと一致し、かつ、(2) ＦＣｏＥパケットにおけるFC header内のＤ_IDがコントローラユニット１２１ＡのN_Port_IDと一致するパケットを検出する。
・アクション：送信先MAC addressをコントローラユニット１２１Ｂのそれに置換する。
また、コントローラユニット１２１Ｂは、コントローラユニット１２１Ａのホストインタフェース１２１１Ａが有するN_Port_IDを取得し、コントローラユニット１２１Ｂのホストインタフェース１２１１Ｂを制御するプロセッサチップに対して、コントローラユニット１２１Ａのホストインタフェース１２１１Ａの N_Port_IDで宛先が指定されたパケットを受信できるよう設定する。
【００４３】
そして、コントローラユニット１２１Ｂは、設定してあったコントローラユニット１２１Ｂへのパケットをコントローラユニット１２１Ａに送信する設定を、解除する。
【００４４】
以上により、ホスト１１０がコントローラユニット１２１Ａ及び１２１Ｂに対して発行したＩ／Ｏトランザクションは、コントローラユニット１２１Ｂに送信され、すべてのＩ／Ｏトランザクションはホストインタフェース１２１１Ｂによって処理されることになる。
【００４５】
次に、コントローラユニット１２１Ｂがホスト１１０に送信したパケットが、コントローラユニット１２１Ａからホスト１１０に送信されたパケットとしてホスト１１０に見せかける方法について説明する。
【００４６】
コントローラユニット１２１Ｂは、ネットワークスイッチ２１０に対して、コントローラユニット１２１Ｂからホスト１１０へ送信されるパケットがコントローラユニット１２１Ａからホスト１１０へ送信されるパケットに見せかけるための設定を行う。
【００４７】
具体的には、コントローラユニット１２１Ｂから送信されるパケットの送信元MAC addressを、コントローラユニット１２１Ａの送信元MAC addressに置換するため、ネットワークスイッチ２１０に以下のルール及びアクションを設定する。
・ルール：(1) パケットの送信元MAC addressがコントローラユニット１２１Ｂのそれと一致し、かつ、(2) ＦＣｏＥパケットにおけるFC header内のS_IDがコントローラユニット１２１ＡのN_Port_IDと一致するパケットを検出する。
・アクション：送信元MAC addressをコントローラユニット１２１Ａのそれに置換する。
コントローラユニット１２１Ａ及び１２１Ｂの２つが存在し、それぞれに対してＩ／Ｏトランザクションを送信できるように見えるが、実際は、全てのＩ／Ｏトランザクションをコントローラユニット１２１Ｂが処理する状態を構築することができる。
【００４８】
これによって、ホスト１１０のパス切り替え機能を使用することなく、ストレージ装置１２０が主導的に、ホスト１１０とストレージ装置１２０間の通信パスを動的に変更することで、コントローラユニット１２１に障害が発生した場合であっても、Ｉ／Ｏトランザクションの処理を継続することができる。
【００４９】
なお、本実施形態では、ストレージ装置１２０がコントローラユニット１２１Ａを主系（アクティブ)として設定されているが、コントローラユニット１２１Ｂを主系にしても良いし、または、ユーザが任意に設定してもよい。
【００５０】
次に、他の実施形態について説明する。本実施形態は、ストレージ装置１１０内のホスト１１０に対するリソースを浪費せず、Ｉ／Ｏトラフィックを適切なパスに動的に設定する例を説明する。
【００５１】
図３は、本発明の一実施形態に係るストレージシステムの概略構成を示すブロックダイアグラムである。本実施形態では、ストレージ装置１２０は、複数のコントローラユニット１２１を持ったノード同士を接続した構成であるとする。即ち、複数のノードは、相互に通信可能に接続されており、複数のノードが１つのストレージ装置１２０を形成する。本例では、ノードＡとノードＢとが相互に接続されており、１つのストレージ装置１２０を形成している。
【００５２】
このようなストレージ装置１２０においては、どのホストインタフェース１２１１がＩ／Ｏトランザクションを受け取っても、適切な論理ディスクにアクセスできるよう、ノード間の通信が行われる。
【００５３】
ストレージ装置１２０がホスト１１０とネットワークスイッチ２１０を介して接続されている場合、ホスト１１０は、１つのストレージ装置１２０内に存在するホストインタフェース１２１１（具体的にはＦＣｏＥのポート）を複数認識する。ホスト１１０は、認識しうるホストインターフェース１２１１に対して、ログインを行い、Ｉ／Ｏを発行する。しかしながら、例えば、ノードＡに存在する論理ディスクに対して、ノードＢに属するポートへＩ／Ｏトランザクションを発行した場合、ストレージ装置１２０内でノードＡ及びＢ間の通信が発生することになる。この結果、ストレージ装置１２０内のノード間インタフェースの帯域を使用してしまい、また、ノードＡにＩ／Ｏトランザクションを発行した場合よりも、ストレージ装置１２０内の通信が増加することから、Ｉ／Ｏトランザクションに対する応答性能が低下してしまう。
【００５４】
そこで、ストレージ装置１２は、ホスト１１０からログインを受け付けるポートを予め決定する。ＦＣｏＥ通信において、ホスト１１０がＩ／Ｏを発行する前に、ストレージ１２０のポートにログインすることは必須であり、ログインが成功して初めてＩ／Ｏトランザクションを発行することができる。つまり、ストレージ装置１２は、ログインに対して肯定的応答（accept）を返さなければ、そのポートからＩ／Ｏトランザクションを受信することはない。ストレージ装置１２０は、ログインを受け付けることにより、ログインを受け付けたポートに関わるリソース（例えばメモリ領域）を消費する。かかる観点より、本実施形態は、ストレージ装置１２０は、ホスト１１０からログインを受け付ける（肯定応答をする）ポートを予め決めておき、全てのポートがホスト１１０からログインを受け付けたとしても、決められたポート以外はログインを否定し、ストレージ内のログインを受け付ける。これによって、ホスト１１０に割り当てた論理ディスクを有するノードのポートのみがログインに肯定応答をすることで、ノードを跨いだ通信の発生を抑止し、また、作成されるホスト１１０に対応したリソースの消費を削減することができるようになる。
【００５５】
即ち、ストレージ装置１２０は、アクセスコントロールを使用して、ホスト１１０からログインを受け付けるポートをストレージで予め決定しておく。アクセスコントロールは、ＦＣｏＥポートごとに世界で固有の８バイトの識別子である、ホスト１１０のＷＷＰＮ（World Wide Port Name）と、そのＷＷＰＮに対応するホスト１１０に認識させる論理ディスクを予めストレージ装置１２０に登録することによって、ホスト１１０ごとにストレージ装置１２０内のどの論理ディスクを認識させるかを制御する機能である。このＷＷＰＮと論理ディスクとの関連性から、ホスト１１０がどの論理ディスクを認識できるかを判断することができるので、論理ディスクの実体を持つノードのポートがホスト１１０からログインを受け付けるポートの候補となる。ストレージ装置１２０は、そのポートの候補のうち２つをログインを受け付けるポートとして決定する。
【００５６】
本実施形態では、ノードＡが論理ディスクＬＤ＿Ａを有しており、その論理ディスクＬＤ＿Ａがホスト１１０に対してアクセスコントロールを設定されているとする。この例において、論理ディスクＬＤ＿Ａを有するノードＡの２つのポートがホスト１１０のログインを許可するポートとして設定され、他のポートは、ログインに否定応答（Reject）を返す。これによって、ホスト１１０からストレージ装置１２０の全てのポートに対してログインが送信されたとしても、ホスト１１０からのログインは、そのホスト１１０が通信する論理ディスクＬＤ＿Ａを有するノードＡのポートのみが肯定応答を返す。これにより、ホスト１１０はノードＡに対してＩ／Ｏトランザクションを送信するので、ストレージ装置１２０内のノード間の通信トラフィック量を削減することができる。
【００５７】
次に、ノードＡを有するホストインタフェース１２１１Ａに障害が発生した場合において、ノードＢにホスト１１０のＩ／Ｏトランザクションを切り替える方法について説明する。
【００５８】
まず、ノードＡを有するホストインタフェース１２１１Ａに障害が発生し、ストレージ装置１２０はホスト１１０と通信できなくなった場合、代替のポートを検索する。代替のポートは、すでにホスト１１０がログインしていて、Ｉ／Ｏトランザクションを受けることができるポートである。本実施形態では、ストレージ装置１２０は、２つのポートを用いて、ホスト１１０からのＩ／Ｏトランザクションを処理することができるので、他方のポートが代替のポートとなる。当該代替のポートが検出できた場合、上述したパスの切り替えによりＩ／Ｏ処理を継続する機能と同様に、障害のあるポートのＩ／Ｏを代替ポートにて処理、送受信するよう、ネットワークスイッチ２１０に設定する。これにより、ホスト１１０は、障害が発生したポートのN_Port_IDに対しても、Ｉ／Ｏトランザクションの発行を継続することができる。
【００５９】
代替ポートがない場合、他のポートの中から新たな代替ポートを選択する。即ち、ストレージ装置１２０は、ログインを受け付けるポートの候補のうち、決定されなかったポートを優先的に選択する。候補となるポートがない場合には、ストレージ装置１２０内の任意のポートを代替ポートとする。このような代替ポートには、ホスト装置１１０はログインをしていないので、ログインが必要になる。本実施形態では、ストレージ装置１２０は、ネットワークスイッチ２１０に対して、ストレージ装置１２０からのパケットのIDをホスト１１０のIDに変換するルールを設定し、ホスト１１０がログインしたかのように代替ポートにログインする。ログイン後、再度、ネットワークスイッチ２１０に対して、ホスト１１０から該当論理ディスクに対するＩ／Ｏトランザクションを、ホスト１１０−代替ポート間で通信できるようフローを設定する。
【００６０】
即ち、新たに代替ポートとなるポート以外のポートが、代替ポートとなるポートにログインする。そのとき、上述したように、ログインを送信するポートのMAC Addressを取得し、そのMAC addressから送信されるパケットについて、ホスト１１０のMAC addressに置換して新たな代替ポートに送信する。また、ログインを送信するポートにおいては、ログインパケットの中にある、ＦＣ層のログインフレームヘッダにある、S_IDに、ホスト１１０１のN_PortIDを指定し、その格納したホスト１１０１のN_PortIDが宛先のフレームを受信できるよう、プロセッサチップに設定する。これにより、ログインを送信するポートからのログインは、新たな代替ポートから見ると、ホスト１１０１からのログイン要求と変わらずに、処理できるようになる。この処理によって、新たな代替ポートは、ホスト１１０がログインした状態に遷移することができる。
【００６１】
次に、ホスト１１０から発行されたＩ／Ｏトランザクションを、新たな代替ポートで処理する方法について説明する。
【００６２】
上述した実施形態と同様、ストレージ装置１２０は、障害が発生したポートのMAC addressを取得し、ネットワークスイッチ２１０に対して、そのMAC addressを検出したパケットについて、新たな代替ポートのMAC addressに置換するよう、ルール及びアクションを予め設定する。また、ストレージ装置１２０は、障害が発生したポートのN_Port_IDが宛先のフレームを受信できるよう、プロセッサチップに設定する。これによって、障害が発生したポートのＩ／Ｏトランザクションを新たな代替ポートが処理、送受信することができるようになる。従って、ホスト１１０は、障害が発生したポートとあたかも通信しているように見える。これらの処理によって、ホスト１１０は、ストレージ装置１２０のポートの障害に関係なく、ストレージ装置１２０の特定のN_Port_IDを有するポートとＩ／Ｏ処理を継続することができ、ホスト１１０のパス切り替え手段を必要とせず、ストレージ装置１２０が主導的に、パスの経路を制御することができるようになる。
【００６３】
また、例えば、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限定されない。
（付記１）
ネットワーク上のネットワークスイッチを介してホストに通信可能に接続されるストレージ装置であって、
データを格納する記憶媒体を有するディスクアレイと、
前記ネットワークに接続するためのポートを有し、前記ディスクアレイに対するＩ／Ｏ処理を制御する複数のコントローラユニットと、を備え、
前記複数のコントローラユニットのうちの第１のコントローラユニットは、
前記ネットワークスイッチに対して、前記ホストが送信した第２のコントローラユニットへのパケットを前記第１のコントローラユニットへ送信するように第１の設定を行うとともに、前記第２のコントローラユニットが送信した前記ホストへのパケットを前記第１のコントローラユニットが送信したように前記ホストにみせかける第２の設定を行い、
前記第２のコントローラユニットは、前記第１のコントローラユニットにおける障害の発生を検出した場合に、前記ネットワークスイッチに対して、前記第１の設定を解除する、
ストレージ装置。
（付記２）
前記第２のコントローラユニットは、前記第１のコントローラユニットにおける前記障害の発生を検出した場合に、前記ネットワークスイッチに対して、前記第２の設定を解除する、上記付記１記載のストレージ装置。
（付記３）
前記第１の設定は、パケットの送信先Mac addressが前記第１のコントローラユニットのMac addressに一致し、かつ、前記パケットのFC header内のD_IDが前記第１のコントローラユニットのN_Port_IDと一致する場合に、当該パケットを検出するルール、及び当該パケットの送信先Mac addressを書き換えるためのアクションを含む、上記付記２記載のストレージ装置。
（付記４）
前記第２の設定は、パケットの送信先Mac addressが前記第１のコントローラユニットのMac addressに一致し、かつ、前記パケットのFC header内のS_IDが前記第２のコントローラユニットのN_Port_IDと一致する場合に、当該パケットを検出するルール、及び当該パケットの送信元Mac addressを書き換えるためのアクションを含む、上記付記３記載のストレージ装置。
（付記５）
前記第１のコントローラユニットは、前記ホストからのログイン要求に基づいて、前記第２のコントローラユニットのポートにログインする、上記付記４記載のストレージ装置。
（付記６）
ネットワーク上のネットワークスイッチを介してホストに通信可能に接続される複数のノードから構成されるストレージ装置であって、
前記複数のノードのそれぞれは、
データを格納する記憶媒体を有するディスクアレイと、
前記ネットワークに接続するためのポートを有し、前記ディスクアレイに対するＩ／Ｏ処理を制御する複数のコントローラユニットと、を備え、
前記複数のノードは、相互に通信可能に接続されてなり、
前記複数のノードのそれぞれは、
一のノードにおける前記複数のコントローラユニットのそれぞれのポートが、前記ホストからのログイン要求を受け付け、他のノードにおける前記複数のコントローラユニットのそれぞれのポートが、前記ホストからのログイン要求に対して拒否するように設定する、
ストレージ装置。
（付記７）
前記一のノードにおける前記複数のコントローラユニットの一つに障害が発生した場合に、前記一のノードにおける障害が発生していないコントローラユニットが、自身のポートにより前記ホストからのＩ／Ｏ処理を受け付ける、上記付記６記載のストレージ装置。
【産業上の利用可能性】
【００６４】
本発明は、ネットワークを介して構成されるストレージ装置に広く適用される。
【符号の説明】
【００６５】
１００…ストレージシステム
１１０…ホスト
１２０…ストレージ装置
１２１…コントローラユニット
１２１１…ホストインターフェース
１２１２…ディスクコントローラ
１２２…ディスクアレイ
【図１】
0005488841.tif 000002
【図２】
0005488841.tif 000003
【図３】
0005488841.tif 000004