(57)【特許請求の範囲】
【請求項１】
上位装置からＩ／Ｏ要求を受信し処理する記憶装置システムであって、
Ｉ／Ｏ要求を受け付ける複数のコントローラモジュールと、
Ｉ／Ｏ要求に従うデータを記憶する複数の物理的な記憶装置と、
複数のグローバル論理記憶装置と、
前記複数の物理的な記憶装置に基づく複数のローカル論理記憶装置と
を備え、
各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置であり、
各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理される論理的な記憶装置であり、
各コントローラモジュールが、
前記上位装置との通信を制御する回路基板であるフロントエンドインタフェースと、
前記物理的な記憶装置との通信を制御する回路基板であるバックエンドインタフェースと、
前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリを含んでおり、各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んだグローバル論理記憶装置管理情報と、前記複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報であるローカル論理記憶装置管理情報とを記憶する記憶資源と、
前記Ｉ／Ｏ要求に関する処理を行うアクセス制御部と、
前記フロントエンドインタフェース、前記バックエンドインタフェース、前記記憶資源及び前記アクセス制御部に接続され、前記フロントエンドインタフェース、前記バックエンドインタフェース、前記記憶資源及び前記アクセス制御部の各々の間の通信を制御する回路基板であるスイッチと
を備え、
各スイッチは、当該スイッチを有するコントローラモジュールとは別の一以上の他のコントローラモジュールと接続されるモジュール間接続部として、拡張ポートを有し、前記各スイッチの拡張ポートは、当該スイッチを有するコントローラモジュールとは別のコントローラモジュール内のスイッチの拡張ポートにリンクを介して接続されており、コントローラモジュール間のデータのやり取りは、スイッチ間で行われるようになっており、
前記フロントエンドインタフェース、前記バックエンドインタフェース、前記記憶資源及び前記アクセス制御部のそれぞれの間の、前記スイッチにより実現されている結合が、密結合であり、スイッチ同士の結合が疎結合であり、
各コントローラモジュール内のアクセス制御部は、当該アクセス制御部に前記密結合されている前記記憶資源内の各種管理情報を、当該コントロールモジュールとは別の他のコントローラモジュール内のアクセス制御部に依頼することなく参照及び更新することができ、当該アクセス制御部に前記疎結合されている前記記憶資源内の管理情報を、その記憶資源を有する他のコントローラモジュール内のアクセス制御部に依頼することで参照及び更新することができ、
前記複数のコントローラモジュールのうちのいずれか一のコントローラモジュールである第一のコントローラモジュールが、前記上位装置からリード要求を受信した場合、前記第一のコントローラモジュール内の前記アクセス制御部は、
（Ａ）前記上位装置から受信したリード要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記第一のコントローラモジュールが有する前記グローバル論理記憶装置管理情報に基づいて判断し、
（Ｂ）前記（Ａ）の判断が肯定的な結果となれば、前記ローカル論理記憶装置管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、
（Ｃ）一方、前記（Ａ）の判断が否定的な結果となれば、前記複数のコントローラモジュールのうちの前記第一のコントローラモジュール以外の一のコントローラモジュールである第二のコントローラモジュールに前記受信したリード要求を転送する
ようになっており、
前記第二のコントローラモジュールが、前記転送されたＩ／Ｏ要求を受信し、前記第二のコントローラモジュール内の前記アクセス制御部が、
（ａ）前記第一のコントローラモジュールから受信したリード要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記第二のコントローラモジュールの管理対象であるか否かを、前記第二のコントローラモジュールが有する前記グローバル論理記憶装置管理情報に基づいて判断し、
（ｂ）前記（ａ）の判断の結果が肯定的の場合、前記コントローラモジュールから受信したリード要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記第二のコントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記第一のコントローラモジュールが有する前記アクセス制御部に通知し、
前記第一のコントローラモジュールが有する前記アクセス制御部が、前記第二のコントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定される、前記第二のコントローラモジュール内の前記キャッシュメモリにおける、データの位置から、データを読み出し、読み出したデータを、前記上位装置に送信する、
記憶装置システム。
【請求項２】
前記各コントローラモジュールが、前記複数のグローバル論理記憶装置のうちの第一のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第一のローカル論理記憶装置から、前記複数のグローバル論理記憶装置のうちの第二のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第二のローカル論理記憶装置へのデータの移行を制御するデータ移行制御部を更に備え、
前記第一のローカル論理記憶装置を管理する第一のコントローラモジュールが有する第一のデータ移行制御部が、前記第一のコントローラモジュールが有する前記記憶資源が記憶している前記グローバル論理記憶装置管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記第一のコントローラモジュールの管理対象ではないことを表す情報に更新し、
前記第二のローカル論理記憶装置を管理する第二のコントローラモジュールが有する第二のデータ移行制御部が、前記第二のコントローラモジュールが有する前記記憶資源が記憶している前記グローバル論理記憶装置管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置が前記第二のコントローラモジュールが管理する前記第二のローカル論理記憶装置に関連付けられていることを表す情報に更新する、
請求項１記載の記憶装置システム。
【請求項３】
前記各コントローラモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれており、
前記第一のデータ転送制御部が、前記データの移行において、前記第一のローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記第一のコントローラモジュールが有する前記記憶資源内の第一のキャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記第二のデータ転送制御部に通知し、
前記第二のデータ転送制御部が、前記データの移行において、前記第一のデータ転送制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記第二のローカル論理記憶装置に書き込む、
請求項２記載の記憶装置システム。
【請求項４】
前記各コントローラモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれており、
前記受信したＩ／Ｏ要求が、ライト要求であり、
前記コントローラモジュールが有する前記アクセス制御部が、前記受信したライト要求に従うデータを、前記コントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記ライト要求の転送先の前記他のコントローラモジュールが有する前記アクセス制御部に通知し、
前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記ライト要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置に書き込む、
請求項１乃至３のうちのいずれか一項に記載の記憶装置システム。
【請求項５】
前記グローバル論理記憶装置管理情報には、前記複数のグローバル論理記憶装置に対応した複数の第一種のグローバル論理記憶装置管理情報要素と、二以上の第二種のグローバル論理記憶装置管理情報要素とが含まれており、
各第一種のグローバル論理記憶装置管理情報要素には、対応するグローバル論理記憶装置に関する情報が登録されており、
前記第二種のグローバル論理記憶装置管理情報要素の数は、前記第一種のグローバル論理記憶装置管理情報要素の数より少なく、
各第二種のグローバル論理記憶装置管理情報要素に、前記複数の第一種のグローバル論理記憶装置管理情報要素のうちの一以上の第一種のグローバル論理記憶装置管理情報要素が関連付けられ、
各第二種のグローバル論理記憶装置管理情報要素は、前記グローバル論理記憶装置の識別子のハッシュ値から特定される、
請求項１乃至４のうちのいずれか１項に記載の記憶装置システム。
【請求項６】
前記各コントローラモジュールのアクセス制御部が、前記上位装置が指定可能な複数のパスに同一のグローバル論理記憶装置が関連している場合、前記複数のパスのいずれを経由して照会コマンドが受けても、前記同一のグローバル論理記憶装置の識別子を前記上位装置に提供する、
請求項１乃至５のうちのいずれか１項に記載の記憶装置システム。
【請求項７】
前記各グローバル論理記憶装置の識別子が、前記グローバル論理記憶装置を生成したコントローラモジュールの識別子と、前記グローバル論理記憶装置に関連付けられるローカル論理記憶装置の識別子と、同一のローカル論理記憶装置が関連付けられたグローバル論理記憶装置が同一のコントローラモジュールによって生成されても異なるコードとなる非重複コードとを含んでいる、
請求項１乃至６のうちのいずれか１項に記載の記憶装置システム。
【請求項８】
前記コントローラモジュールと前記他のコントローラモジュールとの間には、一以上の転送経路があり、
前記各コントローラモジュールが、グローバル論理記憶装置閉塞部を更に備え、
前記グローバル論理記憶装置閉塞部が、前記一以上の転送経路のいずれの転送経路も、前記受信したＩ／Ｏ要求を経由させることができないときに、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられているグローバル論理記憶装置を閉塞する、
請求項１乃至７のうちのいずれか１項に記載の記憶装置システム。
【請求項９】
前記各コントローラモジュールが、グローバル論理記憶装置回復部を更に備え、
前記グローバル論理記憶装置回復部が、前記一以上の転送経路のうちのいずれかの転送経路の回復が検出された場合に、前記コントローラモジュールの管理対象であるローカル論理記憶装置に関連付けられているグローバル論理記憶装置の識別子を、前記他のコントローラモジュールに通知し、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置の状態を、前記他のコントローラモジュールに問い合わせ、前記問い合わせの結果が正常の場合、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置を回復する、
請求項８記載の記憶装置システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置システムが有する論理記憶装置の管理に関する。
【背景技術】
【０００２】
記憶装置システムが有する論理記憶装置（以下、「ＬＤＥＶ」と言う）の管理に関する技術として、例えば、特許文献１に開示の技術が知られている。特許文献１には、第一の記憶装置システムの外部に存在する第二の記憶装置システムの論理ユニットを第一の記憶装置システム内で管理する技術が開示されている。
【０００３】
【特許文献１】特開２００５−１０７６４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、高性能及び／又は大容量の大規模構成の記憶装置システムが必要とされることもあれば、低価格の小規模構成の記憶装置システムが必要とされることもある。本出願人の考察によれば、記憶装置システムを、複数のコントローラモジュールを備えたスケールアウト型の記憶装置システムとすることで、コントローラモジュールの数を調整する等により、記憶装置システムを大規模構成にも小規模構成にもできると考えられる。この場合、各コントローラモジュールが、自分の配下にある（つまり自分がアクセス可能）なＬＤＥＶを管理し、他のコントローラモジュールの配下にあるＬＤＥＶを管理しない。なお、記憶装置システムが、複数の物理記憶装置を有する複数の物理記憶装置モジュールを備えていて、一つのコントローラモジュールと一つの物理記憶装置モジュールとのセットである記憶装置システムモジュールが構成されても良い（つまり、記憶装置システムが複数個の記憶装置システムモジュールで構成されても良い）。
【０００５】
この構成において、例えば、第二のコントローラモジュールの配下にあるＬＤＥＶにアクセスするためのＩ／Ｏ要求を第一のコントローラモジュールが受け付けられるようにするための方法として、以下の方法が考えられる。すなわち、第一のコントローラモジュールが、第二のコントローラモジュールが管理する実体的なＬＤＥＶを関連付けた仮想的なＬＤＥＶを管理する。この場合、第一のコントローラモジュールが、仮想的なＬＤＥＶを指定したＩ／Ｏ要求を受信し、その仮想的なＬＤＥＶに関連付けられている実体的なＬＤＥＶを管理する第二のコントローラモジュールに、その受信したＩ／Ｏ要求を転送する。
【０００６】
この方法によれば、第一のコントローラモジュールが、仮想的なＬＤＥＶを管理する。このため、一つのコントローラモジュールが管理可能なＬＤＥＶの数に制限がある場合には、管理する仮想的なＬＤＥＶの数の分、管理可能な実体的なＬＤＥＶの数が減ってしまうことになる。また、第一のコントローラモジュールにおいて、仮想的なＬＤＥＶが第一のコントローラモジュールのキャッシュメモリを使用し、さらに、第二のコントローラモジュールにおいて、当該仮想的なＬＤＥＶに関連付けられている実体的なＬＤＥＶが第二のコントローラモジュールのキャッシュメモリを使用するため、記憶装置システム全体として見た場合、当該実体的なＬＤＥＶに格納しているデータが記憶装置システムのキャッシュメモリを浪費することになる。
【０００７】
従って、本発明の目的は、各コントローラモジュールが他のコントローラモジュールの配下にあるＬＤＥＶにアクセスするためのＩ／Ｏ要求を受け付けられるようにしても、各コントローラモジュールの管理対象としての配下のＬＤＥＶが増えてしまわないようにすることにある。また、特定のＬＤＥＶのデータによる記憶装置システムのキャッシュメモリの浪費を抑止することにある。
【０００８】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【０００９】
各コントローラモジュールの配下にあるローカルＬＤＥＶの上位に、複数のコントローラモジュールが管理する複数のグローバルＬＤＥＶを設ける。各グローバルＬＤＥＶは、複数のローカルＬＤＥＶのうちのいずれかに関連付けられる。各コントローラモジュールの記憶資源には、各グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが自モジュールの管理対象であるか否かを表す情報を含んだグローバルデバイス管理情報と、複数のローカルＬＤＥＶのうちの自モジュールによる管理対象のローカルＬＤＥＶに関する情報であるローカルデバイス管理情報とが記憶される。コントローラモジュールは、上位装置又は第一の他のコントローラモジュールから受信したＩ／Ｏ要求から特定されるグローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが自分の管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、特定されるグローバルＬＤＥＶに関連付けられているローカルＬＤＥＶにアクセスし、否定的な判断結果となれば、第二の他のコントローラモジュールに前記受信したＩ／Ｏ要求を転送する。
【発明を実施するための最良の形態】
【００１０】
第１の実施形態では、記憶装置システムが、Ｉ／Ｏ要求を受け付ける複数のコントローラモジュールと、Ｉ／Ｏ要求に従うデータを記憶する複数の物理的な記憶装置と、複数のグローバル論理記憶装置と、前記複数の物理的な記憶装置に基づく複数のローカル論理記憶装置とを備える。各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置（例えば仮想的なＬＤＥＶ）である。各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理される論理的な記憶装置（例えば実体的なＬＤＥＶ）である。各コントローラモジュールが、モジュール間接続部と、記憶資源と、アクセス制御部とを備える。前記モジュール間接続部は、例えばスイッチであり、前記複数のコントローラモジュールのうちの一以上の他のコントローラモジュールと接続される。前記モジュール間接続部は、一つのコントローラモジュール内の構成部位同士の接続のための接続部（例えばスイッチ）を兼ねても良い。前記記憶資源は、各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んだグローバルデバイス管理情報と、前記複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報であるローカルデバイス管理情報とを記憶する。前記アクセス制御部は、前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したＩ／Ｏ要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したＩ／Ｏ要求を転送する。上位装置は、例えば、ホストコンピュータ或いは他の記憶装置システムである。
【００１１】
実施形態２では、実施形態１において、前記各コントローラモジュールが、データ移行制御部を更に備える。前記データ移行制御部は、前記複数のグローバル論理記憶装置のうちの第一のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第一のローカル論理記憶装置から、前記複数のグローバル論理記憶装置のうちの第二のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第二のローカル論理記憶装置へのデータの移行を制御する。前記第一のローカル論理記憶装置を管理する第一のコントローラモジュールが有する第一のデータ移行制御部が、前記第一のコントローラモジュールが有する前記記憶資源が記憶している前記グローバルデバイス管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記第一のコントローラモジュールの管理対象ではないことを表す情報に更新する。前記第二のローカル論理記憶装置を管理する第二のコントローラモジュールが有する第二のデータ移行制御部が、前記第二のコントローラモジュールが有する前記記憶資源が記憶している前記グローバルデバイス管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置が前記第二のコントローラモジュールが管理する前記第二のローカル論理記憶装置に関連付けられていることを表す情報に更新する。
【００１２】
実施形態３では、実施形態２において、前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれている。前記第一のデータ転送制御部が、前記データの移行において、前記第一のローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記第一のコントローラモジュールが有する前記記憶資源内の第一のキャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記第二のデータ転送制御部に通知する。前記第二のデータ転送制御部が、前記データの移行において、前記第一のデータ転送制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記第二のローカル論理記憶装置に書き込む。
【００１３】
実施形態４では、実施形態１乃至３のうちのいずれかにおいて、前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれている。前記受信したＩ／Ｏ要求が、リード要求である。前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールから受信したリード要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記他のコントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記コントローラモジュールが有する前記アクセス制御部に通知する。前記コントローラモジュールが有する前記アクセス制御部が、前記他のコントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記リード要求の送信元に送信する。
【００１４】
実施形態５では、実施形態１乃至４のうちのいずれかにおいて、前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれている。前記受信したＩ／Ｏ要求が、ライト要求である。前記コントローラモジュールが有する前記アクセス制御部が、前記受信したライト要求に従うデータを、前記コントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記ライト要求の転送先の前記他のコントローラモジュールが有する前記アクセス制御部に通知する。前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記ライト要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置に書き込む。
【００１５】
実施形態６では、実施形態１乃至５のうちのいずれかにおいて、前記グローバルデバイス管理情報には、前記複数のグローバル論理記憶装置に対応した複数の第一種のグローバルデバイス管理情報要素と、二以上の第二種のグローバルデバイス管理情報要素とが含まれている。各第一種のグローバルデバイス管理情報要素には、対応するグローバル論理記憶装置に関する情報が登録されている。前記第二種のグローバルデバイス管理情報要素の数は、前記第一種のグローバルデバイス管理情報要素の数より少ない。各第二種のグローバルデバイス管理情報要素に、前記複数の第一種のグローバルデバイス管理情報要素のうちの一以上の第一種のグローバルデバイス管理情報要素が関連付けられる。各第二種のグローバルデバイス管理情報要素は、前記グローバル論理記憶装置の識別子のハッシュ値から特定される。
【００１６】
実施形態７では、実施形態１乃至６のうちのいずれかにおいて、前記各コントローラモジュールのアクセス制御部が、前記上位装置が指定可能な複数のパスに同一のグローバル論理記憶装置が関連している場合、前記複数のパスのいずれを経由して照会コマンドが受けても、前記同一のグローバル論理記憶装置の識別子を前記上位装置に提供する。
【００１７】
実施形態８では、実施形態１乃至７のうちのいずれかにおいて、前記各グローバル論理記憶装置の識別子が、前記グローバル論理記憶装置を生成したコントローラモジュールの識別子と、前記グローバル論理記憶装置に関連付けられるローカル論理記憶装置の識別子と、同一のローカル論理記憶装置が関連付けられたグローバル論理記憶装置が同一のコントローラモジュールによって生成されても異なるコードとなる非重複コードとを含んでいる。前記非重複コードは、例えば、コントローラモジュールが起動する都度に更新される番号であっても良いし、前記グローバル論理記憶装置の識別子の生成時の日時であっても良い。
【００１８】
実施形態９では、実施形態１乃至８のうちのいずれかにおいて、前記コントローラモジュールと前記他のコントローラモジュールとの間には、一以上の転送経路がある。前記各コントローラモジュールが、グローバルデバイス閉塞部を更に備える。前記グローバルデバイス閉塞部が、前記一以上の転送経路のいずれの転送経路も、前記受信したＩ／Ｏ要求を経由させることができないときに、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられているグローバル論理記憶装置を閉塞する（例えば、グローバル論理記憶装置のステータスを“閉塞”に更新する）。前記コントローラモジュールが、閉塞されたグローバル論理記憶装置が特定されるＩ／Ｏ要求を受信した場合、そのグローバル論理記憶装置に対するアクセスは不可能となる。一方、前記他のコントローラモジュールが、前記コントローラモジュールで閉塞されたグローバル論理記憶装置が特定されるＩ／Ｏ要求を受信した場合、必ずしもアクセス不可能とはならない。なぜなら、そのグローバル論理記憶装置は前記他のコントローラモジュールが管理するローカル論理記憶装置に関連付けられているため、前記他のコントローラモジュールが、前記ローカル論理記憶装置にアクセスすることができる可能性があるからである。
【００１９】
実施形態１０では、実施形態９において、前記各コントローラモジュールが、グローバルデバイス回復部を更に備える。前記グローバルデバイス回復部が、前記一以上の転送経路のうちのいずれかの転送経路の回復が検出された場合に、前記コントローラモジュールの管理対象であるローカル論理記憶装置に関連付けられているグローバル論理記憶装置の識別子を、前記他のコントローラモジュールに通知し、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置の状態を、前記他のコントローラモジュールに問い合わせ、前記問い合わせの結果が正常の場合、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置を回復する。
【００２０】
上述したアクセス制御部、データ移行制御部、グローバルデバイス閉塞部、及びグローバルデバイス回復部のうちの少なくとも一つは、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００２１】
以下、図面を参照して、本発明の一つの実施形態を詳細に説明する。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ（ＣＰＵ）によって処理が行われるものとする。
【００２２】
図１は、本発明の一実施形態に係る記憶装置システムの構成を示す。
【００２３】
記憶装置システム１１０は、Ｊ台（Ｊは２以上の整数）の記憶装置システムモジュール１１１で構成される。記憶装置システムモジュール１１１単位で増設或いは減設することが可能である。そのため、記憶装置システムモジュール１１１の数を多くすれば、大容量且つ高性能の大規模構成とすることができるし、記憶装置システムモジュール１１１の数を少なくすれば、低コストの小規模構成とすることができる。
【００２４】
記憶装置システム１１０には、Ｊ台の記憶装置システムモジュール１１１のうちの一以上の記憶装置システムモジュールを保守するための一又は複数の情報処理端末（以下、「保守端末」と言う）１１３が備えられている。一又は複数の保守端末１１３は、管理端末１０７と通信する。管理端末１０７又は保守端末１１３は、Ｊ台の記憶装置システムモジュール１１１のうちの任意の又は所定の記憶装置システムモジュール１１１に、種々の要求を送信する。
【００２５】
通信ネットワーク１０５に、Ｊ台の記憶装置システムモジュール１１１、管理端末１０７及びホストコンピュータ（以下、「ホスト」と言う）１０１が接続される。例えば、ホスト１０１内のＣＰＵ（Central Processing Unit）でアプリケーションプログラム１０３が実行されることにより、Ｉ／Ｏ要求（Input／Output要求（ライト／リード要求））が記憶装置システム１１０に送信される。
【００２６】
各記憶装置システムモジュール１１１は、一又は複数の物理記憶装置（以下、「ＰＤＥＶ」と言う）１１２を備える。ＰＤＥＶ１１２としては、例えば、ハードディスクドライブ（ＨＤＤ）、フラッシュメモリドライブなど、記憶メディアを有するドライブを採用することができる。
【００２７】
各記憶装置システムモジュール１１１は、自分（自モジュール）が備える一又は複数のＰＤＥＶ１１２に基づく一又は複数のＬＤＥＶ（以下、「ローカルＬＤＥＶ」と言う）と、ホスト１０１から指定される番号であるＬＵＮ（Logical Unit Number）などを管理するが、他の記憶装置システムモジュール（以下、「他モジュール」と言うことがある）１１１が管理する一又は複数のローカルＬＤＥＶやＬＵＮ等を管理しない。別の言い方をすれば、各記憶装置システムモジュール１１１には、ＰＤＥＶ層と、ローカルＬＤＥＶ層とが論理的に存在するが、ＰＤＥＶ層及びローカルＬＤＥＶ層は、各記憶装置システムモジュール１１１に収まっており、他の記憶装置システムモジュール１１１に跨っていない。
【００２８】
本実施形態では、ローカルＬＤＥＶ層の上位であって、ＬＵＮの下位に、グローバルＬＤＥＶ層が設けられる。グローバルＬＤＥＶ層は、ローカルＬＤＥＶ層と違って、Ｊ台の記憶装置システムモジュール１１１に跨っている。別の言い方をすれば、本実施形態では、個々の記憶装置システムモジュール１１１でのみ管理されるローカルＬＤＥＶの上位に、Ｊ台の（つまり全ての）記憶装置システムモジュール１１１で管理されるグローバルＬＤＥＶが設けられる。ローカルＬＤＥＶは、一以上のＰＤＥＶ１１２に基づく実体的なＬＤＥＶであっても良いし、図示しない他の記憶装置システム内のＬＤＥＶに関連付けられた仮想的なＬＤＥＶであっても良い。それに対し、グローバルＬＤＥＶは、仮想的なＬＤＥＶであって、複数の記憶装置システムモジュール１１１内の複数のローカルＬＤＥＶのうちのいずれかに関連付けられるＬＤＥＶである。また、グローバルＬＤＥＶには、ＬＵＮが関連付けられる。
【００２９】
例えば、ＬＵＮ＃００を指定したＩ／Ｏ要求を記憶装置システムモジュール＃０が受信した場合、記憶装置システムモジュール＃０は、ＬＵＮ＃００に関連付いたグローバルＬＤＥＶ＃０に関連付けられているローカルＬＤＥＶ＃００が自モジュールの管理対象であるか（自モジュールの配下にあるか）他モジュール１１１の管理対象かを判断する。ここでは、自モジュールの管理対象であると判断されるので、記憶装置システムモジュール＃０は、受信したＩ／Ｏ要求に従って、ローカルＬＤＥＶ＃００にアクセスする。その結果、ローカルＬＤＥＶ＃００の基になっているＰＤＥＶ＃００及び＃０１に対するアクセスが行われる。
【００３０】
もし、ＬＵＮ＃２０を指定したＩ／Ｏ要求を記憶装置システムモジュール＃０が受信した場合には、そのＩ／Ｏ要求は、直接的に又は間接的に（例えば少なくとも一つの他モジュール１１１を経由して）、記憶装置システムモジュール＃０から記憶装置システムモジュール＃２に転送される。なぜなら、ＬＵＮ＃２０に関連付いたグローバルＬＤＥＶ＃１に関連付けられているローカルＬＤＥＶは、記憶装置システムモジュール＃０の管理対象ではなく、記憶装置システムモジュール＃２の管理対象であるため、上記の判断で、そのローカルＬＤＥＶは他モジュールの管理対象であると判断されるからである。
【００３１】
なお、グローバルＬＤＥＶには、複数のＬＵＮを関連付けることが可能である。言い換えれば、グローバルＬＤＥＶを結ぶパスを複数本設定することが可能である。例えば、図１の例では、ホスト１０１から記憶装置システムモジュール＃０及び＃１が所定の照会コマンド（例えばInquiryコマンド）を受信した場合、記憶装置システムモジュール＃０は、ＬＵＮ＃００に関連付けられたデバイスとしてグローバルＬＤＥＶ＃０のグローバルＬＤＥＶ番号をホスト１０１に回答し、記憶装置システムモジュール＃１は、ＬＵＮ＃１０に関連付けられたデバイスとしてグローバルＬＤＥＶ＃０のグローバルＬＤＥＶ番号をホスト１０１に回答する。このため、ホスト１０１は、同一のグローバルＬＤＥＶ＃０に対して異なるＬＵＮが関連付けられていることを知ることができる。故に、ホスト１０１は、グローバルＬＤＥＶ＃０に繋がる複数のパスを認識することができる。ホスト１０１は、グローバルＬＤＥＶ＃０にアクセスするときは、複数のパスのうちの一つのパスを任意に又は所定の規則に従って選択し、選択したパスに対応したＬＵＮを指定したＩ／Ｏコマンドを送信する。図１の例によれば、ホスト１０１は、ＬＵＮ＃００を指定したＩ／Ｏコマンドを送信しても、ＬＵＮ＃１０を指定したＩ／Ｏコマンドを送信しても、ローカルＬＤＥＶ＃００にアクセスすることができる。
【００３２】
図２は、記憶装置システムモジュール１１１の構成を示す。
【００３３】
記憶装置システムモジュール１１１は、複数のＰＤＥＶ１１２で構成されたＰＤＥＶ群１２１と、ＰＤＥＶ群１２１におけるＰＤＥＶ１１２へのアクセスを制御する記憶制御装置（コントローラモジュール）１２０とを備える。なお、記憶装置システム１１０では、記憶装置システムモジュール単位であることに代えて、ＰＤＥＶ群（ＰＤＥＶモジュールと呼んでも良い）１２１の単位、或いは、記憶制御装置１２０の単位で、増設或いは減設が可能であっても良い。
【００３４】
記憶制御装置１２０は、フロントエンドインタフェース１２５と、バックエンドインタフェース１３３と、プロセッサパッケージ１６１と、メモリパッケージ１６３と、スイッチ１４１とを備える。これらの要素１２５、１３３、１６１、１６３及び１４１や、バックエンドインタフェース１３３から各ＰＤＥＶ１１２へのパスは、それぞれ、二重化されており、故に、一方に障害が発生しても他方を利用することが可能である。
【００３５】
フロントエンドインタフェース１２５は、ホスト１０１との通信を制御する回路基板である。フロントエンドインタフェース１２５は、例えば、ホスト１０１からＩ／Ｏ要求を受け付ける複数のポート１２９と、メモリ（以下、「ローカルメモリ」と言う）１３１と、制御部１２７とを備える。制御部１２７は、例えば、ポート１２９とローカルメモリ１３１間の通信を制御するデータ転送回路である。制御部１２７は、例えば、ＤＭＡ（Direct Memory Access）回路を含んでいる。
【００３６】
バックエンドインタフェース１３３は、そのバックエンドインタフェース１３３に接続されている各ＰＤＥＶとの通信を制御する回路基板である。
バックエンドインタフェース１３３は、例えば、ＰＤＥＶ１１２と通信する複数のポート１３５と、メモリ（以下、「ローカルメモリ」と言う）１３７と、制御部１３９とを備える。制御部１３９は、例えば、ポート１３５とローカルメモリ１３７間の通信を制御するデータ転送回路である。
【００３７】
プロセッサパッケージ１６１は、一又は複数のプロセッサ（典型的にはマイクロプロセッサ）１４７と、メモリ（以下、「ローカルメモリ」と言う）１４３と、制御部１３９とを備える。プロセッサ１４７は、フロントエンド処理（ホスト１０１に対する処理）とバックエンド処理（ローカルＬＤＥＶに対する処理）などを行う。制御部１３９は、例えば、プロセッサ１４７とローカルメモリ１４３間の通信を制御するデータ転送回路である。ローカルメモリ１４３には、制御部１３９を介してプロセッサ１４７に読み込まれて実行されるコンピュータプログラムとして、例えば、デバイス定義プログラム１５１、デバイス削除プログラム１５２、リードプログラム１５３、障害回復プログラム１５４、データ移行プログラム１５５、障害閉塞プログラム１５６、ライトプログラム１５７、パス削除プログラム１５８及びパス定義プログラム１５９が記憶される。デバイス定義プログラム１５１は、グローバルＬＤＥＶを定義するためのプログラムである。デバイス削除プログラム１５２は、グローバルＬＤＥＶを削除するためのプログラムである。リードプログラム１５３は、受信したリード要求に関する処理を行うプログラムである。障害回復プログラム１５４は、障害発生による閉塞から回復したグローバルＬＤＥＶに関する処理を行うプログラムである。データ移行プログラム１５５は、グローバルＬＤＥＶ間のデータ移行に関する処理を行うプログラムである。障害閉塞プログラム１５６は、障害発生によってグローバルＬＤＥＶを閉塞するためのプログラムである。ライトプログラム１５７は、受信したライト要求に関する処理を行うプログラムである。パス削除プログラム１５８は、グローバルＬＤＥＶに繋がるパスを削除するためのプログラムである。パス定義プログラム１５９は、グローバルＬＤＥＶに繋がるパスを定義するためのプログラムである。
【００３８】
メモリパッケージ１６３は、揮発性のメモリであるキャッシュメモリ１６５と、キャッシュメモリ１６５に対するデータの書き込みや読み出しの際のインタフェースとなる制御部（アダプタ）１６７とを有する回路基板である。キャッシュメモリ１６５には、ローカルＬＤＥＶに書き込まれるライト対象のデータ（以下、「ライトデータ」と言う）や、ローカルＬＤＥＶから読み出されたリード対象のデータ（以下、「リードデータ」と言う）が一時的に記憶される。また、キャッシュメモリ１６５には、管理情報が記憶される。管理情報については、後に、図３乃至図１１Ｂを参照して詳細に説明する。また、電源障害時、キャッシュメモリ１６５に記憶中のデータで、ホストから更新されＰＤＥＶ群１２１に未書き込みのデータの喪失を回避するため、キャッシュメモリ１６５をバッテリバックアップしてもよい。また、フラッシュメモリ等の不揮発のメモリ媒体でキャッシュメモリ１６５を構成しても良い。
【００３９】
スイッチ１４１は、フロントエンドインタフェース１２５、バックエンドインタフェース１３３、プロセッサパッケージ１６１及びメモリパッケージ１６３の各々の間の通信を制御する回路基板である。スイッチ１４１には、フロントエンドインタフェース１２５、バックエンドインタフェース１３３、プロセッサパッケージ１６１及びメモリパッケージ１６３が接続される。また、スイッチ１４１は、拡張ポートを有し、他の記憶装置システムモジュール１１１内のスイッチ１４１に、拡張ポート及びリンク（例えばケーブル）１を介して接続される。すなわち、記憶装置システムモジュール１１１が他の記憶装置システムモジュール１１１との間でデータのやりとりを行うことができるよう接続される。
【００４０】
記憶装置システムモジュール１１１同士の接続は、フロントエンドインタフェース１２５同士或いはバックエンドインタフェース１３３同士が接続されることにより実現されても良いが、本実施形態では、前述したように、スイッチ１４１同士が接続されることにより実現される。例えば、全ての記憶装置システムモジュール１１１内の全てのスイッチ１４１が、それぞれ、他の全てのスイッチ１４１と接続する。これにより、例えば、どの記憶装置システムモジュール１１１も、所望の他の記憶装置システムモジュール１１１に、一つ以上の他の記憶装置システムモジュール１１１を経由することなく、ホスト１０１から受信したＩ／Ｏ要求を転送することができる。
【００４１】
なお、スイッチ１４１同士の接続は、前述の例に限らず、一つのスイッチ１４１が少なくとも一つの他のスイッチ１４１と接続されていれば良い。言い換えれば、或る記憶装置システムモジュール１１１から他の記憶装置システムモジュール１１１にＩ／Ｏ要求を転送する場合に、一つ以上のまた別の記憶装置システムモジュール１１１が経由されても良い。
【００４２】
以下、フロントエンドインタフェース１２５、バックエンドインタフェース１３３、プロセッサパッケージ１６１及びメモリパッケージ１６３のそれぞれのパッケージ間の、スイッチ１４１により実現されている結合を、「密結合」と呼び、記憶装置システムモジュール１１１内のスイッチ１４１と他の記憶装置システムモジュール１１１内のスイッチ１４１同士の結合を、「疎結合」と呼ぶことがある。なぜなら、一つの記憶装置システムモジュール１１１内でのパッケージ間では、当該記憶装置システムモジュール１１１のキャッシュメモリ１６５に記憶される管理情報を直接参照及び更新することを可能とし、一方、記憶装置システムモジュール１１１間での管理情報のやり取りは、他の記憶装置システムモジュール１１１のキャッシュメモリ１６５に記憶される管理情報を直接参照及び更新することを許さず、他のプロセッサパッケージ１６１のプロセッサ１４７に依頼することで間接的に参照及び更新させるためである。つまり、密結合とは、管理情報を直接的に参照/更新する結合（つまりスイッチ１４１により実現されている結合）を言い、疎結合とは、管理情報を間接的に参照及び更新する結合（つまりスイッチ同士のリンクにより実現されている結合）を言う。
【００４３】
以下、キャッシュメモリ１６５に記憶される管理情報について詳細に説明する。なお、管理情報は、キャッシュメモリ１６５に限らず、記憶装置システムモジュール１１１内の別の記憶資源（例えばローカルメモリ１３１、１３７、又は１４３）に記憶されても良い。また、以下の説明では、情報要素を表すときには、大カッコ（［］）を利用して表すことにする。
【００４４】
図３は、管理情報の構成を示す。以下、図３乃至図１１Ｂの説明において、この管理情報を有する記憶装置システムモジュール１１１を、「自モジュール１１１」と言い、自モジュール１１１以外の記憶装置システムモジュール１１１を、「他モジュール１１１」と言う。
【００４５】
管理情報２００は、この管理情報２００を保持する記憶装置システムモジュール１１１に関する構成や、グローバルＬＤＥＶなどに関する情報である。管理情報２００には、例えば、パス管理情報２０１、ボリューム管理情報２０３、構成管理情報２１１及びデータ移行管理情報２１７が含まれる。ボリューム管理情報２０３には、グローバルＬＤＥＶ管理情報２０５、ローカルＬＤＥＶ管理情報２０７及びＰＤＥＶ管理情報２０９が含まれる。構成管理情報２１１には、モジュール実装管理情報２１３及び構成部位管理情報２１５が含まれる。
【００４６】
図４Ａは、パス管理情報２０１の構成を示す。
【００４７】
パス管理情報２０１は、グローバルＬＤＥＶに繋がるパスに関する情報である。パス管理情報２０１は、複数のパスエントリ２０１１で構成される。各パスエントリ２０１１は、自モジュール１１１が有する各パスに対応する。
【００４８】
図４Ｂは、パスエントリ２０１１の構成を示す。以下、図４Ｂの説明において、このパスエントリ２０１１に対応するパスを、「対象パス」と言う。
【００４９】
パスエントリ２０１１には、［ポート番号］、［ＬＵＮ］、［グローバルＬＤＥＶ番号］及び［状態］が含まれる。［ポート番号］は、対象パスが経由するポート１２９（フロントエンドインタフェース１２５が有するポート１２９）の番号である。［ＬＵＮ］は、対象パスが経由するＬＵＮである。［グローバルＬＤＥＶ番号］は、対象パスに繋がるグローバルＬＤＥＶの番号である。［状態］は、対象パスに繋がるグローバルＬＤＥＶの状態である。［状態］としては、例えば、正常であることを意味する“正常”や、自モジュール１１１によるグローバルＬＤＥＶに対するアクセスが不可能であることを意味する“閉塞”がある。
【００５０】
図５Ａは、グローバルＬＤＥＶ管理情報２０５の構成を示す。
【００５１】
グローバルＬＤＥＶ管理情報２０５は、複数のグローバルＬＤＥＶに関する情報である。グローバルＬＤＥＶ管理情報２０５は、空きグローバルＬＤＥＶ番号管理情報２０５１、グローバルＬＤＥＶディレクトリ２０５２、複数のグローバルＬＤＥＶエントリ２０５３、空きグローバルＬＤＥＶエントリ管理情報２０５４で構成される。各グローバルＬＤＥＶエントリ２０５３は、各グローバルＬＤＥＶに対応する。
【００５２】
空きグローバルＬＤＥＶ番号管理情報２０５１は、空きのグローバルＬＤＥＶ番号を管理するための情報であり、例えばビットマップである。本実施形態では、図７Ｂに示すように、グローバルＬＤＥＶ番号はローカルＬＤＥＶ番号を含み、空きグローバルＬＤＥＶ番号管理情報２０５１では、グローバルＬＤＥＶに関連付け可能な空きのローカルＬＤＥＶ番号が管理される。グローバルＬＤＥＶ番号は、具体的には、例えば、図７Ｂに示すように、ローカルＬＤＥＶ番号と、モジュール番号と、世代番号とで構成される。モジュール番号は、このグローバルＬＤＥＶ番号に対応するグローバルＬＤＥＶを生成した記憶装置システムモジュール１１１の番号である。世代番号は、グローバルＬＤＥＶの世代を表す番号である。例えば、記憶装置システムモジュール１１１が、或るローカルＬＤＥＶを関連付けた第一のグローバルＬＤＥＶを定義（生成）した後に、再起動し、その後、同一のローカルＬＤＥＶ（上記或るローカルＬＤＥＶ）を関連付けた第二のグローバルＬＤＥＶを定義する際、第二のグローバルＬＤＥＶの番号に含まれる世代番号を、第一のグローバルＬＤＥＶの番号に含まれる世代番号と違える。なお、世代番号に代えて、例えば、グローバルＬＤＥＶを定義する際の日時など、他種の非重複コードを採用することが可能である。
【００５３】
グローバルＬＤＥＶディレクトリ２０５２は、グローバルＬＤＥＶエントリの索引となる情報である。グローバルＬＤＥＶディレクトリ２０５２は、図５Ｂに示すように、複数のハッシュ値にそれぞれ対応した複数のディレクトリ要素で構成される。ここで言う「ハッシュ値」とは、グローバルＬＤＥＶ番号のハッシュ値である。ディレクトリ要素には、［先頭ポインタ］と［終端ポインタ］とが含まれる。［先頭ポインタ］は、ディレクトリ要素の先頭のポインタであり、［終端ポインタ］は、このディレクトリ要素の終端のポインタである。
【００５４】
グローバルＬＤＥＶエントリ２０５３は、このグローバルＬＤＥＶエントリに対応するグローバルＬＤＥＶに関する情報である。以下、この段落において、このグローバルＬＤＥＶエントリに対応するグローバルＬＤＥＶを、「対象グローバルＬＤＥＶ」と言う。グローバルＬＤＥＶエントリ２０５３には、図６Ａに示すように、［グローバルＬＤＥＶ番号］、［モジュール番号］、［ローカルＬＤＥＶ番号］、［転送先プロセッサ情報］、［後方ポインタ］及び［前方ポインタ］が含まれる。［グローバルＬＤＥＶ番号］は、対象グローバルＬＤＥＶの番号である。［モジュール番号］は、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶを有する記憶装置システムモジュール１１１を識別するための番号である。対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが存在する記憶装置モジュール内でのグローバルＬＤＥＶエントリには、［モジュール番号］として、デバイス定義プログラム１５１の図１２のＳ１０８において、そのモジュールの番号が設定される。また、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが存在しない記憶装置モジュール内でのグローバルＬＤＥＶエントリには、［モジュール番号］として、パス定義プログラム１５９の図１３のＳ１１５においてＳ１１３で問合せた結果の番号が設定される。［ローカルＬＤＥＶ番号］は、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶの番号である。［ローカルＬＤＥＶ番号］は、そのローカルＬＤＥＶが自モジュール１１１に存在する場合に、グローバルＬＤＥＶエントリに含められる。［転送先プロセッサ情報］は、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶを有する他モジュール１１１内のプロセッサ１４７を同定するための情報である。従って、［転送先プロセッサ情報］は、そのローカルＬＤＥＶが他モジュール１１１に存在する場合に、グローバルＬＤＥＶエントリに含められる。［後方ポインタ］は、グローバルＬＤＥＶエントリの後方且つ直近の他のグローバルＬＤＥＶエントリを表すポインタ、或いは、グローバルＬＤＥＶエントリが繋がるディレクトリ要素の［終端ポインタ］である。［前方ポインタ］は、グローバルＬＤＥＶエントリの前方且つ直近の他のグローバルＬＤＥＶエントリを表すポインタ、或いは、グローバルＬＤＥＶエントリが繋がるディレクトリ要素の［前方ポインタ］である。
【００５５】
空きグローバルＬＤＥＶエントリ管理情報２０５４は、空きのグローバルＬＤＥＶエントリを管理するための情報である。空きグローバルＬＤＥＶエントリ管理情報２０５４は、図６Ｂに示すように、［空きエントリ先頭ポインタ］、［空きエントリ終端ポインタ］、及び［空きエントリ数］を含む。空きグローバルＬＤＥＶエントリは、例えばキュー形式で管理されている。［空きエントリ先頭ポインタ］は、先頭の空きグローバルＬＤＥＶエントリのポインタである。［空きエントリ終端ポインタ］は、終端の空きグローバルＬＤＥＶエントリのポインタである。［空きエントリ数］は、空きグローバルＬＤＥＶエントリの数である。
【００５６】
図７Ａは、グローバルＬＤＥＶ管理情報２０５の概念を示す。
【００５７】
空きグローバルＬＤＥＶ番号管理情報２０５１を参照することで、空きのローカルＬＤＥＶ番号が特定され、その特定されたローカルＬＤＥＶ番号を含んだグローバルＬＤＥＶ番号が生成される。
【００５８】
空きグローバルＬＤＥＶエントリ管理情報２０５４を参照することにより、空きグローバルＬＤＥＶエントリ（図７Ａにおいて“無効”と書かれているブロック）が特定される。
【００５９】
生成されたグローバルＬＤＥＶ番号のハッシュ値が算出され、ハッシュ値に対応するディレクトリ要素に、直接的に又は間接的に（他のローカルＬＤＥＶとまた別のローカルＬＤＥＶとの間に）、特定された空きグローバルＬＤＥＶエントリが関連付けられる。その空きグローバルＬＤＥＶエントリに、所定種類の情報要素が含められる。
【００６０】
図７Ａから分かるように、グローバルＬＤＥＶ番号が異なっていても同一のハッシュ値になることがある。
【００６１】
図８Ａは、ローカルＬＤＥＶ管理情報２０７の構成を示す。
【００６２】
ローカルＬＤＥＶ管理情報２０７は、自モジュール１１１に存在する複数のローカルＬＤＥＶに関する情報である。ローカルＬＤＥＶ管理情報２０７は、複数のローカルＬＤＥＶエントリ２０７１で構成される。各ローカルＬＤＥＶエントリ２０７１は、自モジュール１１１が有する各ローカルＬＤＥＶに対応する。
【００６３】
図８Ｂは、ローカルＬＤＥＶエントリ２０７１の構成を示す。以下、図８Ｂの説明において、このローカルＬＤＥＶエントリ２０７１に対応するローカルＬＤＥＶを、「対象ローカルＬＤＥＶ」と言う。
【００６４】
ローカルＬＤＥＶエントリ２０７１には、［ローカルＬＤＥＶ番号］、［グローバルＬＤＥＶ番号］、［ＰＤＥＶパス番号］、［ＲＡＩＤグループ番号］、「先頭アドレス」、「終端アドレス」、［容量］、［ボリューム属性］及び［状態］が含まれる。［ローカルＬＤＥＶ番号］は、対象ローカルＬＤＥＶの番号である。［グローバルＬＤＥＶ番号］は、対象ローカルＬＤＥＶが関連付いているグローバルＬＤＥＶの番号である。［ＰＤＥＶパス番号］は、対象ローカルＬＤＥＶの基になっている各ＰＤＥＶへのパスを表す番号である。［ＲＡＩＤグループ番号］は、対象ローカルＬＤＥＶを有するＲＡＩＤグループ（複数のＰＤＥＶ１１２で構成された、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）に従うグループ）の番号である。「先頭アドレス」は、そのＲＡＩＤグループにおける、対象ローカルＬＤＥＶに対応した連続した領域の先頭のアドレスである。「終端アドレス」は、その連続した領域の終端のアドレスである。［容量］は、対象ローカルＬＤＥＶの記憶容量である。［ボリューム属性］は、対象ローカルＬＤＥＶの属性（種類）である。［状態］は、対象ローカルＬＤＥＶの状態である。［状態］としては、例えば、正常であることを意味する“正常”や、アクセスが不可能であることを意味する“閉塞”がある。
【００６５】
図９Ａは、ＰＤＥＶ管理情報２０９の構成を示す。
【００６６】
ＰＤＥＶ管理情報２０９は、自モジュール１１１に存在する複数のＰＤＥＶ１１２に関する情報である。ＰＤＥＶ管理情報２０９は、複数のＰＤＥＶエントリ２０９１で構成される。各ＰＤＥＶエントリ２０９１は、自モジュール１１１が有する各ＰＤＥＶ１１２に対応する。
【００６７】
図９Ｂは、ＰＤＥＶエントリ２０９１の構成を示す。以下、図９Ｂの説明において、このＰＤＥＶエントリ２０９１に対応するＰＤＥＶを、「対象ＰＤＥＶ」と言う。
【００６８】
ＰＤＥＶエントリ２０９１には、［ＰＤＥＶ番号］、［ＰＤＥＶパス番号］、［ＲＡＩＤグループ番号］、［ＰＤＥＶ状態］及び［容量］が含まれる。［ＰＤＥＶ番号］は、対象ＰＤＥＶの番号である。［ＰＤＥＶパス番号］は、対象ＰＤＥＶへのパスを表す番号である。［ＲＡＩＤグループ番号］は、対象ＰＤＥＶを含んだＲＡＩＤグループの番号である。「ＰＤＥＶ状態」は、対象ＰＤＥＶの状態（例えば“閉塞”、“正常”など）である。［容量］は、対象ＰＤＥＶの記憶容量である。
【００６９】
図１０Ａは、モジュール実装管理情報２１３の構成を示す。
【００７０】
モジュール実装管理情報２１３は、Ｊ台の記憶装置モジュール１１１に関する情報である。モジュール実装管理情報２１３は、Ｊ個のモジュールエントリ２１３１で構成される。各モジュールエントリ２１３１は、各記憶装置システムモジュール１１１に対応する。
【００７１】
図１０Ｂは、モジュールエントリ２１３１の構成を示す。以下、図１０Ｂの説明において、このモジュールエントリ２１３１に対応する記憶装置システムモジュールを、「対象モジュール」と言う。
【００７２】
モジュールエントリ２１３１には、［実装］、［状態］及び［転送先プロセッサ情報］が含まれる。［実装］は、対象モジュール１１１が実装か非実装かを表す。［状態］は、対象モジュールの状態（例えば“正常”、“閉塞”）を表す。［転送先プロセッサ情報］は、対象モジュール１１１にとっての他モジュール１１１内の転送先プロセッサに関する情報である。この［転送先プロセッサ情報］は、図６Ａに示した［転送先プロセッサ情報］と同じであっても良いが、本実施形態では異なる。具体的には、図１０Ｂに示した［転送先プロセッサ情報］は、複数の転送先プロセッサに関する情報であり、一方、図６Ａに示した［転送先プロセッサ情報］は、一つの転送先プロセッサに関する情報である。もし、その一つの転送先プロセッサにＩ／Ｏ要求を転送することができない場合には、別の転送先プロセッサを、図１０Ｂに示した［転送先プロセッサ情報］が表す複数の転送先プロセッサから選択し、選択した別の転送先プロセッサにＩ／Ｏ要求を転送することが可能である。
【００７３】
図１０Ｃは、構成部位管理情報２１５の構成を示す。
【００７４】
構成部位管理情報２１５は、自モジュール１１１の複数の構成部位に関する情報である。ここで言う「構成部位」は、フロントエンドインタフェース１２５、プロセッサパッケージ１６１等のように大きな単位であっても良いし、ローカルメモリ１３１、ポート１２９、プロセッサ１４７等のように小さな単位であっても良い。構成部位管理情報２１５は、複数の構成部位エントリ２１５１で構成される。各構成部位エントリ２１５１は、自モジュール１１１内の各構成部位に対応する。
【００７５】
図１０Ｄは、構成部位エントリ２１５１の構成を示す。以下、図１０Ｂの説明において、この構成部位エントリ２１５１に対応する構成部位を、「対象構成部位」と言う。
【００７６】
構成部位エントリ２１５１には、［実装］、［状態］及び［障害発生回数］が含まれる。［実装］は、対象構成部位が実装か非実装かを表す。［状態］は、対象構成部位の状態（例えば“正常”、“閉塞”）を表す。［障害発生回数］は、対象構成部位の障害が検出された回数を表すカウント値である。
【００７７】
図１１Ａは、データ移行管理情報２１７の構成を示す。
【００７８】
データ移行管理情報２１７は、データ移行に関する情報である。データ移行管理情報２１７は、１又は複数のデータ移行エントリ２１７１で構成される。各データ移行エントリ２１７１は、各データ移行に対応する。
【００７９】
図１１Ｂは、データ移行エントリ２１７１の構成を示す。以下、図１１Ｂの説明において、このデータ移行エントリ２１７１に対応するデータ移行を、「対象データ移行」と言う。
【００８０】
データ移行エントリ２１７１には、［移行元グローバルＬＤＥＶ番号］、［移行先グローバルＬＤＥＶ番号］、［移行状態］及び［移行データ転送進捗ポインタ］が含まれる。［移行元グローバルＬＤＥＶ番号］は、対象データ移行におけるデータの移行元グローバルＬＤＥＶの番号である。［移行先グローバルＬＤＥＶ番号］は、対象データ移行におけるデータの移行先グローバルＬＤＥＶの番号である。［移行状態］は、対象データ移行の状態（例えば“移行中”、“移行終了”）である。［移行データ転送進捗ポインタ］は、対象データ移行の進捗を表すポインタであって、具体的には、移行元グローバルＬＤＥＶの先頭からどこまでのデータの移行が済んでいるかを表すポインタである。
【００８１】
以下、各種コンピュータプログラムの動作を説明する。なお、以下の説明において、説明の対象のコンピュータプログラムが実行されるプロセッサ１４７を有した記憶装置システムモジュールを、「自モジュール」と言い、自モジュール１１１以外の記憶装置システムモジュール１１１を、「他モジュール」と言う。
【００８２】
図１２は、デバイス定義プログラム１５１の動作のフローチャートである。
【００８３】
自モジュール１１１が、保守端末１１３又は管理端末１０７からデバイス定義要求を受信した場合に、デバイス定義プログラム１５１が起動する。
【００８４】
デバイス定義プログラム１５１は、保守端末１１３又は管理端末１０７に、一又は複数の空きＰＤＥＶ領域を表す情報及び一又は複数の空きローカルＬＤＥＶ番号を送信する（Ｓ１０１）。これにより、保守端末１１３又は管理端末１０７が有する表示装置（図示せず）に、一又は複数の空きＰＤＥＶ領域を表す情報及び一又は複数の空きローカルＬＤＥＶ番号が表示される。なお、「空きＰＤＥＶ領域」とは、ＲＡＩＤグループにおける、未だローカルＬＤＥＶとして使用されていない記憶領域のことである。デバイス定義プログラム１５１は、グローバルＬＤＥＶ管理情報２０５（特に、各ローカルＬＤＥＶエントリ２０７１内の［ＲＡＩＤグループ番号］、［先頭アドレス］、［終端アドレス］やＰＤＥＶ管理情報２０９を参照することにより、空きＰＤＥＶ領域を特定する。また、デバイス定義プログラム１５１は、ローカルＬＤＥＶ管理情報２０７のローカルＬＤＥＶエントリ２０７１の設定状態を参照する等して、空きローカルＬＤＥＶ番号を特定する。
【００８５】
デバイス定義プログラム１５１は、一又は複数のＰＤＥＶ領域のうちの指定されたＰＤＥＶ領域を表す情報と、一又は複数の空きローカルＬＤＥＶ番号のうちの指定されたローカルＬＤＥＶ番号とを含んだローカルＬＤＥＶエントリ２０７１を作成し、ローカルＬＤＥＶ管理情報２０７に追加する（Ｓ１０２）。なお、「指定されたＰＤＥＶ領域」及び「指定されたローカルＬＤＥＶ番号」は、保守端末１１３又は管理端末１０７のオペレータによって指定されたＰＤＥＶ領域及びローカルＬＤＥＶ番号である。
【００８６】
デバイス定義プログラム１５１は、指定されたローカルＬＤＥＶ番号を含んだグローバルＬＤＥＶ番号を生成する（Ｓ１０３）。
【００８７】
デバイス定義プログラム１５１は、生成したグローバルＬＤＥＶ番号は既に使用中であるか否かを判断する（Ｓ１０４）。もし、グローバルＬＤＥＶ管理情報２０５内に、生成したグローバルＬＤＥＶ番号と同じグローバルＬＤＥＶ番号が含まれていれば、Ｓ１０４では、使用中との判断になり（Ｓ１０４でＹ）、そうでなければ、使用中ではないとの判断になる（Ｓ１０４でＮ）。
【００８８】
Ｓ１０４でＹの場合、デバイス定義プログラム１５１は、空きグローバルLDEV番号管理情報２０５１を参照し空きのグローバルLDEV番号を特定する等の方法より、別のグローバルＬＤＥＶ番号を生成する（Ｓ１０５）。このＳ１０５では、グローバルＬＤＥＶ管理情報２０５内に存在しないグローバルＬＤＥＶ番号が生成される。
【００８９】
デバイス定義プログラム１５１は、Ｓ１０３又はＳ１０５で生成したグローバルＬＤＥＶ番号を、保守端末１１３又は管理端末１０７に送信する（Ｓ１０６）。これにより、保守端末１１３又は管理端末１０７が有する表示装置（図示せず）に、グローバルＬＤＥＶ番号が表示される。デバイス定義プログラム１５１は、送信したグローバルＬＤＥＶ番号が保守端末１１３又は管理端末１０７から指定されれば（Ｓ１０７でＹ）、Ｓ１０８を実行し、指定されなければ（Ｓ１０７でＮ）、Ｓ１０５を実行する。
【００９０】
Ｓ１０８で、デバイス定義プログラム１５１は、空きグローバルＬＤＥＶエントリ管理情報２０５４を参照することにより、一つの空きグローバルＬＤＥＶエントリを選択し、選択した空きグローバルＬＤＥＶエントリに、指定されたグローバルＬＤＥＶ番号を含める。
【００９１】
Ｓ１０９で、デバイス定義プログラム１５１は、指定されたグローバルＬＤＥＶ番号を含んだグローバルＬＤＥＶエントリを、グローバルＬＤＥＶディレクトリ２０５２に接続する。なお、接続先は、指定されたグローバルＬＤＥＶ番号のハッシュ値に対応したディレクトリ要素、或いは、そのディレクトリ要素に直接的に又は間接的に接続されている他のグローバルＬＤＥＶエントリ２０５３となる。また、デバイス定義プログラム１５１は、上記追加したローカルＬＤＥＶエントリに、指定されたグローバルＬＤＥＶ番号を含める。
【００９２】
図１３は、パス定義プログラム１５９の動作のフローチャートである。
【００９３】
自モジュール１１１が、保守端末１１３又は管理端末１０７からパス定義要求を受信した場合に、パス定義プログラム１５９が起動する。パス定義要求には、例えば、ポート番号、ＬＵＮ及びグローバルＬＤＥＶ番号が含まれている。
【００９４】
パス定義プログラム１５９は、自モジュールのグローバルLDEV管理情報２０５のグローバルLDEVディレクトリ２０５２を参照し（Ｓ１１１）、パス定義要求内のグローバルＬDＥＶ番号から同定されるグローバルＬＤＥＶ（以下、図１３の説明において、「指定グローバルＬＤＥＶ」と言う）が存在するか否かを判断する（Ｓ１１２）。パス定義要求内のグローバルＬＤＥＶ番号が、グローバルＬＤＥＶ管理情報２０５に含まれていれば、肯定的な判断結果となり（Ｓ１１２でＹ）、そうでなければ、否定的な判断結果となる（Ｓ１１２でＮ）。
【００９５】
Ｓ１１２でＹの場合、パス定義プログラム１５９は、後述のＳ１１３乃至Ｓ１１６を行わずに、Ｓ１１７を実行すること（すなわち、パス定義要求内のポート番号、ＬＵＮ及びグローバルＬＤＥＶ番号を含んだパスエントリ２０１１をパス管理情報２０１に追加すること）ができる。なぜなら、指定グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが自モジュール１１１にあるか、あるいは、他モジュールにあるが既にパス定義済み/データ移行先定義済みであるため、指定グローバルＬＤＥＶに対応したグローバルＬＤＥＶエントリ２０５３に、［ローカルＬＤＥＶ番号］あるいは［転送先プロセッサ情報］が含まれており、新たにグローバルＬＤＥＶエントリ２０５３を作成する必要がないためである。
【００９６】
Ｓ１１２でＮの場合、パス定義プログラム１５９は、指定グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが他モジュール１１１に存在するか否かを問合せ（Ｓ１１３）、結果を判断する（Ｓ１１４）。他モジュール１１１において指定グローバルＬＤＥＶの番号を含んだローカルＬＤＥＶエントリ２０７１がローカルＬＤＥＶ管理情報２０７内に存在すれば、肯定的な判断結果となり（Ｓ１１４でＹ）、そうでなければ、否定的な判断結果となる（Ｓ１１４でＮ）。Ｓ１１４でＮの場合、パス定義プログラム１５９は、パス定義の送信元（要求元）に、エラーを報告する（Ｓ１１８）。
【００９７】
Ｓ１１４でＹの場合、パス定義プログラム１５９は、Ｓ１１５及びＳ１１６を実行した上で、前述したＳ１１７を実行する。
【００９８】
Ｓ１１５で、パス定義プログラム１５９は、空きグローバルＬＤＥＶエントリ管理情報２０５４を参照することにより、一つの空きグローバルＬＤＥＶエントリを選択する。なぜなら、自モジュール１１１内のグローバルＬＤＥＶ管理情報２０５には、未だ、指定グローバルＬＤＥＶに対応したグローバルＬＤＥＶエントリが含まれていないためである。
【００９９】
また、Ｓ１１５で、パス定義プログラム１５９は、指定グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶを有する他モジュール１１１内のプロセッサ１４７に関する情報を、［転送先プロセッサ情報］として、上記選択した空きグローバルＬＤＥＶエントリに含める。この［転送先プロセッサ情報］は、例えば、自モジュール１１１に対応したモジュールエントリ２１３１内の［転送先プロセッサ情報］を基に生成することができる。
【０１００】
Ｓ１１６で、パス定義プログラム１５９は、パス定義要求内のグローバルＬＤＥＶ番号を上記選択した空きグローバルＬＤＥＶエントリに含め、そのグローバルＬＤＥＶエントリを、グローバルＬＤＥＶディレクトリ２０５２に接続する。この後、前述したように、パス定義プログラム１５９は、Ｓ１１７を実行する。
【０１０１】
図１４は、リードプログラム１５３の動作のフローチャートである。
【０１０２】
自モジュール１１１がホスト１０１又は他モジュール１１１からリード要求を受信した場合に、リードプログラム１５３が起動する。
【０１０３】
リードプログラム１５３は、受信したリード要求がホスト１０１からのリード要求であれば（Ｓ１２２でＹ）、Ｓ１２３を実行し、受信したリード要求が他モジュール１１１からのリード要求であれば（Ｓ１２２でＮ）、Ｓ１２３を実行することなく、Ｓ１２４を実行する。この場合、例えば、リード要求の転送元が、リード要求の転送先に、Ｓ１２３で特定されるグローバルＬＤＥＶ番号を通知することで、リード要求の転送先において、後述の対象グローバルＬＤＥＶ番号を特定できるようにしても良い。或いは、例えば、受信したリード要求がホスト１０１からのリード要求であるか否かに関わらず、Ｓ１２３を行うようにしても良い。
【０１０４】
Ｓ１２３で、リードプログラム１５３は、受信したリード要求で指定されているポート番号及びＬＵＮに対応するグローバルＬＤＥＶ番号を、パス管理情報２０１から特定する。
【０１０５】
Ｓ１２４で、リードプログラム１５３は、特定されるグローバルＬＤＥＶ番号に対応したグローバルＬＤＥＶ（以下、図１４及び図１５の説明において、「対象グローバルＬＤＥＶ」と言う）に関連付けられているローカルＬＤＥＶが、自モジュールに存在するか否かを判断する。対象グローバルＬＤＥＶに対応したグローバルＬＤＥＶエントリ２０５３に、
［ローカルＬＤＥＶ番号］が含まれていれば、肯定的な判断結果となり（Ｓ１２４でＹ）、［転送先プロセッサ情報］が含まれていれば、否定的な判断結果となる（Ｓ１２４でＮ）。
【０１０６】
Ｓ１２４でＮであれば、リードプログラム１５３は、対象グローバルＬＤＥＶに対応したグローバルＬＤＥＶエントリ２０５３内の［転送先プロセッサ情報］から特定される、他モジュール１１１内のプロセッサ（以下、「転送先プロセッサ」と言う）１４７に、受信したリード要求を転送する（Ｓ１２５）。そして、リードプログラム１５３は、リード要求の転送先の他モジュール１１１（転送先プロセッサ１４７）からの、リードデータの位置の通知を待つ（Ｓ１２６）。
【０１０７】
Ｓ１２４でＹの場合、リードプログラム１５３は、自モジュール１１１内のキャッシュメモリ１６５にリードデータが存在するか否かを判断する（Ｓ１２７）。否定的な判断結果になれば（Ｓ１２７でＮ）、リードプログラム１５３は、リードデータを、自モジュール１１１内のローカルＬＤＥＶ（対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶ）の基になっているＰＤＥＶ１１２から読み出し、読み出したリードデータをキャッシュメモリ１６５に書き込む（Ｓ１２８）。
【０１０８】
リードプラグラム１５３は、上記受信したリード要求が他モジュール１１１からのリード要求であれば（Ｓ１２９でＹ）、リード要求の転送元の他モジュール１１１に、リードデータの位置を通知する（Ｓ１３０）。
【０１０９】
一方、リードプラグラム１５３は、Ｓ１２９でＮの場合、或いは、Ｓ１２６が実行された場合、リードデータのホスト１０１への送信（Ｓ１３１）と、リード終了のホスト１０１への報告（Ｓ１３２）とを行う。ホスト１０１へ送信されるリードデータは、Ｓ１２９でＮの場合でのＳ１３１であれば、自モジュール１１１内のキャッシュメモリ１６５に記憶されているリードデータであり、Ｓ１２６においてリードデータの位置の通知を受けた場合でのＳ１３１であれば、リード要求の転送先の他モジュール１１１内の通知された位置から取得されたリードデータである。
【０１１０】
図１５は、自モジュール１１１がホスト１０１からリード要求を受信し他モジュール１１１にそのリード要求を転送する場合でのリードデータ転送の流れの概要を示す。図１５の説明では、自モジュール１１１の番号を＃０とし、他モジュール１１１の番号を＃１とする。また、自モジュール＃０内の構成部位の参照番号の末尾に“Ａ”を付し、他モジュール＃１内の構成部位の参照番号の末尾に“Ｂ”を付す。以下、図１５に記載の手順（１）乃至手順（６）を説明する。
【０１１１】
（手順（１））自モジュール＃０がホスト１０１からリード要求を受信し、受信したリード要求が、ローカルメモリ１４３Ａ内の通信領域に書き込まれる。「通信領域」とは、記憶装置システムモジュール１１１間で通信されるデータが記憶される記憶領域である。
【０１１２】
（手順（２））ローカルメモリ１４３Ａ内の通信領域に書き込まれているリード要求が、他モジュール＃１内の転送先プロセッサ１４７Ｂに転送される。そして、転送先プロセッサ１４７Ｂによって、転送先プロセッサ１４７Ｂが受けたリード要求が、ローカルメモリ１４３Ｂ内の通信領域に書き込まれる。
【０１１３】
（手順（３））転送先プロセッサ１４７Ｂで実行されるリードプログラム（以下、「リードプログラム１５３Ｂ」と言う）によって、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶの基になっているＰＤＥＶ１２３Ｂから、リードデータが読み出され、そのリードデータが、キャッシュメモリ１６５Ｂに書き込まれる。
【０１１４】
（手順（４））リードプログラム１５３Ｂによって、キャッシュメモリ１６５Ｂにおけるリードデータの位置（以下、「転送元キャッシュアドレス」と言う）が、ローカルメモリ１４３Ｂ及び１４３Ａ内のそれぞれの通信領域を介して、自モジュール＃０内の転送元プロセッサ１４７Ａに通知される。
【０１１５】
（手順（５））転送元プロセッサ１４７Ａで実行されるリードプログラム（以下、「リードプログラム１５３Ａ」と言う）によって、転送元キャッシュアドレスが、フロントエンドパッケージ１２５Ａ（例えばそのパッケージ１２５Ａ内のＤＭＡ回路）に設定される。フロントエンドパッケージ１２５Ａによって、転送元キャッシュアドレス、つまり、キャッシュメモリ１６５Ｂにおけるリードデータの位置からリードデータが読み出され、そのリードデータが、フロントエンドパッケージ１２５Ａからホスト１０１に送信される。
【０１１６】
（手順（６））リードプログラム１５３Ａによって、リード終了が、ホスト１０１に報告される。
【０１１７】
以上のように、記憶装置システムモジュール１１１間でのデータ転送が、転送元モジュール１１１が転送先モジュール１１１にデータを書き込むことによって実現されるのではなく、転送先モジュール１１１が転送元モジュール１１１から通知された位置からデータを読み出すことによって実現される。これにより、転送元モジュール１１１によって転送先モジュール１１１内のデータが誤って破壊されてしまうことを回避することができる。これは、記憶装置システムモジュール１１１間でリード要求が転送されることに伴うリードデータ転送だけでなく、記憶装置システムモジュール１１１間でライト要求が転送されることに伴うライトデータ転送や、記憶装置システムモジュール１１１間でのデータ移行に伴うデータ転送でも同様である。
【０１１８】
図１６は、ライトプログラム１５７の動作のフローチャートである。
【０１１９】
自モジュール１１１がホスト１０１又は他モジュール１１１からライト要求を受信した場合に、ライトプログラム１５７が起動する。
【０１２０】
ライトプログラム１５７は、受信したライト要求がホスト１０１からのライト要求であれば（Ｓ１４２でＹ）、Ｓ１４５以降を実行し、受信したライト要求が他モジュール１１１からのライト要求であれば（Ｓ１４２でＮ）、Ｓ１４３及びＳ１４４を実行する。
【０１２１】
Ｓ１４３で、ライトプログラム１５７は、ライト要求の転送元の他モジュール１１１から通知された、他モジュール１１１が有するキャッシュメモリ１６５におけるバッファ領域内の位置から、自モジュール１１１のキャッシュメモリ１６５へ、ライトデータを移す。
【０１２２】
Ｓ１４４で、ライトプログラム１５７は、ライト要求の転送元の他モジュール１１１に、ライトデータ転送終了を通知する。
【０１２３】
Ｓ１４５で、ライトプログラム１５７は、受信したライト要求で指定されているポート番号及びＬＵＮに対応するグローバルＬＤＥＶ番号を、パス管理情報２０１から特定する。
【０１２４】
Ｓ１４６で、ライトプログラム１５７は、特定されるグローバルＬＤＥＶ番号に対応したグローバルＬＤＥＶ（以下、図１６及び図１７の説明において、「対象グローバルＬＤＥＶ」と言う）に関連付けられているローカルＬＤＥＶが、自モジュールに存在するか否かを判断する。対象グローバルＬＤＥＶに対応したグローバルＬＤＥＶエントリ２０５３に、
［ローカルＬＤＥＶ番号］が含まれていれば、肯定的な判断結果となり（Ｓ１４６でＹ）、［転送先プロセッサ情報］が含まれていれば、否定的な判断結果となる（Ｓ１４６でＮ）。
【０１２５】
Ｓ１４６でＮであれば、ライトプログラム１５７は、自モジュール１１１が有するキャッシュメモリ１６５内のバッファ領域に、ライト要求に従うライトデータを書き込む（Ｓ１４７）。ライトプログラム１５７は、対象グローバルＬＤＥＶに対応したグローバルＬＤＥＶエントリ２０５３内の［転送先プロセッサ情報］から特定される、他モジュール１１１内のプロセッサ（以下、「転送先プロセッサ」と言う）１４７に、受信したライト要求とライトデータ位置情報（転送元キャッシュアドレス）とを転送する（Ｓ１４８）。そして、ライトプログラム１５７は、転送先の他モジュール１１１（転送先プロセッサ１４７）からの、ライトデータ転送終了の通知を待つ（Ｓ１４９）。
【０１２６】
Ｓ１４６でＹの場合、ライトプログラム１５７は、ライトデータを、自モジュール１１１内のキャッシュメモリ１６５に書き込む（Ｓ１５０）。キャッシュメモリ１６５に書き込まれたライトデータは、Ｓ１５０と非同期に（Ｓ１５０に同期しても良い）、キャッシュメモリ１６５から、ライトプログラム１５７によって、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶの基になっているＰＤＥＶ１１２に書き込まれる。
【０１２７】
Ｓ１４９又はＳ１５０の後、ライトプログラム１５７は、ライト終了をホスト１０１に報告する（Ｓ１５１）。
【０１２８】
図１７は、自モジュール１１１がホスト１０１からライト要求を受信し他モジュール１１１にそのライト要求を転送する場合でのライトデータ転送の流れの概要を示す。図１７の説明では、図１５の説明と同様に、自モジュール１１１の番号を＃０とし、他モジュール１１１の番号を＃１とする。また、自モジュール＃０内の構成部位の参照番号の末尾に“Ａ”を付し、他モジュール＃１内の構成部位の参照番号の末尾に“Ｂ”を付す。以下、図１７に記載の手順（１）乃至手順（６）を説明する。
【０１２９】
（手順（１））自モジュール＃０がホスト１０１からライト要求を受信し、受信したライト要求が、ローカルメモリ１４３Ａ内の通信領域に書き込まれる。
【０１３０】
（手順（２））自モジュール＃０がホスト１０１からライト要求に従うライトデータを受信し、受信したライトデータが、転送元プロセッサ１４７Ａで実行されるライトプログラム（以下、「ライトプログラム１５７Ａ」と言う）によって、キャッシュメモリ１６５Ａ内のバッファ領域に書き込まれる。
【０１３１】
（手順（３））ローカルメモリ１４３Ａ内の通信領域に書き込まれているライト要求と、キャッシュメモリ１６５Ａ内のバッファ領域におけるライトデータの位置を示した情報である転送元キャッシュアドレスとが、ライトプログラム１５７Ａによって、他モジュール＃１内の転送先プロセッサ１４７Ｂに転送される。そして、転送先プロセッサ１４７Ｂによって、転送先プロセッサ１４７Ｂが受けたライト要求及び転送元キャッシュアドレスが、ローカルメモリ１４３Ｂ内の通信領域に書き込まれる。
【０１３２】
（手順（４））転送先プロセッサ１４７Ｂで実行されるライトプログラム（以下、「ライトプログラム１５７Ｂ」と言う）によって、ローカルメモリ１４３Ｂ内の通信領域に記憶されている転送元キャッシュアドレス、つまり、キャッシュメモリ１６５Ａ内のバッファ領域からライトデータが読み出され、キャッシュメモリ１６５Ｂに書き込まれる。キャッシュメモリ１６５Ｂに書き込まれたライトデータは、手順（４）の終了と非同期に（手順（４）の終了と同期しても良い）、キャッシュメモリ１６５Ｂから、対象グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶの基になっているＰＤＥＶ１１２に書き込まれる。
【０１３３】
（手順（５））ライトプログラム１５７Ｂによって、ライトデータ転送の終了が、転送元プロセッサ１４７Ａに報告される。
【０１３４】
（手順（６））ライトプログラム１５７Ａによって、ライト終了が、ホスト１０１に報告される。
【０１３５】
図１８は、パス削除プログラム１５８の動作のフローチャートである。
【０１３６】
自モジュール１１１が、保守端末１１３又は管理端末１０７からパス削除要求を受信した場合に、パス削除プログラム１５８が起動する。パス削除要求には、例えば、ポート番号、ＬＵＮ及びグローバルＬＤＥＶ番号が含まれている。
【０１３７】
パス削除プログラム１５８は、パス削除要求内のグローバルＬＤＥＶ番号から同定されるグローバルＬＤＥＶ（以下、図１８の説明において、「指定グローバルＬＤＥＶ」と言う）が定義済みか否かを判断する（Ｓ１６１）。パス削除要求内のグローバルＬＤＥＶ番号が、グローバルＬＤＥＶ管理情報２０５に含まれていれば、肯定的な判断結果となり（Ｓ１６１でＹ）、そうでなければ、否定的な判断結果となる（Ｓ１６１でＮ）。Ｓ１６１でＮの場合、パス削除プログラム１５８は、パス削除要求の送信元（要求元）に、エラーを報告する（Ｓ１６７）。
【０１３８】
Ｓ１６１でＹの場合、パス削除プログラム１５８は、指定グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶが自モジュール１１１に存在するか否かを判断する（Ｓ１６２）。指定グローバルＬＤＥＶの番号を含んだローカルＬＤＥＶエントリ２０７１がローカルＬＤＥＶ管理情報２０７内に存在すれば、肯定的な判断結果となり（Ｓ１６２でＹ）、そうでなければ、否定的な判断結果となる（Ｓ１６２でＮ）。Ｓ１６２でＹならば、パス削除プログラム１５８は、後述のＳ１６３乃至Ｓ１６５を行わずに、Ｓ１６６を実行すること（すなわち、パス削除要求内のポート番号、ＬＵＮ及びグローバルＬＤＥＶ番号を含んだパスエントリ２０１１をパス管理情報２０１から削除すること）ができる。
【０１３９】
Ｓ１６２でＮの場合、パス削除プログラム１５８は、自モジュール１１１に、指定グローバルＬＤＥＶに繋がる他のパス（削除対象パス以外のパス）が存在するか否か、また、指定グローバルLDEVがデータ移行元/移行先に該当するか否かを判断する（Ｓ１６３）。パス削除要求内のグローバルＬＤＥＶ番号を含んだ二個以上のパスエントリ２０１１がパス管理情報２０１内に存在する、あるいは、パス削除要求内のグローバルＬＤＥＶ番号を含んだ一個以上のデータ移行エントリ２１７１がデータ移行管理情報２１７内に存在すれば、肯定的な判断結果となり（Ｓ１６３でＹ）、そうでなければ、否定的な判断結果となる（Ｓ１６３でＮ）。Ｓ１６３でＹならば、パス削除プログラム１５８は、後述のＳ１６４及びＳ１６５を行わずに、前述したＳ１１６を実行することができる。Ｓ１６３でＮならば、パス削除プログラム１５８は、Ｓ１６４及びＳ１６５を実行した上で、前述したＳ１６６を実行する。
【０１４０】
Ｓ１６４で、パス削除プログラム１５８は、パス削除要求内のグローバルＬＤＥＶ番号を含んだグローバルＬＤＥＶエントリ２０５３を、グローバルＬＤＥＶディレクトリ２０５２から外す。
【０１４１】
Ｓ１６５で、パス削除プログラム１５８は、Ｓ１６４で外したグローバルＬＤＥＶエントリ２０５３を、空きグローバルＬＤＥＶエントリ管理情報２０５４に含める。この後、前述したように、パス削除プログラム１５８は、Ｓ１６６を実行する。
【０１４２】
図１９は、デバイス削除プログラム１５２の動作のフローチャートである。
【０１４３】
自モジュール１１１が、保守端末１１３又は管理端末１０７からデバイス削除要求を受信した場合に、デバイス削除プログラム１５２が起動する。デバイス削除要求には、例えば、グローバルＬＤＥＶ番号が含まれている。
【０１４４】
デバイス削除プログラム１５２は、自モジュール１１１及び全ての他モジュール１１１からパス管理情報２０１を収集する（Ｓ１７１）。
【０１４５】
デバイス削除プログラム１５２は、デバイス削除要求内のグローバルＬＤＥＶ番号から同定されるグローバルＬＤＥＶ（以下、図１９の説明において、「指定グローバルＬＤＥＶ」と言う）に繋がるパスが、自モジュール１１１及び全ての他モジュール１１１で削除済みか否か、また、指定グローバルLDEVがデータ移行元/移行先に該当するか否かを判断する（Ｓ１７２）。収集された全てのパス管理情報２０１に、指定グローバルＬＤＥＶの番号を含んだパスエントリ２０１１が無く、かつ、指定グローバルLDEVを含むがデータ移行エントリ２１７１がデータ移行管理情報２１７内に存在しなければ、肯定的な判断結果となり（Ｓ１７２でＹ）、指定グローバルＬＤＥＶの番号を含んだパスエントリ２０１１一つでも有れば、否定的な判断結果となる（Ｓ１７２でＮ）。Ｓ１７２でＮの場合、デバイス削除プログラム１５２は、デバイス削除要求の送信元（要求元）に、エラーを報告する（Ｓ１７８）。
【０１４６】
Ｓ１７２でＹの場合、デバイス削除プログラム１５２は、デバイス削除要求内のグローバルＬＤＥＶ番号を含んだグローバルＬＤＥＶエントリ２０５３を、グローバルＬＤＥＶディレクトリ２０５２から外す（Ｓ１７３）。デバイス削除プログラム１５２は、Ｓ１７３で外したグローバルＬＤＥＶエントリ２０５３を、空きグローバルＬＤＥＶエントリ管理情報２０５４に含める（Ｓ１７４）。デバイス削除プログラム１５２は、デバイス削除要求内のグローバルＬＤＥＶ番号の解放と（Ｓ１７５）、指定グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶの番号の解放と（Ｓ１７６）と、そのローカルＬＤＥＶに対応したＰＤＥＶ領域の解放（Ｓ１７７）とを実行する。Ｓ１７５が実行されることにより、解放されたグローバルＬＤＥＶ番号内のローカルＬＤＥＶが、空きとして、空きグローバルＬＤＥＶ番号管理情報２５１で管理されるようになる。また、Ｓ１７６及びＳ１７７が実行されることにより、指定グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶに対応したローカルＬＤＥＶエントリ２０７１がローカルＬＤＥＶ管理情報２０７から削除される。
【０１４７】
図２０は、障害閉塞プログラム１５６の動作のフローチャートである。
【０１４８】
自モジュール１１１から他モジュール１１１への転送の際に、自モジュール１１１でタイムアウト（転送後一定時間経っても他モジュール１１１から応答がない）が検出された場合に、障害閉塞プログラム１５６が起動する。
【０１４９】
障害閉塞プログラム１５６は、転送先他モジュール１１１への転送経路における、自モジュール１１１内の全ての構成部位に関する障害ログ情報を、収集済か否かを判断する（Ｓ１８２）。
【０１５０】
収集済みでない場合（Ｓ１８２でＮ）、障害閉塞プログラム１５６は、障害閉塞プログラム１５６は、自モジュール１１１内の或る構成部位に関する障害ログ情報を収集する（Ｓ１８３）。障害閉塞プログラム１５６は、障害ログ情報から、或る構成部位に障害が発生しているか否かを判断する（Ｓ１８４）。障害が発生していなければ（Ｓ１８４でＮ）、Ｓ１８２が実行され、障害が発生していれば（Ｓ１８４でＹ）、障害閉塞プログラム１５６は、或る構成部位に対応する構成部位エントリ内の［障害発生回数］をカウントアップする（Ｓ１８５）。カウントアップ後の［障害発生回数］が所定の閾値を越えていなければ（Ｓ１８６でＮ）、Ｓ１８２が実行され、超えていれば（Ｓ１８６でＹ）、障害閉塞プログラム１５６は、或る構成部位に対応する構成部位エントリ内の［状態］を“閉塞”に更新する（Ｓ１８７）。
【０１５１】
以上のＳ１８３乃至Ｓ１８７が、転送先他モジュール１１１への転送経路における、自モジュール１１１内の全ての構成部位について行われ、行われると、Ｓ１８２でＹとなる。
【０１５２】
Ｓ１８２でＹとなれば、障害閉塞プログラム１５６は、転送先他モジュール１１１への全ての転送経路が閉塞か否かを判断する（Ｓ１８８）。転送経路の一要素としての、自モジュール１１１内の構成部位の［状態］が、“閉塞”であれば、その転送経路は閉塞となる。
【０１５３】
もし、転送先他モジュール１１１への全ての転送経路が閉塞であれば、障害閉塞プログラム１５６は、転送先他モジュール１１１にあるローカルＬＤＥＶに関連付けられているグローバルＬＤＥＶの番号を含んだパスエントリ２０１１（自モジュール１１１内のパス管理情報２０１内のパスエントリ２０１１）における［状態］を、“閉塞”に更新する。転送先他モジュール１１１にあるローカルＬＤＥＶに関連付けられているグローバルＬＤＥＶの番号は、例えば、グローバルＬＤＥＶ管理情報２０５から、転送先他モジュール１１１内のプロセッサを表している［転送先プロセッサ情報］を含んだグローバルＬＤＥＶエントリ２０５３に含まれているグローバルＬＤＥＶ番号である。
【０１５４】
また、図示しないが、自モジュール１１１に存在するローカルＬＤＥＶに障害が発生し当該ローカルＬＤＥＶを閉塞する場合、当該ローカルＬＤＥＶに関連付けられているグローバルＬＤＥＶの他モジュール１１１におけるパスエントリ２０１１の[状態]を、当該ローカルＬＤＥＶの閉塞を契機として、必ずしも変更しなくてよい。なぜなら、他モジュール１１１から当該ローカルＬＤＥＶに関連付けられているグローバルＬＤＥＶへのアクセス時、当該ローカルＬＤＥＶの閉塞状態を検出し、他モジュール１１１のパスエントリ２０１１の［状態］を閉塞に変更するからである。
【０１５５】
図２１は、障害回復プログラム１５４の動作のフローチャートである。
【０１５６】
自モジュール１１１が、保守端末１１３又は管理端末１０７から回復要求を受信した場合に、障害回復プログラム１５４が起動する。
【０１５７】
障害回復プログラム１５４は、自モジュール１１１内の、全保守対象の構成部位について、保守が終了しているか否かを判断する（Ｓ１９１）。
【０１５８】
終了していない場合（Ｓ１９１でＮ）、障害回復プログラム１５４は、保守対象の構成部位を閉塞すると自モジュール１１１が閉塞するか否かを判断する（Ｓ１９２）。閉塞するとの判断になれば（Ｓ１９２でＹ）、保守端末１１３又は管理端末１０７保守端末１１３又は管理端末１０７に、より優先度の高い構成部位の先行保守を要求する（Ｓ１９３）。一方、閉塞しないとの判断になれば（Ｓ１９２でＮ）、保守端末１１３又は管理端末１０７は、保守対象の構成部位を閉塞し（Ｓ１９４）、保守員による保守対象構成部位の交換を待ち（Ｓ１９５）、交換後、保守対象構成部位を回復する（例えば、保守対象構成部位の［状態］を“閉塞”から“正常”に更新する）（Ｓ１９６）。
【０１５９】
以上のＳ１９２乃至Ｓ１９６が、全ての保守対象構成部位について行われると、Ｓ１９１でＹとなる。
【０１６０】
Ｓ１９１でＹとなれば、障害回復プログラム１５４は、保守対象構成部位の回復によって回復した転送経路（他モジュールへの転送経路）があるか否かを判断する（Ｓ１９７）。
【０１６１】
回復した転送経路があれば（Ｓ１９７でＹ）、障害回復プログラム１５４は、自モジュールのグローバルＬＤＥＶディレクトリ２０５２を参照し、グローバルＬＤＥＶのリストを作成する（Ｓ１９８）。作成するグローバルＬＤＥＶのリストは２種類あり、１つは、自モジュール１１１に存在するローカルＬＤＥＶに関連付けられているグローバルＬＤＥＶの番号のリスト（以下、図２１の説明において、「リストＡ」と言う）であり、もう１つは、他モジュール１１１（回復した転送経路に繋がる他モジュール１１１）に存在するローカルＬＤＥＶに関連付けられているグローバルＬＤＥＶの番号のリスト（以下、図２１の説明において、「リストＢ」と言う）である。
【０１６２】
Ｓ１９９で、障害回復プログラム１５４は、作成したリストＡにグローバルＬＤＥＶ番号が存在するか判断する。作成したリストＡにグローバルＬＤＥＶ番号が存在すれば、Ｓ１９９での判断の結果は、肯定的な判断結果となり（Ｓ１９９でＹ）、存在しなければ、否定的な判断結果となる（Ｓ１９９でＮ）。Ｓ１９９でＹの場合、障害回復プログラム１５４は、回復した転送経路に繋がる他モジュール１１１に、作成したリストＡに記録されているグローバルＬＤＥＶ番号と共にそのグローバルＬＤＥＶ番号に対応したグローバルＬＤＥＶの回復を通知する（Ｓ１９ａ）。なぜなら、回復した転送経路に繋がる他モジュール１１１に、作成したリストＡに記録されている番号に対応したグローバルＬＤＥＶのパス定義等が存在する可能性があるためである。通知先の他モジュール１１１では、通知されたグローバルＬＤＥＶ番号が参照され、当該他モジュール１１１内に、通知されたグローバルＬＤＥＶ番号を含んだパスエントリ２０１１があれば、［状態］が“正常”に回復される。
【０１６３】
Ｓ１９ｂで、障害回復プログラム１５４は、作成したリストＢにグローバルＬＤＥＶ番号が存在するか判断する。Ｓ１９ｂの判断の結果は、作成したリストＢにグローバルＬＤＥＶ番号が存在すれば、肯定的な判断結果となり（Ｓ１９ｂでＹ）、存在しなければ、否定的な判断結果となる（Ｓ１９ｂでＮ）。Ｓ１９ｂでＹの場合、障害回復プログラム１５４は、回復した転送経路に繋がる他モジュール１１１に、作成したリストＢに存在するグローバルＬＤＥＶ番号に対応したグローバルＬＤＥＶの状態を問合せ（Ｓ１９ｃ）、結果を判断する（Ｓ１９ｄ）。回復した転送経路に繋がる他モジュール１１１に状態を問合せた、リストＢに記録されている一以上の番号に対応した一以上のグローバルＬＤＥＶのうち、［状態］が“正常”であるグローバルＬＤＥＶが存在すれば、肯定的な判断結果となり（Ｓ１９ｄのＹ）、存在しなければ、否定的な判断結果となる（Ｓ１９ｄのＮ）。Ｓ１９ｄでＹの場合、障害回復プログラム１５４は、回復した転送経路に繋がる他モジュール１１１に状態を問合せた、リストＢに記録されている一以上の番号に対応した一以上のグローバルＬＤＥＶのうち、［状態］が“正常”であるグローバルＬＤＥＶの［状態］（そのグローバルＬＤＥＶの番号を含んだパスエントリ２０１１内の［状態］）を、“正常”に更新する（つまり、そのグローバルＬＤＥＶを回復する）（Ｓ１９ｅ）。
【０１６４】
さて、以下、図２２乃至図２６を参照して、本実施形態で行われる、記憶装置システムモジュール１１１間のデータ移行を説明する。その際、図２４Ａに示すように、データ移行元のグローバルＬＤＥＶを、「移行元グローバルＬＤＥＶ＃Ａ」とし、データ移行先のグローバルＬＤＥＶを、「移行先グローバルＬＤＥＶ＃Ｂ」とする。また、移行元グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶを「移行元ローカルＬＤＥＶ＃００」とし、移行先グローバルＬＤＥＶに関連付けられているローカルＬＤＥＶを「移行先ローカルＬＤＥＶ＃１０」とする。また、移行元ローカルＬＤＥＶ＃００を有する記憶装置システムモジュール１１１を、「移行元モジュール＃０」とし、移行先ローカルＬＤＥＶ＃１０を有する記憶装置システムモジュール１１１を、「移行先モジュール＃１」とする。また、図２２乃至図２６には示していないが、移行元モジュール＃０内のプロセッサ１４７で実行されるデータ移行プログラム１５５を「移行元データ移行プログラム＃ａ」と言い、移行先モジュール＃１内のプロセッサ１４７で実行されるデータ移行プログラム１５５を「移行先データ移行プログラム＃ｂ」と言う。
【０１６５】
図２２は、移行元データ移行プログラム＃ａと移行先データ移行プログラム＃ｂの動作のフローチャートの第一の部分を示す。図２２において、Ｓ２０１及びＳ２０２が、図２４Ａに対応しており、Ｓ２０２乃至Ｓ２１４が、図２４Ｂに対応している。
【０１６６】
移行元データ移行プログラム＃ａは、保守端末１１３又は管理端末１０７からデータ移行要求を受信した場合に起動する。データ移行要求には、例えば、移行元グローバルＬＤＥＶの番号（例えば＃Ａ）と移行先モジュールの番号（例えば＃１）が含まれている。
【０１６７】
移行元データ移行プログラム＃ａは、データ移行要求内のグローバルＬＤＥＶ番号から移行元グローバルＬＤＥＶ＃Ａを特定する（Ｓ２０１）。移行元データ移行プログラム＃ａは、移行先データ移行プログラム＃ｂに、移行元グローバルＬＤＥＶの番号を通知し、且つ、移行先グローバルＬＤＥＶの選択を指示する。移行先データ移行プログラム＃ｂは、１本のパスも繋がっていないグローバルＬＤＥＶ＃Ｂを、移行先グローバルＬＤＥＶとして選択する（Ｓ２０２）。移行先データ移行プログラム＃ｂは、移行元グローバルＬＤＥＶの番号を含んだグローバルＬＤＥＶエントリ２０５３を、移行先モジュール＃１内のグローバルＬＤＥＶディレクトリ２０５２に繋げていなければ、そのエントリ２０５３をそのディレクトリ２０５２に繋げる（Ｓ２０３）。移行先データ移行プログラム＃ｂは、移行元データ移行プログラム＃ａに、移行先グローバルＬＤＥＶの番号を通知する。移行元データ移行プログラム＃ａは、移行先グローバルＬＤＥＶの番号（＃Ｂ）を含んだグローバルＬＤＥＶエントリ２０５３が、移行元モジュール＃０内のグローバルＬＤＥＶディレクトリ２０５２に繋がっていなければ、そのエントリ２０５３をそのディレクトリ２０５２に繋げる（Ｓ２０４）。
【０１６８】
移行元データ移行プログラム＃ａは、移行元ローカルＬＤＥＶ＃００内の全てのデータを移行先モジュール＃１に転送することを終えるまで（つまりＳ２０５でＹとなるまで）、以下のＳ２０６乃至Ｓ２１０、Ｓ２１３及びＳ２１４を実行する。
【０１６９】
移行元データ移行プログラム＃ａは、移行元ローカルＬＤＥＶ＃００内の一定量のデータを転送対象データとして選択する（Ｓ２０６）。転送対象データが、移行元モジュール＃０内のキャッシュメモリ１６５に無ければ（Ｓ２０７でＮ）、移行元データ移行プログラム＃ａは、移行元ローカルＬＤＥＶ＃００の基になっているＰＤＥＶ１２２から転送対象データを読み出し、読み出した転送対象データをキャッシュメモリ１６５に書き込む（Ｓ２０８）。移行元データ移行プログラム＃ａは、転送対象データの位置を示すキャッシュアドレスを移行先モジュール＃１に通知する（Ｓ２０９）。その後、データ転送待ちとなる（Ｓ２１０）。
【０１７０】
移行先データ移行プログラム＃ｂが、通知されたキャッシュアドレス（移行元モジュール＃０内のキャッシュメモリ１６５内の位置）から転送対象データを読み出し、その転送対象データを、移行先モジュール＃１内のキャッシュメモリ１６５に書き込む（Ｓ２１１）。その後、移行先データ移行プログラム＃ｂは、データ転送終了を移行元データ移行プログラム＃ａに報告する（Ｓ２１２）。移行先モジュール＃１内のキャッシュメモリ１６５に書かれた転送対象データは、移行先ローカルＬＤＥＶ＃１０に書き込まれる。
【０１７１】
移行元データ移行プログラム＃ａは、データ転送終了の報告を受けて（Ｓ２１３）、データ転送の進捗を更新する（Ｓ２１４）。具体的には、移行元データ移行プログラム＃ａは、図２２乃至図２６のデータ移行に対応するデータ移行エントリ２０７１内の［移行データ転送進捗ポインタ］を更新する。
【０１７２】
移行元ローカルＬＤＥＶ＃００内の全てのデータを移行先モジュール＃１に転送することを終えると、Ｓ２０５でＹとなる。
【０１７３】
図２３は、図２２のＳ２０５でＹの後の部分（移行元データ移行プログラムと移行先データ移行プログラムの動作のフローチャートの第二の部分）を示す。図２３において、Ｓ２２１乃至Ｓ２２４が、図２５Ａに対応しており、Ｓ２２５及びＳ２２６が、図２５Ｂに対応しており、Ｓ２２７乃至Ｓ２３０が、図２６に対応している。
【０１７４】
移行元データ移行プログラム＃ａが、移行元グローバルＬＤＥＶ＃Ａへのリード／ライト要求を保留にする（Ｓ２２１）。具体的には、例えば、移行元グローバルＬＤＥＶ＃Ａが特定されるリード／ライト要求を受信しても、記憶装置システムモジュール１１１内で要求を受領したまま処理を保留する等の方法により、移行元グローバルＬＤＥＶ＃Ａへのアクセスが行われないようにする。
【０１７５】
移行元データ移行プログラム＃ａが、移行元グローバルＬＤＥＶ＃Ａへのリード／ライト要求の保留を移行先データ移行プログラム＃ｂに指示する。それにより、移行先データ移行プログラム＃ｂも、移行元グローバルＬＤＥＶ＃Ａへのリード／ライト要求を保留にする（Ｓ２２２）。なお、移行元データ移行プログラム＃ａは、移行先モジュール＃１に限らず、移行元モジュール＃０以外の全てのモジュール１１１に、移行元グローバルＬＤＥＶ＃Ａへのリード／ライト要求の保留を指示することができる。
【０１７６】
図２３を参照し、且つ、図２４Ｂと図２５Ａを比較すればわかるように、移行先データ移行プログラム＃ｂは、移行先モジュール＃１において、移行元グローバルＬＤＥＶ＃Ａに対応したグローバルＬＤＥＶエントリに、移行元モジュール＃０内のプロセッサを表す［転送先プロセッサ情報］（図２４Ｂに示す“Ｍ＃０”）に代えて、移行先ローカルＬＤＥＶの番号“＃１０”を表す［ローカルＬＤＥＶ番号］を設定する（Ｓ２２３）。また、移行先データ移行プログラム＃ｂは、移行先モジュール＃１において、移行先グローバルＬＤＥＶ＃Ｂに対応したグローバルＬＤＥＶエントリに、移行先ローカルＬＤＥＶの番号“＃１０”を表す［ローカルＬＤＥＶ番号］に代えて、移行元モジュール＃０内のプロセッサを表す［転送先プロセッサ情報］（図２５Ａに示す“Ｍ＃０”）を設定する（Ｓ２２４）。移行先データ移行プログラム＃ｂは、完了を、移行元データ移行プログラム＃ａに通知する。
【０１７７】
図２３を参照し、且つ、図２５Ａと図２５Ｂを比較すればわかるように、移行元データ移行プログラム＃ａは、移行元モジュール＃０において、移行元グローバルＬＤＥＶ＃Ａに対応したグローバルＬＤＥＶエントリに、移行元ローカルＬＤＥＶの番号“＃００”を表す［ローカルＬＤＥＶ番号］に代えて、移行先モジュール＃１内のプロセッサを表す［転送先プロセッサ情報］（図２５Ｂに示す“Ｍ＃１”）を設定する（Ｓ２２５）。また、移行元データ移行プログラム＃ａは、移行元モジュール＃０において、移行先グローバルＬＤＥＶ＃Ｂに対応したグローバルＬＤＥＶエントリに、移行先モジュール＃１内のプロセッサを表す［転送先プロセッサ情報］（図２５Ａに示す“Ｍ＃１”）に代えて、移行元ローカルＬＤＥＶの番号“＃００”を表す［ローカルＬＤＥＶ番号］を設定する（Ｓ２２６）。
【０１７８】
要するに、Ｓ２２３乃至Ｓ２２６によって、移行元グローバルＬＤＥＶ＃Ａに、移行先ローカルＬＤＥＶ＃１０が関連付けられ、移行先グローバルＬＤＥＶ＃Ｂに、移行元ローカルＬＤＥＶ＃００が関連付けられる。つまり、移行元グローバルＬＤＥＶ＃Ａと移行先グローバルＬＤＥＶ＃Ｂにそれぞれ関連付けられているローカルＬＤＥＶがスワップする。
【０１７９】
Ｓ２２６の後、移行元データ移行プログラム＃ａ及び移行先データ移行プログラム＃ｂは、移行元グローバルＬＤＥＶ＃Ａに対するリード／ライトの保留を解除する（Ｓ２２７及びＳ２２８）。
【０１８０】
移行元データ移行プログラム＃ａは、移行元グローバルＬＤＥＶ＃Ａに対応した［転送先プロセッサ情報］を、全ての記憶装置システムモジュール１１１にブロードキャストする（Ｓ２２９）。これにより、図２３を参照し、且つ、図２５Ｂと図２６を比較すればわかるように、他の記憶装置システムモジュール（例えば＃（Ｊ−１）において、移行元グローバルＬＤＥＶ＃Ａに対応した［転送先プロセッサ情報］を表す情報が、移行元モジュール＃０内のプロセッサを表す情報“Ｍ＃０”から、移行先モジュール＃１内のプロセッサを表す情報“Ｍ＃１”に更新される（Ｓ２３０）。
【０１８１】
図２４Ａ乃至図２６の例によれば、移行元グローバルＬＤＥＶ＃Ａには、２本のパスが繋がっている。そして、データ移行前とデータ移行後のどちらであっても、２本のパスのうちのいずれを経由してホスト１０１から照会コマンド（例えばInquiryコマンド）を受領しても、移行元グローバルＬＤＥＶ＃ＡのグローバルＬＤＥＶ番号が、照会コマンドの送信元のホスト１０１に送信される。
【０１８２】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【図面の簡単な説明】
【０１８３】
【図１】図１は、本発明の一実施形態に係る記憶装置システムの構成を示す。
【図２】図２は、記憶装置システムモジュールの構成を示す。
【図３】図３は、管理情報の構成を示す。
【図４】図４Ａは、パス管理情報の構成を示す。図４Ｂは、パスエントリの構成を示す。
【図５】図５Ａは、グローバルＬＤＥＶ管理情報の構成を示す。図５Ｂは、グローバルＬＤＥＶディレクトリの構成を示す。
【図６】図６Ａは、グローバルＬＤＥＶエントリの構成を示す。図６Ｂは、空きグローバルＬＤＥＶエントリ管理情報の構成を示す。
【図７】図７Ａは、グローバルＬＤＥＶ管理情報の概念を示す。図７Ｂは、グローバルＬＤＥＶ番号の構成を示す。
【図８】図８Ａは、ローカルＬＤＥＶ管理情報の構成を示す。図８Ｂは、ローカルＬＤＥＶエントリの構成を示す。
【図９】図９Ａは、ＰＤＥＶ管理情報の構成を示す。図９Ｂは、ＰＤＥＶエントリの構成を示す。
【図１０】図１０Ａは、モジュール実装管理情報の構成を示す。図１０Ｂは、モジュールエントリの構成を示す。図１０Ｃは、構成部位管理情報の構成を示す。図１０Ｄは、構成部位エントリの構成を示す。
【図１１】図１１Ａは、データ移行管理情報の構成を示す。図１１Ｂは、データ移行エントリの構成を示す。
【図１２】図１２は、デバイス定義プログラムの動作のフローチャートである。
【図１３】図１３は、パス定義プログラムの動作のフローチャートである。
【図１４】図１４は、リードプログラムの動作のフローチャートである。
【図１５】図１５は、自モジュールがホストからリード要求を受信し他モジュールにそのリード要求を転送する場合でのリードデータ転送の流れの概要を示す。
【図１６】図１６は、ライトプログラムの動作のフローチャートである。
【図１７】図１７は、自モジュールがホストからライト要求を受信し他モジュールにそのライト要求を転送する場合でのライトデータ転送の流れの概要を示す。
【図１８】図１８は、パス削除プログラムの動作のフローチャートである。
【図１９】図１９は、デバイス削除プログラムの動作のフローチャートである。
【図２０】図２０は、障害閉塞プログラムの動作のフローチャートである。
【図２１】図２１は、障害回復プログラムの動作のフローチャートである。
【図２２】図２２は、移行元データ移行プログラムと移行先データ移行プログラムの動作のフローチャートの第一の部分を示す。
【図２３】図２３は、図２２のＳ２０５でＹの後の部分（移行元データ移行プログラムと移行先データ移行プログラムの動作のフローチャートの第二の部分）を示す。
【図２４】図２４Ａは、図２２のＳ２０１及びＳ２０２の説明図である。図２４Ｂは、図２２のＳ２０２乃至Ｓ２１４の説明図である。
【図２５】図２５Ａは、図２３のＳ２２１乃至Ｓ２２４の説明図である。図２５Ｂは、図２３のＳ２２５及びＳ２２６の説明図である。
【図２６】図２６は、図２３のＳ２２７乃至Ｓ２３０の説明図である。
【符号の説明】
【０１８４】
１１０…記憶装置システム  １１１…記憶装置システムモジュール
【図１】
0005330702.tif 000002
【図２】
0005330702.tif 000003
【図３】
0005330702.tif 000004
【図４】
0005330702.tif 000005
【図５】
0005330702.tif 000006
【図６】
0005330702.tif 000007
【図７】
0005330702.tif 000008
【図８】
0005330702.tif 000009
【図９】
0005330702.tif 000010
【図１０】
0005330702.tif 000011
【図１１】
0005330702.tif 000012
【図１２】
0005330702.tif 000013
【図１３】
0005330702.tif 000014
【図１４】
0005330702.tif 000015
【図１５】
0005330702.tif 000016
【図１６】
0005330702.tif 000017
【図１７】
0005330702.tif 000018
【図１８】
0005330702.tif 000019
【図１９】
0005330702.tif 000020
【図２０】
0005330702.tif 000021
【図２１】
0005330702.tif 000022
【図２２】
0005330702.tif 000023
【図２３】
0005330702.tif 000024
【図２４】
0005330702.tif 000025
【図２５】
0005330702.tif 000026
【図２６】
0005330702.tif 000027