(57)【要約】【課題】  アクセス制御装置がホスト装置とは別の外部装置にアクセスできなかったことにより障害ありと判断された後のその障害からの回復を、人間からの情報入力による検出とは別の方法で検出することができるようにする。【解決手段】  アクセス制御装置は、ホスト装置からアクセス要求を受信する第一のインターフェース（ＩＦ）と、外部装置における一又は複数のアクセス先候補の各々にアクセスする第二のＩＦとを備える。第二のＩＦは、第一のＩＦがアクセス要求を受信した場合に、特定のアクセス先候補にアクセスすることを試み、アクセスに失敗した後、回復があったと判断された場合には、回復という判断結果を出力する。第一のＩＦは、第二のＩＦから出力された判断結果を参照することにより、特定のアクセス先候補へのアクセス経路において回復があったことを検出する。【選択図】図１５
2006227856.tif 000002
【特許請求の範囲】
【請求項１】
アクセス要求を発行するホスト装置から前記アクセス要求を受信する第一のインターフェースと、
一又は複数のアクセス先候補を備える外部装置における前記一又は複数のアクセス先候補の各々にアクセスする第二のインターフェースと
を備え、
前記第二のインターフェースは、
前記第一のインターフェースが前記アクセス要求を受信した場合に、前記一又は複数のアクセス先候補のうちの前記受信したアクセス要求に対応する特定のアクセス先候補にアクセスすることを試み、
前記アクセスに失敗した場合、障害があったと判断して、障害という判断結果を出力し、
前記アクセスに失敗した後、回復があったと判断された場合には、回復という判断結果を出力し、
前記第一のインターフェースが、前記第二のインターフェースから出力された判断結果を参照することにより、前記特定のアクセス先候補へのアクセス経路において回復があったことを検出する、
アクセス制御装置。
【請求項２】
前記アクセス制御装置は、前記第一のインターフェース及び前記第二のインターフェースが参照可能な共有記憶領域を備え、
前記共有記憶領域は、前記一又は複数のアクセス先候補にそれぞれ対応した１又は複数のステータスデータを記憶し、
前記第二のインターフェースが、障害があったと判断された場合、前記特定のアクセス先候補に対応するステータスデータを障害が有ることを表すステータスに更新し、回復があったと判断された場合、前記特定のアクセス先候補に対応する障害が無いこと又は回復があったことを表すステータスに更新し、
前記第一のインターフェースが、前記共有記憶領域を定期的に又は不定期的に参照することにより、前記特定のアクセス先候補へのアクセス経路において回復があったことを検出する、
請求項１記載のアクセス制御装置。
【請求項３】
第一のインターフェースは、
前記ホスト装置から前記アクセス要求を受信し、前記受信したアクセス要求に基づく別のアクセス要求を出力する第一のプロセッサと、
前記第一のプロセッサから出力された別のアクセス要求を受信し、前記受信した別のアクセス要求に基づいて、前記一又は複数のアクセス先候補のうちの前記特定のアクセス先候補にアクセスすることを前記第二のインターフェースに要求するためのまた別のアクセス要求を出力する第二のプロセッサと
を備え、
前記第二のプロセッサが、前記判断結果を参照し、参照した結果である参照結果を出力する、
請求項１記載のアクセス制御装置。
【請求項４】
前記第一のインターフェースは、前記一又は複数のアクセス先候補の各々におけるアクセス経路での障害有無を表す障害有無データを記憶する第一の記憶域を有し、
前記第二のプロセッサが、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定し、前記障害有無データを参照することにより、障害有りを検出し、障害有りに対応する前記特定のアクセス先候補を認識する、
請求項３記載のアクセス制御装置。
【請求項５】
前記第一のプロセッサが、前記第二のプロセッサから出力された参照結果から、前記特定のアクセス先候補へのアクセス経路において障害があったことを検出した場合、前記第二のプロセッサに対する第一の割込みを設定し、
前記第二のプロセッサが、前記第一の割り込みを検出し、それに応答して、前記障害有りを前記障害有無データに設定する、
請求項４記載のアクセス制御装置。
【請求項６】
前記第一のインターフェースは、前記一又は複数のアクセス先候補の各々におけるアクセス経路での回復有無を表す回復有無データを記憶する第二の記憶域を有し、
前記第二のプロセッサが、回復のあった前記特定のアクセス先候補について回復有りを前記回復有無データに設定し、
前記第一のプロセッサが、前記回復有無データを参照することにより、回復有りを検出し、回復有りに対応する前記特定のアクセス先候補を認識する、
請求項３記載のアクセス制御装置。
【請求項７】
前記第二のプロセッサが、前記判断結果から回復があったことがわかった場合、前記第一のプロセッサに対する第二の割込みを設定し、
前記第一のプロセッサが、前記第二の割り込みを検出し、それに応答して、前記回復有無データを参照する、
請求項６記載のアクセス制御装置。
【請求項８】
前記第一のインターフェースは、
前記一又は複数のアクセス先候補の各々におけるアクセス経路での障害有無を表す障害有無データを記憶する第一の記憶域と、
前記一又は複数のアクセス先候補の各々におけるアクセス経路での回復有無を表す回復有無データを記憶する第二の記憶域と
を有し、
前記第一のプロセッサが、前記第二のプロセッサから出力された参照結果から、前記特定のアクセス先候補へのアクセス経路において障害があったことを検出した場合、前記第二のプロセッサに対する第一の割込みを設定し、
前記第二のプロセッサが、前記第一の割り込みを検出し、それに応答して、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定し、
前記第二のプロセッサが、前記判断結果から回復があったことがわかった場合、回復のあった前記特定のアクセス先候補について回復有りを前記回復有無データに設定し、前記第一のプロセッサに対する第二の割込みを設定し、且つ、前記障害有無データの前記障害有りを障害無しに変更し、
前記第一のプロセッサが、前記第二の割り込みを検出し、それに応答して、前記回復有無データを参照することにより、回復有りを検出し、回復有りに対応する前記特定のアクセス先候補を認識し、且つ、前記検出された回復有りを回復無しに変更する、
請求項３記載のアクセス制御装置。
【請求項９】
一方の前記第一のインターフェースと他方の前記第一のインターフェースによってクラスタが構成されており、
前記一方の第一のインターフェースに備えられる一方の第一のプロセッサが、
前記特定のアクセス先候補へのアクセス経路において障害があったと検出した場合には、前記特定のアクセス先候補を閉塞扱いとし、閉塞扱いにされた特定のアクセス先候補の識別情報を記憶し、その後、回復があった場合には、前記他方の第一のインターフェースに備えられる他方の第一のプロセッサに対してフェイルオーバを行い、再起動し、
前記再起動の際、閉塞扱いとされたアクセス先候補の前記識別情報を消去し、第二のプロセッサから、前記一又は複数のアクセス先候補の各々に関する情報を受信することにより、使用可能なアクセス先候補を認識する、
請求項３記載のアクセス制御装置。
【請求項１０】
前記第一のプロセッサは、前記ホスト装置からファイルレベルのアクセス要求を受信し、前記受信したファイルレベルのアクセス要求をブロックレベルのアクセス要求に変換して出力し、
第二のプロセッサは、前記第一のプロセッサから出力されたブロックレベルのアクセス要求に基づいて前記別のアクセス要求を生成し出力する、
請求項３記載のアクセス制御装置。
【請求項１１】
前記アクセス制御装置は、
前記ホスト装置によりアクセスされる少なくとも１つ以上の論理ユニットと、
前記論理ユニットと少なくとも１つ以上の記憶デバイスとを接続するようにして設けられる少なくとも１つ以上の中間記憶階層とを備え、
前記一又は複数のアクセス先候補の各々は、記憶デバイスであり、
前記中間記憶階層のうち少なくとも１つは、前記外部装置が有する記憶デバイスに接続されている、
請求項１記載のアクセス制御装置。
【請求項１２】
前記中間記憶階層は、前記記憶デバイス上に設定される少なくとも一つ以上の第一の記憶階層と、この第一の記憶階層上に設定される少なくとも１つ以上の第二の記憶階層とを備えて構成されており、前記外部装置が有する記憶デバイスは、前記第一の記憶階層にマッピングされている、
請求項１１記載のアクセス制御装置。
【請求項１３】
アクセス要求を発行するホスト装置から前記アクセス要求を受信する第一のインターフェースと、一又は複数のアクセス先候補を備える外部装置における前記一又は複数のアクセス先候補の各々にアクセスする第二のインターフェースとを備えるアクセス制御装置の前記第一のインターフェースであって、
前記ホスト装置から前記アクセス要求を受信し、前記受信したアクセス要求に基づく別のアクセス要求を出力する第一のプロセッサと、
前記第一のプロセッサから出力された別のアクセス要求を受信し、前記受信した別のアクセス要求に基づいて、前記一又は複数のアクセス先候補のうちの特定のアクセス先候補にアクセスすることを前記第二のインターフェースに要求するためのまた別のアクセス要求を出力する第二のプロセッサと、
前記一又は複数のアクセス先候補の各々におけるアクセス経路での障害有無を表す障害有無データを記憶する第一の記憶域と、
前記一又は複数のアクセス先候補の各々におけるアクセス経路での回復有無を表す回復有無データを記憶する第二の記憶域と
を有し、
前記第二のプロセッサが、前記特定のアクセス先候補への前記第二のインターフェースからのアクセス経路において障害があった場合、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定し、その後、回復があった場合、回復のあった前記特定のアクセス先候補について回復有りを前記回復有無データに設定し、且つ、前記障害有無データの前記障害有りを障害無しに変更し、
前記第一のプロセッサが、前記回復有無データを参照することにより、回復有りを検出し、回復有りに対応する前記特定のアクセス先候補を認識し、且つ、前記検出された回復有りを回復無しに変更する、
インターフェース。
【請求項１４】
前記第一のプロセッサが、前記特定のアクセス先候補へのアクセス経路において障害があったことを検出した場合、前記第二のプロセッサに対する第一の割込みを設定し、
前記第二のプロセッサが、前記第一の割り込みを検出し、それに応答して、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定し、
前記第二のプロセッサが、回復があったことがわかった場合前記第一のプロセッサに対する第二の割込みを設定し、
前記第一のプロセッサが、前記第二の割り込みを検出し、それに応答して、前記回復有無データを参照する、
請求項１３記載のインターフェース。
【請求項１５】
アクセス要求を発行するホスト装置から前記アクセス要求を受信する第一のインターフェースと、一又は複数のアクセス先候補を備える外部装置における前記一又は複数のアクセス先候補の各々にアクセスする第二のインターフェースとを備えるアクセス制御装置の前記第一のインターフェースであって、
前記ホスト装置から前記アクセス要求を受信し、前記受信したアクセス要求に基づく別のアクセス要求を出力する第一のプロセッサと、
前記第一のプロセッサから出力された別のアクセス要求を受信し、前記受信した別のアクセス要求に基づいて、前記一又は複数のアクセス先候補のうちの特定のアクセス先候補にアクセスすることを前記第二のインターフェースに要求するためのまた別のアクセス要求を出力する第二のプロセッサと
を有し、
前記アクセス制御装置では、一方の前記第一のインターフェースと他方の前記第一のインターフェースによってクラスタが構成されており、
前記一方の第一のインターフェースに備えられる一方の第一のプロセッサが、前記特定のアクセス先候補への前記第二のインターフェースからのアクセス経路において障害があった場合、前記特定のアクセス先候補を閉塞扱いとし、閉塞扱いにされた特定のアクセス先候補の識別情報を記憶し、その後、回復があった場合には、前記他方の第一のインターフェースに備えられる他方の第一のプロセッサに対してフェイルオーバを行い、再起動し、
前記再起動の際、閉塞扱いとされたアクセス先候補の前記識別情報を消去し、第二のプロセッサから、前記一又は複数のアクセス先候補の各々に関する情報を受信することにより、使用可能なアクセス先候補を認識する、
インターフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのアクセス制御に関し、具体的には、例えば、アクセス制御装置が別のアクセス制御装置にアクセスできなかったことにより障害が発生したと判断された後のその障害からの回復を検出するための技術に関する。
【背景技術】
【０００２】
例えば、アクセス制御装置の一種として、記憶装置を備えた記憶制御装置がある。記憶制御装置には、データを送信するホスト装置と、別の記憶装置を備える別の記憶制御装置とを通信可能に接続することができる。記憶制御装置は、ホスト装置からデータを受信し、受信したデータを記憶装置に書込み、且つ、そのデータを別の記憶制御装置に送信することにより、そのデータを別の記憶装置にも書き込むことができる（例えば特許文献１）。
【０００３】
【特許文献１】特開２００２−３５１７０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、記憶制御装置は、別の記憶制御装置の別の記憶装置にアクセスできない場合には、障害が発生していると判断することができる。障害が発生したと判断された後、その障害からの回復があった場合に、回復があったことを人間からの情報入力により検出する方法とは別の方法で回復を検出できるようにすることが望ましい。
【０００５】
これは、記憶制御装置に限らず他種のアクセス制御装置についても同様であると考えられる。
【０００６】
従って、本発明の一つの目的は、アクセス制御装置がホスト装置とは別の外部装置にアクセスできなかったことにより障害ありと判断された後のその障害からの回復を、人間からの情報入力による検出とは別の方法で検出することができるようにすることにある。
【０００７】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本発明の第一の側面に従うアクセス制御装置は、アクセス要求を発行するホスト装置から前記アクセス要求を受信する第一のインターフェース（例えば回路基板）と、一又は複数のアクセス先候補を備える外部装置における前記一又は複数のアクセス先候補の各々にアクセスする第二のインターフェース（例えば回路基板）とを備える。前記第二のインターフェースは、前記第一のインターフェースが前記アクセス要求を受信した場合に、前記一又は複数のアクセス先候補のうちの前記受信したアクセス要求に対応する特定のアクセス先候補にアクセスすることを試みる。前記第二のインターフェースは、前記アクセスに失敗した場合、障害があったと判断して、障害という判断結果を出力し、前記アクセスに失敗した後、回復があったと判断された場合には、回復という判断結果を出力する。前記第一のインターフェースが、前記第二のインターフェースから出力された判断結果を参照することにより、前記特定のアクセス先候補へのアクセス経路において回復があったことを検出する。
【０００９】
一つの実施態様では、前記アクセス制御装置は、前記第一のインターフェース及び前記第二のインターフェースが参照可能な共有記憶領域を備えることができる。前記共有記憶領域は、前記一又は複数のアクセス先候補にそれぞれ対応した１又は複数のステータスデータを記憶することができる。前記第二のインターフェースが、障害があったと判断された場合、前記特定のアクセス先候補に対応するステータスデータを障害が有ることを表すステータスに更新し、回復があったと判断された場合、前記特定のアクセス先候補に対応する障害が無いこと又は回復があったことを表すステータスに更新することができる。前記第一のインターフェースが、前記共有記憶領域を定期的に又は不定期的に参照することにより、前記特定のアクセス先候補へのアクセス経路において回復があったことを検出することができる。
【００１０】
一つの実施態様では、第一のインターフェースは、前記ホスト装置から前記アクセス要求を受信し、前記受信したアクセス要求に基づく別のアクセス要求を出力する第一のプロセッサと、前記第一のプロセッサから出力された別のアクセス要求を受信し、前記受信した別のアクセス要求に基づいて、前記一又は複数のアクセス先候補のうちの前記特定のアクセス先候補にアクセスすることを前記第二のインターフェースに要求するためのまた別のアクセス要求を出力する第二のプロセッサとを備えることができる。前記第二のプロセッサが、前記判断結果を参照し、参照した結果である参照結果を出力することができる。
【００１１】
一つの実施態様では、前記第一のインターフェースは、前記一又は複数のアクセス先候補の各々におけるアクセス経路での障害有無を表す障害有無データを記憶する第一の記憶域を有することができる。前記第二のプロセッサが、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定し、前記障害有無データを参照することにより、障害有りを検出し、障害有りに対応する前記特定のアクセス先候補を認識することができる。
【００１２】
一つの実施態様では、前記第一のプロセッサが、前記第二のプロセッサから出力された参照結果から、前記特定のアクセス先候補へのアクセス経路において障害があったことを検出した場合、前記第二のプロセッサに対する第一の割込みを設定することができる。前記第二のプロセッサが、前記第一の割り込みを検出し、それに応答して、前記障害有りを前記障害有無データに設定することができる。
【００１３】
一つの実施態様では、前記第一のインターフェースは、前記一又は複数のアクセス先候補の各々におけるアクセス経路での回復有無を表す回復有無データを記憶する第二の記憶域を有することができる。前記第二のプロセッサが、回復のあった前記特定のアクセス先候補について回復有りを前記回復有無データに設定することができる。前記第一のプロセッサが、前記回復有無データを参照することにより、回復有りを検出し、回復有りに対応する前記特定のアクセス先候補を認識することができる。
【００１４】
一つの実施態様では、前記第二のプロセッサが、前記判断結果から回復があったことがわかった場合、前記第一のプロセッサに対する第二の割込みを設定することができる。前記第一のプロセッサが、前記第二の割り込みを検出し、それに応答して、前記回復有無データを参照することができる。
【００１５】
一つの実施態様では、前記第一のインターフェースは、前記一又は複数のアクセス先候補の各々におけるアクセス経路での障害有無を表す障害有無データを記憶する第一の記憶域と、前記一又は複数のアクセス先候補の各々におけるアクセス経路での回復有無を表す回復有無データを記憶する第二の記憶域とを有することができる。前記第一のプロセッサが、前記第二のプロセッサから出力された参照結果から、前記特定のアクセス先候補へのアクセス経路において障害があったことを検出した場合、前記第二のプロセッサに対する第一の割込みを設定することができる。前記第二のプロセッサが、前記第一の割り込みを検出し、それに応答して、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定することができる。前記第二のプロセッサが、前記判断結果から回復があったことがわかった場合、回復のあった前記特定のアクセス先候補について回復有りを前記回復有無データに設定し、前記第一のプロセッサに対する第二の割込みを設定し、且つ、前記障害有無データの前記障害有りを障害無しに変更することができる。前記第一のプロセッサが、前記第二の割り込みを検出し、それに応答して、前記回復有無データを参照することにより、回復有りを検出し、回復有りに対応する前記特定のアクセス先候補を認識し、且つ、前記検出された回復有りを回復無しに変更することができる。
【００１６】
一つの実施態様では、一方の前記第一のインターフェースと他方の前記第一のインターフェースによってクラスタが構成されてもよい。前記一方の第一のインターフェースに備えられる一方の第一のプロセッサが、前記特定のアクセス先候補へのアクセス経路において障害があったと検出した場合には、前記特定のアクセス先候補を閉塞扱いとし、閉塞扱いにされた特定のアクセス先候補の識別情報を記憶し、その後、回復があった場合には、前記他方の第一のインターフェースに備えられる他方の第一のプロセッサに対してフェイルオーバを行い、再起動することができる。また、前記一方の第一のプロセッサが、前記再起動の際、閉塞扱いとされたアクセス先候補の前記識別情報を消去し、第二のプロセッサから、前記一又は複数のアクセス先候補の各々に関する情報を受信することにより、使用可能なアクセス先候補を認識することができる。
【００１７】
一つの実施態様では、前記第一のプロセッサは、前記ホスト装置からファイルレベルのアクセス要求を受信し、前記受信したファイルレベルのアクセス要求をブロックレベルのアクセス要求に変換して出力することができる。第二のプロセッサは、前記第一のプロセッサから出力されたブロックレベルのアクセス要求に基づいて前記別のアクセス要求を生成し出力することができる。
【００１８】
一つの実施態様では、前記アクセス制御装置は、前記ホスト装置によりアクセスされる少なくとも１つ以上の論理ユニットと、前記論理ユニットと少なくとも１つ以上の記憶デバイスとを接続するようにして設けられる少なくとも１つ以上の中間記憶階層とを備えることができる。前記一又は複数のアクセス先候補の各々は、記憶デバイスとすることができる。前記中間記憶階層のうち少なくとも１つは、前記外部装置が有する記憶デバイスに接続することができる。
【００１９】
一つの実施態様では、前記中間記憶階層は、前記記憶デバイス上に設定される少なくとも一つ以上の第一の記憶階層と、この第一の記憶階層上に設定される少なくとも１つ以上の第二の記憶階層とを備えて構成されていてもよい。前記外部装置が有する記憶デバイスは、前記第一の記憶階層にマッピングされていてもよい。
【００２０】
本発明の第二の側面に従うインターフェースは、アクセス要求を発行するホスト装置から前記アクセス要求を受信する第一のインターフェースと、一又は複数のアクセス先候補を備える外部装置における前記一又は複数のアクセス先候補の各々にアクセスする第二のインターフェースとを備えるアクセス制御装置の前記第一のインターフェースである。そのインターフェースは、前記ホスト装置から前記アクセス要求を受信し、前記受信したアクセス要求に基づく別のアクセス要求を出力する第一のプロセッサと、前記第一のプロセッサから出力された別のアクセス要求を受信し、前記受信した別のアクセス要求に基づいて、前記一又は複数のアクセス先候補のうちの特定のアクセス先候補にアクセスすることを前記第二のインターフェースに要求するためのまた別のアクセス要求を出力する第二のプロセッサと、前記一又は複数のアクセス先候補の各々におけるアクセス経路での障害有無を表す障害有無データを記憶する第一の記憶域と、前記一又は複数のアクセス先候補の各々におけるアクセス経路での回復有無を表す回復有無データを記憶する第二の記憶域と
を有する。前記第二のプロセッサが、前記特定のアクセス先候補への前記第二のインターフェースからのアクセス経路において障害があった場合、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定し、その後、回復があった場合、回復のあった前記特定のアクセス先候補について回復有りを前記回復有無データに設定し、且つ、前記障害有無データの前記障害有りを障害無しに変更する。前記第一のプロセッサが、前記回復有無データを参照することにより、回復有りを検出し、回復有りに対応する前記特定のアクセス先候補を認識し、且つ、前記検出された回復有りを回復無しに変更する。
【００２１】
ここで、前記第一のプロセッサが、前記特定のアクセス先候補へのアクセス経路において障害があったことを検出した場合、前記第二のプロセッサに対する第一の割込みを設定してもよい。前記第二のプロセッサが、前記第一の割り込みを検出し、それに応答して、障害のあった前記特定のアクセス先候補について障害有りを前記障害有無データに設定してもよい。前記第二のプロセッサが、回復があったことがわかった場合前記第一のプロセッサに対する第二の割込みを設定してもよい。前記第一のプロセッサが、前記第二の割り込みを検出し、それに応答して、前記回復有無データを参照してもよい。
【００２２】
本発明の第三の側面に従うインターフェースは、アクセス要求を発行するホスト装置から前記アクセス要求を受信する第一のインターフェースと、一又は複数のアクセス先候補を備える外部装置における前記一又は複数のアクセス先候補の各々にアクセスする第二のインターフェースとを備えるアクセス制御装置の前記第一のインターフェース（特に、後述の一方の第一のインターフェース）である。そのインターフェースは、前記ホスト装置から前記アクセス要求を受信し、前記受信したアクセス要求に基づく別のアクセス要求を出力する第一のプロセッサと、前記第一のプロセッサから出力された別のアクセス要求を受信し、前記受信した別のアクセス要求に基づいて、前記一又は複数のアクセス先候補のうちの特定のアクセス先候補にアクセスすることを前記第二のインターフェースに要求するためのまた別のアクセス要求を出力する第二のプロセッサとを有する。前記アクセス制御装置では、一方の前記第一のインターフェースと他方の前記第一のインターフェースによってクラスタが構成されている。前記一方の第一のインターフェースに備えられる一方の第一のプロセッサが、前記特定のアクセス先候補への前記第二のインターフェースからのアクセス経路において障害があった場合、前記特定のアクセス先候補を閉塞扱いとし、閉塞扱いにされた特定のアクセス先候補の識別情報を記憶し、その後、回復があった場合には、前記他方の第一のインターフェースに備えられる他方の第一のプロセッサに対してフェイルオーバを行い、再起動する。前記一方の第一のプロセッサは、前記再起動の際、閉塞扱いとされたアクセス先候補の前記識別情報を消去し、第二のプロセッサから、前記一又は複数のアクセス先候補の各々に関する情報を受信することにより、使用可能なアクセス先候補を認識する。
【００２３】
前述した記憶デバイス及び記憶域は、物理的な記憶資源であっても良いし、その物理的な記憶資源上に設けられる論理的な記憶資源であっても良い。物理的な記憶資源としては、例えば、ハードディスク、磁気ディスク、光ディスク、磁気テープ、或いは半導体メモリであっても良い。論理的な記憶資源としては、論理ボリュームとすることができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明の一実施形態について説明する。
【実施例１】
【００２５】
図１は、本発明の第一の実施例に係る記憶システムを示すブロック図である。
【００２６】
ホスト装置１０は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト装置１０は、例えば、キーボードスイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、例えば、モニタディスプレイやスピーカー等の情報出力装置（図示せず）とを備えている。さらに、ホスト装置１０には、例えば、ＮＡＳ（Network Attached Storage）としてのサービスを提供することができる第一の記憶制御装置２０が有する記憶領域を使用するＮＡＳ利用ソフトウェア１１と、ＬＡＮ（Local Area Network）４等の第一の通信ネットワークを介して第一の記憶制御装置２０にアクセスするためのポート（例えば、ＬＡＮ対応のネットワークカードに設けられたポート）１２とが設けられている。ホスト装置１０は、ファイル名を指定してファイル単位でのデータ入出力を要求することができる。第一の通信ネットワークは、ＬＡＮに限らず、ファイルレベルのデータを転送することができる種類の通信ネットワークであればどのような種類であってもよい。また、ホスト装置１０は、後述するＳＡＮ（Storage Area Network）２に接続されても良い。ホスト装置１０は、書込み要求及び書込み対象データを送信したり、読出し対象データの読出し要求を送信したりすることができる。ＮＡＳ利用ソフトウェア１１としては、例えば、ホスト装置１０の図示しないＯＳ（オペレーティングシステム）がＵＮＩＸ（登録商標）の場合、ＮＦＳ（Network File System）であり、ＯＳがＷｉｎｄｏｗｓ（登録商標）の場合、ＣＩＦＳ（Common Interface File System）である。
【００２７】
第一の記憶制御装置２０は、例えば、複数のディスク型記憶装置３０を備えたディスクアレイ装置として構成することができる。但し、これに限らず、第一の記憶制御装置２０を、高機能化されたインテリジェント型のファイバチャネルスイッチとして構成することもできる。第一の記憶制御装置２０は、後述のように、第二の記憶制御装置４０の有する記憶資源を自己の論理デバイス（以下、ＬＤＥＶ）としてホスト装置１０に提供するものであるから、自己が直接支配するローカルな記憶デバイスを有している必要はない。また、例えば、第一の記憶制御装置２０の各アダプタ２７Ａ、２１A等のプロセッサに読み込まれるＯＳ（オペレーティングシステム）等の情報は、第一の記憶制御装置２０内のディスク型記憶装置３０（別の言い方をすればLDEV）に記憶させておき、そのプロセッサは、そのディスク型記憶装置３０からOS等の情報を読み込んでもよい。
【００２８】
第一の記憶制御装置２０は、コントローラ部６と記憶装置部８とに大別することができる。
【００２９】
記憶装置部８は、複数のディスク型記憶デバイス３０を備える。ディスク型記憶デバイス３０には、一又は複数個のＬＤＥＶ３１が設けられる。なお、第二の記憶制御装置４０にも、同様に、一又は複数個のＬＤＥＶ４２が設けられる。以下、第一の記憶制御装置２０内の物理的な記憶資源が割り当てられたＬＤＥＶ３１を「内部ＬＤＥＶ３１」と言い、第二の記憶制御装置４０の物理的な記憶資源が割り当てられたＬＤＥＶ４２を「外部ＬＤＥＶ４２」と言う。
【００３０】
記憶装置部８内に点線で示されるＬＤＥＶ３２は、第二の記憶制御装置４０の有する外部ＬＤＥＶ４２を第一の記憶制御装置２０側に取り込んだ状態を示すものである。即ち、本実施例では、第一の記憶制御装置２０から見て外部に存在するＬＤＥＶ４２を、第一の記憶制御装置２０の内部ＬＤＥＶ３２として認識し、ホスト装置１０に外部ＬＤＥＶ４２の記憶資源を提供することができる。内部ＬＤＥＶ３２には、外部ＬＤＥＶ４２の記憶資源だけでなく、第一の記憶制御装置２０内の記憶資源も割り当てられても良い。
【００３１】
コントローラ部６は、例えば、ＮＡＳとしてのサービスを提供するためのチャネルアダプタＮＡＳ（以下、ＣＨＮ）セット２７と、チャネルアダプタ（ＣＨＡ）セット２１と、ディスクアダプタ（ＤＫＡ）セット２２と、サービスプロセッサ（ＳＶＰ）２３と、キャッシュメモリ２４と、共有メモリ２５と、接続部２６とを備えている。ＣＨＮセット２７、ＣＨＡセット２１、ＤＫＡセット２２、キャッシュメモリ２４及び共有メモリ２５のうちの少なくとも一つは、複数個備えられても良い。
【００３２】
ＣＨＮセット２７は、複数個（例えば２個）のＣＨＮ２７Ａ、２７Ｂから構成されている。ＣＨＮセット２７は、ＣＨＮ２７Ａから別のＣＨＮ２７Ｂにフェールオーバすることにより、ＣＨＮとしての役割を維持することができる。ＣＨＮ２７Ａ、２７Ｂの機能は同じなので、ＣＨＮ２７Ａを代表的に例に採り説明する（この段落に記載の内容は、ＣＨＡセット２１及びＤＫＡセット２２についても同様である）。
【００３３】
ＣＨＮ２７Ａは、ホスト装置１０との間のデータ通信を行うことができ、ホスト装置１０と通信可能に接続することができる通信ポート２８を備えている。また、ＣＨＮ２７Ａは、例えば、ＣＰＵやメモリ等を備えたマイクロコンピュータシステム（例えば回路基板）として構成されており、ホスト装置１０から受信した各種コマンドを解釈して実行することができる。ＣＨＮ２１Ａには、そのＣＨＮ２７Ａを識別するためのネットワークアドレス（例えば、ＩＰアドレスやＷＷＮ）が割り当てられている。ＣＨＮ２７Ａは、ホスト装置１０からＬＡＮ４を介してファイル単位でのＩ／Ｏコマンド（例えば、ファイル名と、そのファイル名を持つファイルをリード又はライトする命令とを含んだコマンド、以下、「ファイルＩ／Ｏコマンド」と言う）を受けて、そのファイルＩ／Ｏコマンドを処理するＮＡＳとして振る舞うことができるようになっている。ＣＨＮ２７Ａの構成及び機能については後に詳述する。
【００３４】
ＣＨＡ２１Ａは、第二の記憶制御装置４２との間のデータ通信を行うことができ、第二の記憶制御装置４０と通信可能に接続することができる通信ポート２９を備えている。また、ＣＨＡ２１Ａは、それぞれＣＰＵやメモリ等を備えたマイクロコンピュータシステム（例えば回路基板）として構成することができる。
【００３５】
ＤＫＡ２２Ａは、内部ＬＤＥＶ３１（換言すればディスク型記憶装置３０）との間のデータ授受を行うものである。ＤＫＡ２２Ａは、内部ＬＤＥＶ３１に接続するための通信ポート７を備えている。また、ＤＫＡ２２Ａは、ＣＰＵやメモリ等を備えたマイクロコンピュータシステム（例えば回路基板）として構成することができる。内部ＬＤＥＶ３１との間でデータ入出力を行う場合、ＤＫＡ２２Ａは、論理的なアドレスを物理的なアドレスに変換する。
【００３６】
ＳＶＰ２３は、例えば、入出力コンソールと制御コンソールとを備えた装置（例えばパーソナルコンピュータ）であっても良いし、入出力コンソール（例えば管理端末１５）に接続された制御コンソール（例えばいわゆるマザーボード）であっても良い。ＳＶＰ２３は、ＣＨＮ２７Ａ、２７Ｂ、ＣＨＡ２１Ａ、２１Ｂ、及びＤＫＡ２２Ａ、２２Ｂに、種々の命令を送信することにより、ＣＨＮ２７Ａ、２７Ｂ、ＣＨＡ２１Ａ、２１Ｂ、及びＤＫＡ２２Ａ、２２Ｂを制御することができる。また、ＳＶＰ２３は、装置内の障害発生を監視してコンソール（例えば管理端末１５が備えるディスプレイ装置）に表示させたり、コンソールからの指令に基づいて記憶ディスクの閉塞処理等を指示したりすることができる。また、ＳＶＰ２３は、ＣＨＮ２７ＡとＬＤＥＶ３１、３２とを論理的にマッピングすることができる。
【００３７】
キャッシュメモリ２４は、ホスト装置１０から受信したデータや、内部ＬＤＥＶ３１から読み出されたデータを一時的に記憶するためのものである。共有メモリ２５には、制御情報等が格納される。また、共有メモリ２５には、ワーク領域が設定されるほか、後述するマッピングテーブルＴｍ等の各種テーブル類も格納される。なお、内部ＬＤＥＶ３１、３２のいずれか１つあるいは複数を、キャッシュ用のディスクとして使用してもよい。
【００３８】
接続部２６は、ＣＨＮ２７Ａ、ＣＨＡ２１Ａ、ＤＫＡ２２Ａ、キャッシュメモリ２４、及び共有メモリ２５を相互に接続させる。接続部２６は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
【００３９】
第二の記憶制御装置４０は、通信ポート４１と外部ＬＤＥＶ４２とを備えている。このほか、チャネルアダプタやディスクアダプタ等を備えることもできるが、第二の記憶制御装置４０の詳細な構造は、本発明の要旨ではないので説明を割愛する。第二の記憶制御装置４０は、ＳＡＮ２等の第二の通信ネットワーク（例えば、ブロックレベルのデータの通信が可能なネットワーク）を介して第一の記憶制御装置２０に接続されている。第二の記憶制御装置４０の外部ＬＤＥＶ４２は、第一の記憶制御装置２０の内部ＬＤＥＶ３２として扱われるようになっている。
【００４０】
図２は、第一の記憶制御装置２０及び内部ＬＤＥＶ３２の１つの論理的な概略構造を示す模式図である。
【００４１】
第一の記憶制御装置２０は、下層側から順番に、ＶＤＥＶ１０１と、ＬＤＥＶ３１，３２と、ＬＵＮ（Logical Unit Number）１０３とからなる３層の記憶階層を有している。
【００４２】
ＶＤＥＶ１０１は、論理的な記憶階層の最下位に位置する仮想デバイス（Virtual Device）である。ＶＤＥＶ１０１は、物理的な記憶資源を仮想化したものであり、RAID構成を適用することができる。即ち、１つのディスク型記憶装置３０から複数のＶＤＥＶ１０１を形成することもできるし（スライシング）、複数のディスク型記憶装置３０から１つのＶＤＥＶ１０１を形成することもできる（ストライピング）。図２中の左側に示すＶＤＥＶ１０１は、例えば、所定のRAID構成に従ってディスク型記憶装置３０を仮想化している。
【００４３】
一方、図２中の右側に示すＶＤＥＶ１０１は、第二の記憶制御装置４０の外部ＬＤＥＶ４２をマッピングすることにより構成されている。具体的には、本実施例では、第二の記憶制御装置４０の外部ＬＤＥＶ４２を、後述のマッピングテーブルＴｍを用いてＶＤＥＶ１０１にマッピングすることにより、第一の記憶制御装置２０の内部ＬＤＥＶ３２として使用できるようになっている。図に示す例では、４つの外部ＬＤＥＶ４２Ａ〜４２Ｄをストライピングすることにより、ＶＤＥＶ１０１を構築している。各外部ＬＤＥＶ４２Ａ〜４２Ｄには、それぞれの通信ポート４１Ａ〜４１ＤからそれぞれのＬＵＮ４３Ａ〜４３Ｄを特定することにより、それぞれ個別にアクセスすることができる。各通信ポート４１Ａ〜４１Ｄには、ユニークな識別情報であるＷＷＮが割り当てられており、また、各ＬＵＮ４３Ａ〜４３Ｄには、ＬＵＮが設定されているので、ＷＷＮ及びＬＵＮの組合せによって外部ＬＤＥＶを特定することができる。
【００４４】
ＶＤＥＶ１０１の上には、内部ＬＤＥＶ３２が設けられている。内部ＬＤＥＶ３２は、ＶＤＥＶ１０１を仮想化したＬＤＥＶである。１つのＶＤＥＶ１０１から２つのＬＤＥＶ３２に接続することもできるし、複数のＶＤＥＶ１０１から１つのＬＤＥＶ３２に接続することもできる。ＬＤＥＶ３２には、それぞれのＬＵＮ１０３を介してアクセスすることができる。
【００４５】
図３は、マッピングテーブルＴｍの構成例を示す。
【００４６】
マッピングテーブルＴｍは、外部ＬＤＥＶ４２をＶＤＥＶ１０１にマッピングするためのテーブルである。マッピングテーブルＴｍには、例えば、各ＶＤＥＶ１０１毎に、ＶＤＥＶ番号、障害情報及び外部デバイス情報が対応付けられる
ＶＤＥＶ番号は、ＶＤＥＶ１０１を一意に識別するための番号である。
【００４７】
障害情報は、ＶＤＥＶ１０１に対応した外部ＬＤＥＶ４２へのアクセス経路上での障害の有無を表す情報である。例えば、障害有りの場合には「error」と記録され、障害が無い場合には「normal」と記録される。
【００４８】
外部デバイス情報としては、例えば、外部ＬＤＥＶ４２の識別情報（デバイス識別情報）と、外部ＬＤＥＶ４２の記憶容量と、外部ＬＤＥＶ４２を有する記憶デバイスの種別を示す情報（例えば、テープ系デバイスかディスク系デバイスか等）と、外部ＬＤＥＶ４２へのパス情報とを含んだ情報とすることができる。パス情報には、例えば、各通信ポート４１に固有の識別情報（ＷＷＮ）と、ＬＵＮ４３とが含まれる。
【００４９】
なお、図３中に示すデバイス識別情報やＷＷＮ等は、説明の便宜上の値であって特に意味はない。また、図３中の下側に示すＶＤＥＶ番号「３」のＶＤＥＶ１０１には、３個のパス情報が対応付けられている。即ち、このＶＤＥＶ１０１（＃３）にマッピングされる外部ＬＤＥＶ４２は、その内部に３つの経路を有する交代パス構造を備えているが、ＶＤＥＶ１０１（＃３）には、この交代パス構造を認識してマッピングされている。これら３つの経路のいずれを通っても同一の記憶領域にアクセスできることが判明しているため、いずれか１つまたは２つの経路に障害等が発生した場合でも、残りの正常な経路を介して所望のデータにアクセスできる。
【００５０】
図３に示すようなマッピングテーブルＴｍを採用することにより、第一の記憶制御装置２０内の１つ以上のＶＤＥＶ１０１に対し、１つまたは複数の外部ＬＤＥＶ４２をマッピングすることができる。
【００５１】
次に、図４を参照して、外部ＬＤＥＶ４２をＶＤＥＶ１０１にマッピングする方法の一例を説明する。図４は、マッピング時に、第一の記憶制御装置２０と第二の記憶制御装置４０との間で行われる処理の要部を示すタイムチャートである。
【００５２】
まず、第一の記憶制御装置２０は、ＣＨＡ２１Ａのイニシエータポート２９を介して、第二の記憶制御装置４０にログインする（ステップＳ１）。第二の記憶制御装置４０が、第一の記憶制御装置２０のログインに対して応答を返すことにより、ログインが完了する（Ｓ２）。次に、第一の記憶制御装置２０は、例えば、SCSI（Small Computer System Interface）規格で定められている照会コマンド（inquiryコマンド）を、第二の記憶制御装置４０に送信し、第二の記憶制御装置４０の有する記憶デバイス４２の詳細について応答を求める（Ｓ３）。
【００５３】
照会コマンドは、照会先の装置の種類及び構成を明らかにするために用いられるもので、照会先装置の有する階層を透過してその物理的構造を把握することができる。照会コマンドを使用することにより、第一の記憶制御装置２０は、例えば、装置名、デバイスタイプ、製造番号（プロダクトＩＤ）、デバイス識別情報（例えばＬＤＥＶ番号）、各種バージョン情報、ベンダＩＤ等の情報を第二の記憶制御装置４０から取得できる（Ｓ４）。第二の記憶制御装置４０は、問合せされた情報を第一の記憶制御装置２０に送信し、応答する（Ｓ５）。
【００５４】
第一の記憶制御装置２０は、第二の記憶制御装置４０から取得した情報を、マッピングテーブルＴｍの所定箇所に登録する（Ｓ６）。次に、第一の記憶制御装置２０は、第二の記憶制御装置４０から記憶デバイス４２の記憶容量を読み出す（Ｓ７）。第二の記憶制御装置４０は、第一の記憶制御装置２０からの問合せに対して、記憶デバイス４２の記憶容量を返信し（Ｓ８）、応答を返す（Ｓ９）。第一の記憶制御装置２０は、記憶デバイス４２の記憶容量をマッピングテーブルＴｍの所定箇所に登録する（Ｓ１０）。
【００５５】
以上の処理を行うことにより、マッピングテーブルＴｍを構築できる。第一の記憶制御装置２０のＶＤＥＶ１０１にマッピングされた外部ＬＤＥＶ４２との間でデータの入出力を行う場合は、後述する他のテーブルを参照してアドレス変換等を行うことができる。また、マッピングテーブルＴｍの構築が行われることにより、第一の記憶制御装置２０において、各ＬＤＥＶに対し、ＣＨＮ２７Ａ、２７ＢやＣＨＡ２１Ａ、２１Ｂを対応付けることができる（パス定義を行える）ようになる。具体的には、ＬＤＥＶが、ＬＤＥＶ３１であるかＬＤＥＶ３２（換言すれば外部ＬＤＥＶ４２）であるかに関係なく、パス定義を行うことができる。パス定義は、ＳＶＰ２３からの情報入力により行うことができる。定義されたパスは、例えば、ＬＵＮとＬＤＥＶ＃との組み合わせを含んだ情報で構成することができる。パス定義の後は、例えば、第一のＣＨＮ２７Ａが、パス定義されているＬＤＥＶのファイルシステムを作成し、そのファイルシステムを後述のＮＡＳプロセッサのＯＳにマウントし、マウントされた場所をホスト装置１０が共有設定にすることで、ホスト装置１０が、パス定義されたＬＤＥＶにアクセスすることができるようになる。
【００５６】
図５〜図７を参照して、第一の記憶制御装置２０と第二の記憶制御装置４０との間のデータ入出力について説明する。まず、データを書き込む場合について、図５及び図６に基づいて説明する。図５は、データ書込み時の処理を示す模式図である。図６は、図５中の処理の流れを各種テーブルとの関係で示す説明図である。
【００５７】
ホスト装置１０のデータの書込み先がＬＤＥＶ３１の場合、すなわち、ホスト装置１０がデータを書き込もうとするＬＤＥＶが、ＶＤＥＶ１０１を介して内部のディスク型記憶装置３０に接続されている場合、通常の処理によってデータが書き込まれる。即ち、ホスト装置１０からのデータは、いったんキャッシュメモリ２４に格納され、キャッシュメモリ２４からＤＫＡ２２Ａを介して、ディスク型記憶装置３１の所定アドレスに格納される。この際、ＤＫＡ２２Ａは、論理的なアドレスを物理的なアドレスに変換する。
【００５８】
これに対し、ホスト装置１０のデータの書込み先がＬＤＥＶ３２の場合、すなわち、ホスト装置１０が書き込もうとするＬＤＥＶが、ＶＤＥＶ１０１を介して外部ＬＤＥＶ４２に接続されている場合、図５に示すような流れでデータが書き込まれる。図５Ａは記憶階層を中心に示す流れ図であり、図５Ｂはキャッシュメモリ２４の使われ方を中心に示す流れ図である。
【００５９】
ホスト装置１０は、書込み先のＬＤＥＶ３２を特定するＬＤＥＶ番号とこのＬＤＥＶ３２にアクセスするための通信ポート２１Ａを特定するＷＷＮとを明示して、書込みコマンド（Write）を発行する（Ｓ２１Ａ）。ここでは、ファイルレベルの書込みコマンド（ファイルＩ／Ｏコマンド）が発行される。第一の記憶制御装置２０のＣＨＮ（E-NAS（Embedded NAS））２７Ａは、ファイルレベルの書込みコマンドを受信し、その書込みコマンドをブロックレベルの書込みコマンド（ブロックＩ／Ｏコマンド）に変換し、変換後のブロックレベルの書込みコマンドを出力する（Ｓ２１Ｂ）。
【００６０】
第一の記憶制御装置２０のＣＨＡ２１Ａは、ＣＨＮ２７Ａから出力されたブロックレベルの書込みコマンドを受信し、その書込みコマンドに基づいて、第二の記憶制御装置４０に送信するための書込みコマンドを生成し、第二の記憶制御装置４０に送信する（Ｓ２２）。ＣＨＡ２１Ａは、受信した書込みコマンド中の書込み先アドレス情報等を、外部ＬＤＥＶ４２に合わせて変更することにより、新たな書込みコマンドを生成することができる。
【００６１】
次に、ホスト装置１０は、書き込むべきデータを第一の記憶制御装置４０に送信する（Ｓ２３Ａ）。第一の記憶制御装置２０のＣＨＮ２７Ａに受信されたデータは、ＬＤＥＶ３２からＶＤＥＶ１０１を介して（Ｓ２３Ｂ及びＳ２４）、外部のＬＤＥＶ４２に転送される（Ｓ２６）。ここで、ＣＨＮ２７Ａは、ホスト装置１０からのデータをキャッシュメモリ２４に格納した時点で、ホスト装置１０に対し書込み完了の応答（Good）を返す（Ｓ２５Ａ、Ｓ２５Ｂ）。第二の記憶制御装置４０は、第一の記憶制御装置２０からデータを受信した時点で（あるいは外部ＬＤＥＶ４２に書込みを終えた時点で）、書込み完了報告を第一の記憶制御装置２０に送信する（Ｓ２６）。即ち、第一の記憶制御装置２０がホスト装置１０に対して書込み完了を報告する時期（Ｓ２５Ａ、Ｓ２５Ｂ）と、実際にデータが外部ＬＤＥＶ４２に記憶される時期とは相違する（実質的に同じ時期であっても良い）。従って、ホスト装置１０は、実際にデータが外部ＬＤＥＶ４２に格納される前にデータ書込み処理から解放され、別の処理を行うことができる。
【００６２】
図５Ｂを参照する。キャッシュメモリ２４には、多数のサブブロック２４Ａが設けられている。ＣＨＮ２７Ａは、ホスト装置１０から指定された論理ブロックアドレスをサブブロックのアドレスに変換し、キャッシュメモリ２４の所定箇所にデータを格納する（Ｓ２４）。
【００６３】
図６を参照して、各種テーブルを利用してデータが変換される様子を説明する。図６の上部に示すように、ホスト装置１０は、所定の通信ポート２８に対し、ＬＵＮ及び論理ブロックアドレス（ＬＢＡ）を指定してデータを送信する。第一の記憶制御装置２０は、ＬＤＥＶ３２用に入力されたデータ（ＬＵＮ＋ＬＢＡ）を、図６Ａに示す第一の変換テーブルＴ１に基づいて、ＶＤＥＶ１０１用のデータに変換する。第一の変換テーブルＴ１は、内部のＬＵＮ１０３を指定するデータをＶＤＥＶ１０１用データに変換するための、ＬＵＮ−ＬＤＥＶ−ＶＤＥＶ変換テーブルである。このテーブルＴ１は、例えば、ＬＵＮと、そのＬＵＮに対応するＬＤＥＶ３２の番号（ＬＤＥＶ＃）及び最大スロット数と、ＬＤＥＶ３２に対応するＶＤＥＶ１０１の番号（ＶＤＥＶ＃）及び最大スロット数等を対応付けることにより構成される。このテーブルＴ１を参照することにより、ホスト装置１０からのデータ（ＬＵＮ＋ＬＢＡ）は、ＶＤＥＶ１０１用のデータ（ＶＤＥＶ＃＋ＳＬＯＴ＃＋ＳＵＢＢＬＯＣＫ＃）に変換される。
【００６４】
次に、第一の記憶制御装置２０は、図６Ｂに示す第二の変換テーブルＴ２を参照して、ＶＤＥＶ１０１用のデータを、第二の記憶制御装置４０の外部ＬＵＮ（ＬＤＥＶ４２）用に送信して記憶させるためのデータに変換する。第二の変換テーブルＴ２には、例えば、ＶＤＥＶ１０１の番号（ＶＤＥＶ＃）と、そのＶＤＥＶ１０１からのデータを第二の記憶制御装置４０に送信するためのイニシエータポートの番号と、データ転送先の通信ポート４１を特定するためのＷＷＮと、その通信ポートを介してアクセス可能なＬＵＮとが対応付けられている。この第二の変換テーブルＴ２に基づいて、第一の記憶制御装置２０は、記憶させるべきデータの宛先情報を、イニシエータポート番号＃＋ＷＷＮ＋ＬＵＮ＋ＬＢＡの形式に変換する。このように宛先情報が変更されたデータは、指定されたイニシエータポートからＳＡＮ２を介して、指定された通信ポート４１に到達する。そして、データは、指定されたＬＵＮ４３でアクセス可能な外部ＬＤＥＶ４２の所定の場所に格納される。外部ＬＤＥＶ４２は、物理的な記憶装置（例えばディスク型記憶装置）上に論理的に構築されているので、データのアドレスは物理アドレスに変換されて、所定の記憶装置の所定アドレスに格納される。
【００６５】
図６Ｃは、別の第二の変換テーブルＴ２ａの構成例を示す。この変換テーブルＴ２ａは、外部記憶デバイス４２に由来するＶＤＥＶ１０１に、ストライプやRAIDを適用する場合に使用される。変換テーブルＴ２ａは、ＶＤＥＶ番号（ＶＤＥＶ＃）と、ストライプサイズと、RAIDレベルと、第二の記憶制御装置４０を識別するための番号（ＳＳ＃（ストレージシステム番号））と、イニシエータポート番号と、通信ポート４１のＷＷＮ及びＬＵＮ４３の番号とを対応付けることにより構成されている。図６Ｃに示す例では、１つのＶＤＥＶ１０１は、ＳＳ＃（１，４，６，７）で特定される合計４つの外部記憶制御装置を利用してRAID１を構成する。また、ＳＳ＃１に割り当てられている３個のＬＵＮ（＃０，＃０，＃４）は、同一デバイス（ＬＤＥＶ＃）に設定されている。なお、ＬＵＮ＃０のボリュームは、２個のアクセスデータパスを有する交代パス構造を備えている。このように、本実施例では、外部に存在する複数の論理ボリューム（ＬＤＥＶ）からＶＤＥＶ１０１を構成することにより、ストライピングやRAID等の機能を追加した上でホスト装置１０に提供することができる。
【００６６】
上述した各種テーブルＴ１、Ｔ２及びＴ２ａのうちの少なくとも一つは、共有メモリ２５に格納することができる。
【００６７】
図７を参照して、第二の記憶制御装置４０の外部ＬＤＥＶ４２からデータを読み出す場合の流れを説明する。
【００６８】
まず、ホスト装置１０は、通信ポート２８を指定して第一の記憶制御装置２０にデータの読み出しコマンドを送信する（Ｓ３１Ａ）。ここでは、ファイルレベルの読出しコマンド（ファイルＩ／Ｏコマンド）が発行される。第一の記憶制御装置２０のＣＨＮ２７Ａは、ファイルレベルの読出しコマンドを受信し、その読出しコマンドをブロックレベルの読出しコマンド（ブロックＩ／Ｏコマンド）に変換し、変換後のブロックレベルの読出しコマンドを出力する（Ｓ３１Ｂ）。ＣＨＡ２１Ａは、ＣＨＮ２７Ａから出力された読み出しコマンドを受信し、その読出しコマンドに基づいて、第二の記憶制御装置４０に送信するための読出しコマンドを生成し、第二の記憶制御装置４０に送信する（Ｓ３２）。第二の記憶制御装置４０は、第一の記憶制御装置２０から受信した読み出しコマンドに応じて、要求されたデータを外部ＬＤＥＶ４２から読み出して第一の記憶制御装置２０に送信し（Ｓ３３）、正常に読み出しが完了した旨を報告する（Ｓ３５）。第一の記憶制御装置２０のＣＨＡ２１Ａは、図７Ｂに示すように、第二の記憶制御装置４０から受信したデータを、キャッシュメモリ２４の所定の場所に格納させる（Ｓ３４）。ＣＨＡ２１Ａは、そのことを、ＣＨＮ２７Ａに通知することができる。
【００６９】
第一の記憶制御装置２０のＣＨＮ２７Ａは、キャッシュメモリ２４に格納されたデータを読み出し（Ｓ３６Ａ）、アドレス変換を行った後、ＬＵＮ１０３等を介してホスト装置１０にデータを送信し（Ｓ３６Ｂ）、読み出し完了報告を行う（Ｓ３７Ａ、Ｓ３７Ｂ）。これらデータ読み出し時の一連の処理では、図７と共に述べた変換操作が逆向きで行われる。
【００７０】
図７では、ホスト装置１０からの要求に応じて、第二の記憶制御装置４０からデータを読み出し、キャッシュメモリ２４に保存するかのように示している。しかし、これに限らず、外部ＬＤＥＶ４２に記憶されているデータの全部または一部を、予めキャッシュメモリ２４に記憶させておくこともできる。この場合、ホスト装置１０からの読み出しコマンドに対し、直ちにキャッシュメモリ２４からデータを読み出してホスト装置１０に送信することができる。
【００７１】
以上のように、本実施例では、ＬＵＮ１０３と外部ＬＤＥＶ４２との間に位置する中間記憶階層（ＶＤＥＶ１０１，ＬＤＥＶ３２）に外部ＬＤＥＶ４２を接続することにより、外部ＬＤＥＶ４２を第一の記憶制御装置２０の内部ＬＤＥＶ３２として利用することができるようになっている（以下、この技術を、「外部接続技術」と称することがある）。この外部接続技術は、例えば、特願２００３−３３７２３９号、米国特願Ｎｏ．１０／７６９，８０５（本願出願時点では未公開）に記載の技術を援用することができる。
【００７２】
図８は、ＣＨＮ２７Ａの構成例を示す。
【００７３】
ＣＨＮ２７Ａは、ネットワークインタフェース部１１１、入出力制御部１１４、ボード接続用コネクタ１１６、通信メモリ８０２、ハードウェアレジスタ群８０３、通信ポート２８及びファイルサーバ部８００を備える。入出力制御部１１４は、例えば、ＮＶＲＡＭ（Non Volatile RAM）１１５及びＩ／Ｏ（Input/Output）プロセッサ１１９を有する。
【００７４】
ＣＨＮ２７Ａは、第一の記憶制御装置２０側のスロットに装着することにより、ボード接続用コネクタ１１６を介して、接続部２６に接続される。また、ＣＨＮ２７Ａは、電源供給用コネクタ７５０を介して、第一の記憶制御装置２０より電源を供給される。ＣＨＮ２７Ａには、電源制御回路と、電源制御回路を制御するためのハードウェアレジスタ群８０３が実装されており、ハードウェアレジスタ群８０３にプログラム的に値をセットすることにより、入出力制御部１１４およびファイルサーバ部８００への電力の供給および遮断を制御することができる。また、電源の制御以外にも、ハードウェアレジスタ群８０３のセットする値を変更することにより、電源の供給および遮断以外にも、入出力制御部１１４又はファイルサーバ部８００のリブート、あるいは診断モードへの移行など、ハードウェア的な動作を制御することも可能である。これにより、入出力制御部のＩ／Ｏプロセッサ１１９が、ファイルサーバ部８００のＮＡＳプロセッサ１１２への電源供給の開始または遮断、リブート、診断モードへの移行などをハードウェア的に制御することが可能となる。また、逆にファイルサーバ部８００のＮＡＳプロセッサ１１２が、入出力制御部のＩ／Ｏプロセッサ１１９に対して、電源供給の開始または遮断、リブート、診断モードへの移行などをハードウェア的に制御してもよい。
【００７５】
ネットワークインタフェース部１１１は、ホスト装置１０との間で通信を行うための通信インタフェースを備えている。ＣＨＮ２７Ａの場合は、例えばＴＣＰ／ＩＰプロトコルに従ってホスト装置１０から送信されたファイルアクセス要求を受信する。通信ポート８は、ホスト装置１０との間で通信を行うためのコネクタである。ＣＨＮ２７Ａの場合は、ＬＡＮに接続可能なコネクタであり、例えばイーサネット（登録商標）に対応している。
【００７６】
ファイルサーバ部８００は、ＮＡＳプロセッサ１１２、ＮＡＳメモリ１１３、バスブリッジ８０５、ＢＩＯＳ（Basic Input/Output System）８０１及びＮＶＲＡＭ８０４を有する。
【００７７】
ＮＡＳプロセッサ１１２は、例えば、Ｉ／Ｏプロセッサ１１９よりも処理速度の高いＣＰＵである。ＮＡＳプロセッサ１１２は、ファイル指定されたファイルＩ／Ｏコマンドの解析や、ファイルＩ／ＯコマンドをブロックＩ／Ｏコマンドに変換する処理や、ブロックＩ／ＯコマンドをＩ／Ｏプロセッサ１１９に送信する処理等を実行することができる。
【００７８】
ＮＡＳメモリ１１３には、さまざまなプログラムやデータが記憶される。
【００７９】
ＢＩＯＳ８０１は、例えばＣＨＮ２７に電源が投入された際に、ＮＡＳプロセッサ１１２を起動する過程で最初にＮＡＳメモリ１１３にロードされ実行されるソフトウェアであり、例えばフラッシュメモリなどの不揮発性の媒体に保存されてＣＨＮ２７Ａ上に実装されている。ＮＡＳプロセッサ１１２は、ＢＩＯＳ８０１からＮＡＳメモリ１１３上に読み込まれたソフトウェアを実行することにより、ＣＨＮ２７Ａ上のＮＡＳプロセッサ１１２が関係する部分の初期化、診断などを行うことができる。さらに、ＮＡＳプロセッサ１１２は、ＢＩＯＳ８０１からＩ／Ｏプロセッサ１１９にコマンドなどの指示を発行することにより、内部ＬＤＥＶ３１から所定のプログラム、例えばＯＳのブート部などをＮＡＳメモリ１１３に読み込むことができる。読み込まれたＯＳのブート部は、さらに内部ＬＤＥＶ３１に格納されているＯＳの主要部分をＮＡＳメモリ１１３に読み込む動作をし、これによりＮＡＳプロセッサ１１２上でＯＳが起動され、例えばファイルサーバとしての処理が実行できるようになる。
【００８０】
バスブリッジ８０５は、ネットワークインターフェース部１１１及び入出力制御部１１９をファイルサーバ部８００に繋ぐものである。
【００８１】
入出力制御部１１４は、ディスクアダプタ２２、キャッシュメモリ２４、共有メモリ２５及びコントロールユニット２３との間でデータやコマンドの授受を行う。Ｉ／Ｏプロセッサ１１９は、例えば１チップのマイコンで構成される。Ｉ／Ｏプロセッサ１１９は、ＬＤＥＶ３１、３２内に対するデータの書き込み又は読み出し要求やデータの授受を制御し、ＮＡＳプロセッサ１１２とディスクアダプタ２２との間の通信を中継する。ＮＶＲＡＭ１１５はＩ／Ｏプロセッサ１１９の制御を司るプログラムを格納する不揮発性メモリである。
【００８２】
ハードウェアレジスタ群８０３は、例えば、ＮＡＳプロセッサ１１２に対して電源を投入又は切断する回路に接続される。これにより、Ｉ／Ｏプロセッサ１１９は、ハードウェアレジスタ群８０３にアクセスすることによって、ハードウェアレジスタ群８０３を介してＮＡＳプロセッサ１１２の電源を操作することが可能となる。ハードウェアレジスタ群８０３は、必要に応じて、ＮＡＳプロセッサ１１２あるいはＩ／Ｏプロセッサ１１９がハードウェアレジスタ群８０３にアクセスを行った際に、アクセス対象の相手先に対する割り込み（以下、これを「ドアベル」と呼ぶことがある）などを生成して、アクセスが行われたことを通知する等の複数の機能を有する。これら複数の機能は、ハードウェアレジスタ群８０３を構成する各レジスタにそれぞれハードウェア的に割り当てることができる。
【００８３】
通信メモリ８０２が有する記憶領域は、Ｉ／Ｏプロセッサ１１９からＮＡＳプロセッサ１１２へ情報を受け渡すために使用されるデータ領域８０２Ａと、ＡＳプロセッサ１１２からＩ／Ｏプロセッサ１１９へ情報を受け渡すために使用されるデータ領域８０２Ｂとに論理的に区分することができる。
【００８４】
図９Ａは、データ領域８０２Ａに格納されるデータの構造例を示す。
【００８５】
Ｉ／Ｏプロセッサ１１９からＮＡＳプロセッサ１１２に渡される情報としては、起動デバイス種別、診断実行フラグ、複数のドライブ番号、時刻情報、コマンドリトライ回数、コマンドタイムアウト値及び複数の温度情報がある。起動デバイス種別は、ＮＡＳプロセッサ１１２が起動するときに、ＢＩＯＳ８０１の制御によって起動されるデバイスの種類であり、例えばネットワーク、ディスクドライブなどの種別がある。ドライブ番号は、起動デバイス種別がディスクドライブであったときに、ＯＳのロード元のディスクドライブを選択するための番号である。なお、本実施の形態においては、記憶デバイス３１、３２内にＬＤＥＶという概念を有しており、ＬＤＥＶに対してＯＳ等が格納されているため、ＬＤＥＶ毎に区別されるＬＤＥＶ番号をドライブ番号と考える。ドライブ番号には例えば優先度が設けられており、仮にドライブ番号０がドライブ番号１に優先する場合、ＮＡＳプロセッサ１１２は、まずドライブ番号０に指定されているＬＤＥＶからの起動を試みて、その起動が失敗した場合に、ドライブ番号１に指定されているＬＤＥＶからの起動を試みるというような動作が可能である。診断実行フラグは、ＮＡＳプロセッサ１１２が起動する際に、Ｉ／Ｏプロセッサ１１９からＢＩＯＳ８０１に対して、ファイルサーバ部８００周辺のハードウェア診断を実行するか否かを指示することに利用される。例えば、ファイルサーバ部８００の初期化が完了した時点で、ＮＡＳプロセッサ１１２のみを再起動したような場合には、ＢＩＯＳ８０１が再度ハードウェア診断を実行することを要しない。このような場合に、Ｉ／Ｏプロセッサ１１９が診断実行フラグを適宜設定することよって、ＮＡＳプロセッサ１１２によるファイルサーバ部８００のハードウェア診断の再度実行を抑止できる。時刻情報は、ＮＡＳプロセッサ１１２上でＢＩＯＳ１１２やＯＳが動作する際に使用される。Ｉ／Ｏプロセッサ１１９は、コントロールユニット２３から時刻情報を取得して、ＮＡＳプロセッサ１１２に渡される。これにより、コントロールユニット２３、Ｉ／Ｏプロセッサ１１９及びＮＡＳプロセッサ１１２は、これらの三者間で時刻情報の同期をとることが可能となる。コマンドリトライ回数、コマンドタイムアウト値は、ＮＡＳプロセッサ１１２からＩ／Ｏプロセッサ１１９に発行されたコマンドが失敗したときのＮＡＳプロセッサ１１２上のＢＩＯＳ８０１あるいはＯＳの動作、及びタイムアウトの条件等である。温度情報は、ＮＡＳプロセッサ１１２が自らの温度変化の異常を検知できるようにするために、ＮＡＳプロセッサ１１２に対して設定される値である。
【００８６】
図９Ｂは、データ領域８０２Ｂに格納されるデータの構造例を示す。
【００８７】
ＢＩＯＳバージョンは、ＢＩＯＳ８０１のオブジェクトコードのバージョンであり、ＮＡＳプロセッサ１１２からＩ／Ｏプロセッサ１１９に渡され、さらにＩ／Ｏプロセッサ１１９から管理端末１６０に渡される。ＭＡＣアドレスは、ＮＡＳプロセッサ１１２のＭＡＣアドレスである。ＭＡＣアドレスは、ハードウェア的に世界で一意な識別子であり、ＩＰプロトコルによってＩＰアドレスをＬＡＮ上のＤＨＣＰサーバに割り当てる時などに必要な情報である。なお、０パディング情報はワード境界を埋めるためのものであり、情報とは無関係である。
【００８８】
図１０Ａは、書込みコマンド及び書込み対象データを受信した場合に行うＣＨＮ２７Ａの処理流れの一例を示す。
【００８９】
ＮＡＳプロセッサ１１２が、ネットワークインターフェース部１１１を介して、書込み対象データ及びファイルレベルの書込みコマンドを受信し、書込み対象データをＮＡＳメモリ１１３に書く（Ｓ４１）。また、ＮＡＳプロセッサ１１２は、ファイルレベルの書込みコマンドをブロックレベルの書込みコマンドに変換し、ブロックレベルの書込みコマンドをＩ／Ｏプロセッサ１１９に送る（Ｓ４２）。
【００９０】
Ｉ／Ｏプロセッサ１１９は、ブロックレベルの書込みコマンドを受信し、その受信に応答して、書込み対象データをＮＡＳメモリ１１３から取得し、取得した書込み対象データをキャッシュメモリ２４に書く（Ｓ４３）。Ｉ／Ｏプロセッサ１１９は、ＮＡＳプロセッサ１１２に、書込み成功（Good）を通知する（Ｓ４４）。ＮＡＳプロセッサ１１２は、書込み成功を受信した場合、ホスト装置１０に書込み成功を通知する（Ｓ４５）。
【００９１】
図１０Ｂは、読出しコマンドを受信した場合に行うＣＨＮ２７Ａの処理流れの一例を示す。
【００９２】
ＮＡＳプロセッサ１１２が、ネットワークインターフェース部１１１を介して、ファイルレベルの読出しコマンドを受信し、そのファイルレベルの読出しコマンドをブロックレベルの読出しコマンドに変換し、ブロックレベルの読出しコマンドをＩ／Ｏプロセッサ１１９に送る（Ｓ５１）。
【００９３】
Ｉ／Ｏプロセッサ１１９は、ブロックレベルの読出しコマンドを受信し、その受信に応答して、読出し対象データをキャッシュメモリ（ＣＭ）２４から取得し、取得した読み出し対象データをＮＡＳメモリ１１３に書く（Ｓ５２）。ここで、Ｉ／Ｏプロセッサ１１９は、キャッシュメモリ２４に読出し対象データが存在しない場合には、ＤＫＡ２２Ａ又はＣＨＡ２１Ａに、読出し対象データを要求することができる。ＤＫＡ２２Ａ又はＣＨＡ２１Ａは、その要求に応答して、読み出し対象データを内部ＬＤＥＶ３１又は外部ＬＤＥＶ４２から取得し、取得した読出し対象データを、キャッシュメモリ２４に書き込むことができる。
【００９４】
Ｉ／Ｏプロセッサ１１９は、読出し対象データをＮＡＳメモリ１１３に書き込んだ場合、読み出し成功（Good）をＮＡＳプロセッサ１１２に通知する（Ｓ５３）。ＮＡＳプロセッサ１１２は、読出し成功を受信した場合、ＮＡＳメモリ１１３から読み出し対象データを取得してホスト装置１０に送信し（Ｓ５４）、ホスト装置１０に読み出し成功を通知する（Ｓ５５）。
【００９５】
以上が、ＣＨＮ２７Ａの構成例についての概要である。
【００９６】
ＣＨＮ２７Ａには、ＮＡＳプロセッサ１１２とＩ／Ｏプロセッサ１１９という少なくとも２つのプロセッサが搭載されているが、必ずしも二つである必要は無く、それ以下でもそれ以上でも良い。ＮＡＳプロセッサ１１２は、共有メモリ２５及びキャッシュメモリ２４にアクセスすることはできないが、Ｉ／Ｏプロセッサ１１９は、共有メモリ２５及びキャッシュメモリ２４にアクセスすることができる。
【００９７】
ホスト装置１０から内部ＬＤＥＶ３２に対するファイルＩ／Ｏコマンドが発行された場合、ＮＡＳプロセッサ１１２が、そのファイルＩ／ＯコマンドをブロックＩ／Ｏコマンドに変換し、Ｉ／Ｏプロセッサ１１９が、そのブロックＩ／Ｏコマンドを接続部２６へ出力する。これにより、ＣＨＡ２１Ａが、そのブロックＩ／Ｏコマンドを受信し、そのブロックＩ／Ｏコマンドに基づいて、内部ＬＤＥＶ３２にＶＤＥＶ１０１を介してマッピングされた外部ＬＤＥＶ４２にアクセスするためのブロックＩ／Ｏコマンドを生成し、生成されたブロックＩ／Ｏコマンドを第二の記憶制御装置４０に送信する。これにより、ホスト装置１０に対し、外部ＬＤＥＶ４２を内部ＬＤＥＶ３２とした記憶資源を提供することができる。
【００９８】
ここで、外部ＬＤＥＶ４２へのアクセス経路において或る種の障害が発生した場合、ＣＨＡ２１Ａが、外部ＬＤＥＶ４２にアクセスすることができない。或る種の障害としては、例えば、ＳＡＮ２を構成するスイッチ７２の障害（図１１Ａ参照）、第一の記憶制御装置２０のＣＨＡ２１Ａのポート２９及び第二の記憶制御装置４０のＣＨＡ４４のポート（図示せず）のうちの少なくとも一方の障害（図１１Ｂ参照）、ＣＨＡ２１Ａとスイッチ７２を接続する通信路及びＣＨＡ４４とスイッチ７２とを接続する通信路のうちの少なくとも一方の障害（図１１Ｃ参照）、ＣＨＡ２１Ａ及びＣＨＡ４４のうちの少なくとも一方の障害（図１１Ｄ参照）が考えられる。
【００９９】
ＣＨＮ２７Ａは、ＣＨＡ２１Ａが外部ＬＤＥＶ４２にアクセスできない場合、障害が発生したと判断することができる。具体的には、例えば、ＣＨＮ２７Ａは、アクセスできないまま一定時間経過した場合或いはアクセスを所定回数リトライしてもアクセスできない場合、その外部ＬＤＥＶ４２を閉塞扱いとする（換言すれば、アクセス不可のＬＤＥＶとして設定する）ことができる。本実施例では、その障害からの回復があった場合にその回復をＣＨＮ２７Ａがどのように検出するかが一つの特徴である。以下、その特徴について説明する。
【０１００】
図１２は、外部ＬＤＥＶへのアクセス経路に障害が発生した場合に行われる処理の説明図である。
【０１０１】
ＣＨＮ２７Ａには、ＮＡＳプロセッサ１１２がアクセスできるがＩ／Ｏプロセッサ１１９がアクセスできない記憶領域（以下、ＮＡＳ専用領域）５２５と、Ｉ／Ｏプロセッサ１１９がアクセスできるがＮＡＳプロセッサ１１２がアクセスできない記憶領域（以下、ＩＯ専用領域）５３９と、ＮＡＳプロセッサ１１２もＩ／Ｏプロセッサ１１９もアクセスできる記憶領域（以下、ＮＡＳ−ＩＯ共有領域）５３７とがある。
【０１０２】
ＮＡＳ専用領域５２５は、例えば、ＮＡＳメモリ１１３上に設けることができる。ＮＡＳ専用領域５２５は、例えば、各ＬＤＥＶ３１、３２のファイルシステムの管理に利用される。
【０１０３】
ＩＯ専用領域５３９は、例えば、ＮＶＲＡＭ１１５上に設けることができる。ＩＯ専用領域５３９には、各ＬＤＥＶ毎の障害の有無を表すＬＤＥＶ障害ビットマップ５３３が記憶される。ＬＤＥＶ障害ビットマップ５３３には、例えば、図１３Ａに例示する通り、２５６個のＬＤＥＶにそれぞれ対応する２５６個のビットが存在する。各ビット（以下、障害ビット）は、立っていれば（例えば「１」であれば）、「障害有り」を表し、倒れていれば（例えば「０」であれば）、「障害無し」を表す。Ｉ／Ｏプロセッサ１１９は、このＬＤＥＶ障害ビットマップ５３３を参照することにより、アクセス対象のＬＤＥＶについて障害有りか否かを判断することができる。
【０１０４】
ＮＡＳ−ＯＳ共有領域５３７は、例えば、ハードウェアレジスタ群８０３と通信メモリ８０２とのうちの少なくとも一方に設けることができる。ＮＡＳ−ＯＳ共有領域５３７には、各ＬＤＥＶ毎の回復の有無を表すＬＤＥＶ回復ビットマップ５３１が記憶される。ＬＤＥＶ回復ビットマップ５３１の構成は、ＬＤＥＶ障害ビットマップ５３３と同じにすることができる。すなわち、例えば、図１３Ｂに例示する通り、ＬＤＥＶ回復ビットマップ５３１は、２５６個のＬＤＥＶにそれぞれ対応する２５６個のビットを備えることができる。各ビット（以下、回復ビット）は、立っていれば（例えば「１」であれば）、「回復有り」を表し、倒れていれば（例えば「０」であれば）、「回復無し」を表す。Ｉ／Ｏプロセッサ１１９及びＮＡＳプロセッサ１１２は、このＬＤＥＶ障害ビットマップ５３１を参照することにより、アクセス対象のＬＤＥＶについて回復有りか否かを判断することができる。また、Ｉ／Ｏプロセッサ１１９は、「回復無し」のＬＤＥＶについて、ＬＤＥＶ障害ビットマップ５３３を参照することにより、障害ビットが立っていればそのＬＤＥＶは障害有りの状態であり、障害ビットが立っていなければそのＬＤＥＶは正常状態であると判断することができる。
【０１０５】
図１４は、外部ＬＤＥＶへのアクセス経路で障害が発生した場合に行われる処理流れを示す。以下、その処理流れを、図１４及び図１２を参照して説明する。なお、その際、説明を分かり易くするために、アクセス先の外部ＬＤＥＶ４２に対応した内部ＬＤＥＶ３２のＬＤＥＶ番号（ＬＤＥＶ＃）を「ＬＤＥＶ＃１」とする。
【０１０６】
外部ＬＤＥＶ４２へのアクセス経路で障害が発生した場合（Ｓ１０１）、ＣＨＡ２１ＡのＩ／Ｏプロセッサ６１９は、その外部ＬＤＥＶ４２へアクセスすることができない。その場合、Ｉ／Ｏプロセッサ６１９は、障害が発生したと認識することができる（Ｓ１０２）。
【０１０７】
一方、ＮＡＳプロセッサ１１２は、外部ＬＤＥＶ４２に対応した内部ＬＤＥＶ３２へのブロックＩ／ＯコマンドをＩ／Ｏプロセッサ１１９に出力した後、所定の応答（例えばアクセス成功）を得られない場合、具体的には、例えば、ブロックＩ／Ｏコマンドを出力してから一定時間経過した場合、或いは、ブロックＩ／Ｏコマンドを所定回数出力しても所定の応答を得ることができない場合、内部ＬＤＥＶ３２（ＬＤＥＶ＃１のＬＤＥＶ）を閉塞扱いとし、Ｉ／Ｏプロセッサ１１９に対するドアベル（以下、ＮＡＳ−ＩＯドアベル）５２１をＮＡＳ−ＩＯ共有領域５３７に設定する（Ｓ１０３）。これにより、Ｉ／Ｏプロセッサ１１９に、ＬＤＥＶ３２の障害が通知される。なお、ＮＡＳプロセッサ１１２からＩ／Ｏプロセッサ１１９に障害を通知する方法は、ドアベル５２１を使用する方法に限らず別の方法でも良い。
【０１０８】
Ｓ１０２で障害を認識したＩ／Ｏプロセッサ６１９は、その認識を契機に、ＬＤＥＶ＃１のＬＤＥＶ３２に対応したＶＤＥＶ＃を特定し、特定されたＶＤＥＶ＃に対応した障害情報を「normal」から「error」に更新する（Ｓ１０４）。なお、ＬＤＥＶ＃１に対応したＶＤＥＶ＃は、例えば、図７Ａの第一のテーブルＴ１から特定することができる。
【０１０９】
ＣＨＮ２７Ａにおいて、Ｉ／Ｏプロセッサ１１９は、ＮＡＳ−ＩＯドアベル５２１による障害の通知を受けた場合、マッピングテーブルＴｍを定期的に又は不定期的に参照する処理を行う。Ｉ／Ｏプロセッサ１１９は、障害情報が「error」になっているＶＤＥＶ＃を検出した場合、ＬＤＥＶ障害ビットマップ５３３にアクセスし、検出されたＶＤＥＶ＃に対応したＬＤＥＶ＃１の障害ビットを立てる（Ｓ１０５）。
【０１１０】
以後、ＮＡＳプロセッサ１１２は、ＬＤＥＶ＃１のＬＤＥＶ３２に対するファイルＩ／Ｏコマンドを受けた場合、そのファイルＩ／ＯコマンドをブロックＩ／Ｏコマンドに変換する処理を行わない。換言すれば、Ｉ／Ｏプロセッサ１１９にとっては、ＬＤＥＶ＃１のＬＤＥＶ３２に対するブロックＩ／Ｏコマンドが来ないように見える。
【０１１１】
図１５は、外部ＬＤＥＶへのアクセス経路の障害が回復した場合に行われる処理の説明図である。図１６は、外部ＬＤＥＶへのアクセス経路で障害が発生した場合に行われる処理流れを示す。以下、その処理流れを、図１５及び図１６を参照して説明する。
【０１１２】
外部ＬＤＥＶ４２へのアクセス経路で発生した障害の回復があった場合（Ｓ２０１）、ＣＨＡ２１ＡのＩ／Ｏプロセッサ６１９は、定期的に又は不定期的に外部ＬＤＥＶ４２へのアクセスを行っていれば（ポーリングを行っていれば）、上記回復があった場合に、その外部ＬＤＥＶ４２へアクセスすることができるようになる。それにより、Ｉ／Ｏプロセッサ６１９は、障害の回復があったと認識することができる（Ｓ２０２）。なお、Ｉ／Ｏプロセッサ６１９は、外部ＬＤＥＶ４２へのポーリングを、誰からの命令を受けることなく能動的に行っても良いし、Ｉ／Ｏプロセッサ１１９からの命令に従って行っても良い。
【０１１３】
Ｉ／Ｏプロセッサ６１９は、外部ＬＤＥＶ４２のＬＤＥＶ＃に対応したＶＤＥＶ＃の障害情報を「error」から「normal」に更新する（Ｓ２０３）。
【０１１４】
一方、ＣＨＮ２７ＡのＩ／Ｏプロセッサ１１９は、マッピングテーブルＴｍ（特に、Ｓ１０５で検出されたＶＤＥＶ＃の障害情報）を定期的に又は不定期的に参照している（ポーリングしている）。具体的には、例えば、Ｉ／Ｏプロセッサ１１９は、ＬＤＥＶ障害ビットマップ５３３を参照し、障害ビットが立っているＬＤＥＶ＃を特定し、特定されたＬＤＥＶ＃に対応した、マッピングテーブルＴｍ上の障害情報のポーリングを行っている。Ｉ／Ｏプロセッサ１１９は、このポーリングを、誰からの命令を受けることなく能動的に行っても良いし、ＮＡＳプロセッサ１１２からの命令に従って行っても良い。Ｉ／Ｏプロセッサ１１９は、「error」から「normal」に更新されたことを認識したならば（Ｓ２０４）、ＬＤＥＶ回復ビットマップ５３１にアクセスし、更新情報が更新されたＶＤＥＶ＃に対応したＬＤＥＶ＃１の回復ビットを立てる（Ｓ２０５）。Ｉ／Ｏプロセッサ１１９は、ＮＡＳプロセッサ１１２に対するドアベル（以下、ＩＯ−ＮＡＳドアベル）５２３をＮＡＳ−ＩＯ共有領域５３７に設定することにより、回復のあったＬＤＥＶが存在することをＮＡＳプロセッサ１１２に通知する。なお、ドアベル５２３ではなく、例えば、ＮＡＳプロセッサ１１２がＬＤＥＶ回復ビットマップ５３１をポーリングする方法により、回復のあったＬＤＥＶが存在することがＮＡＳプロセッサ１１２で検出されても良い。
【０１１５】
Ｉ／Ｏプロセッサ１１９は、Ｓ２０６の処理に伴い、ＬＤＥＶ＃１に対応する障害ビットを倒す（Ｓ２０７）。
【０１１６】
ＮＡＳプロセッサ１１２は、ＩＯ−ＮＡＳドアベル５２３による通知に応答して、ＬＤＥＶ回復ビットマップ５３１を参照し、回復のあったＬＤＥＶのＬＤＥＶ＃を特定し、特定されたＬＤＥＶ＃１のＬＤＥＶ３２（換言すれば外部ＬＤＥＶ４２）を使用可能状態にする（例えば、ＬＤＥＶのステータスを「閉塞」から「正常」に更新する）（Ｓ２０８）。その後、ＮＡＳプロセッサ１１２は、使用可能状態にされたＬＤＥＶ（ＬＤＥＶ＃１）の回復ビットを倒す（Ｓ２０９）。
【０１１７】
ＮＡＳプロセッサ１１２は、「閉塞」になっているＬＤＥＶに対するファイルＩ／Ｏコマンドをホスト装置１０から受けた場合、ホスト装置１０に対してエラーを返し（又は何の応答もせず）、そのファイルＩ／ＯコマンドをブロックＩ／Ｏコマンドに変換してＩ／Ｏプロセッサ１１９に出力する処理を行わない。しかし、「閉塞」から「正常」にＬＤＥＶが変わった後、ＮＡＳプロセッサ１１２は、そのＬＤＥＶに対するファイルＩ／Ｏコマンドをホスト装置１０から受けた場合には、そのＬＤＥＶに対するＩ／Ｏ処理を行うことができる。
【０１１８】
以上、上述した第一の実施例によれば、ＮＡＳプロセッサ１１２は、各ＬＤＥＶ別に、障害があったことと、その障害からの回復があったこととを検出することができる。その際、ＮＡＳプロセッサ１１２は、或る外部ＬＤＥＶ４２に対応する内部ＬＤＥＶ３２での障害が検出された後、その外部ＬＤＥＶ４２へのアクセスのリトライを繰り返すといったことを行う必要が無い。そのため、ＮＡＳプロセッサ１１２に大きな負荷をかけずに、外部ＬＤＥＶ４２へのアクセス経路の障害の回復があったことを自動的に検出することができる。
【実施例２】
【０１１９】
以下、本発明の第二の実施例について説明する。なお、ここでは、上述した第一の実施例との相違点を主に説明し、第一の実施例との共通点については説明を省略或いは簡略する。
【０１２０】
ＣＨＮ２７Ａ（例えば現用）とＣＨＮ２７Ｂ（例えば待機用）とはクラスタになっている。どのＣＨＮ２７Ａ、２７ＢのＮＡＳプロセッサ１１２も、外部ＬＤＥＶ４２へのアクセスに成功しない場合には（換言すれば、外部ＬＤＥＶ４２へのアクセス経路において障害があった場合には）、その外部ＬＤＥＶ４２を閉塞扱いにする。
【０１２１】
この第二の実施例では、ＣＨＮ２７ＡのＮＡＳプロセッサ１１２である第一のＮＡＳプロセッサ１１２Ａと、ＣＨＮ２７ＢのＮＡＳプロセッサ１１２である第二のＮＡＳプロセッサ１１２Ｂとのうちの少なくとも一方が、再起動することにより、障害からの回復があったことを検出することができる。以下、それについて、幾つかの例を挙げて説明する。
【０１２２】
（１）障害のあった外部ＬＤＥＶ４２に対応したＬＤＥＶ３２の他に正常なＬＤＥＶ３１又は３２が第一のＮＡＳプロセッサ１１２Ａで管理されている場合。
【０１２３】
或る外部ＬＤＥＶ４２へのアクセスが行えず、その外部ＬＤＥＶ４２に対応したＬＤＥＶ３２について障害があると第一のＮＡＳプロセッサ１１２Ａで検出された場合、第一のＮＡＳプロセッサ１１２Ａは、少なくとも一つの他のＬＤＥＶについてのファイルシステムが閉塞していなければ、後に上記障害からの回復があった場合に、以下のような処理を行うことができる。以下、その処理について、図１７を参照して説明する。
【０１２４】
障害からの回復があった場合（Ｓ３０１）、前述したように、Ｉ／Ｏプロセッサ６１９が、その回復を認識することができる。その場合、Ｉ／Ｏプロセッサ６１９は、回復有りの通知を、ブロックＩ／Ｏコマンドを発行したが成功を受けていないＣＨＮ２７Ａに発行することができる（Ｓ３０２）。
【０１２５】
ＣＨＮ２７Ａに発行された通知は、Ｉ／Ｏプロセッサ１１９を介して第一のＮＡＳプロセッサ１１２Ａが受けることができる。第一のＮＡＳプロセッサ１１２Ａは、その通知に応答して、第二のＮＡＳプロセッサ１１２Ｂへリソースをフェイルオーバし（Ｓ３０３）、リソースグループ（例えば、ＮＡＳプロセッサ１１２ＡのＯＳ上で動作するコンピュータプログラム）を停止する（Ｓ３０４）。
【０１２６】
その後、第一のＮＡＳプロセッサ１１２Ａは、再起動する（Ｓ３０５）。ここでの処理により、回復のあったＬＤＥＶを認識することができる。なお、この再起動の際、第一のＮＡＳプロセッサ１１２Ａは、例えば、閉塞扱いとしたＬＤＥＶ＃を消去する。また、再起動では、ＮＡＳプロセッサ１１２ＡにそれのＯＳがロードされるが、ＯＳのデータは、制御系のデータが格納されるＬＤＥＶ（以下、システムＬＤＥＶ）から読み出される。ＯＳのデータは、システムＬＤＥＶから、ＤＫＡ２２Ａ及びキャッシュメモリ２４を経由して、ロードされる。
【０１２７】
再起動後、第二のＮＡＳプロセッサ１１２Ｂからリソースのフェイルバックが行われ（Ｓ３０６）、第一のＮＡＳプロセッサ１１２Ａが、リソースグループを起動する（Ｓ３０７）。
【０１２８】
Ｓ３０５の再起動は、Ｉ／Ｏプロセッサ６１９からの上記通知に応答して行うこともできるし、ＳＶＰ２３から所定の命令を受けることにより行うこともできる。
【０１２９】
ところで、第一のＮＡＳプロセッサ１１２Ａの再起動では、以下のようなＬＤＥＶ認識処理が行われる。
【０１３０】
図１８は、ＮＡＳプロセッサ１１２の再起動において行われるＬＤＥＶ認識処理の流れを示す。
【０１３１】
第一のＮＡＳプロセッサ１１２Ａは、InquiryをＩ／Ｏプロセッサ１１９に発行する（Ｓ３０５−１）。これに応答して、Ｉ／Ｏプロセッサ１１９は、第一の記憶制御装置２０のＬＤＥＶ３１，３２に関する情報（例えばＬＤＥＶ＃）を第一のＮＡＳプロセッサ１１２Ａに送信する（Ｓ３０５−２）。第一のＮＡＳプロセッサ１１２Ａは、その情報から、ＬＤＥＶを特定することができる。なお、Ｓ３０５−２において、Ｉ／Ｏプロセッサ１１９は、例えば、共有メモリ２５に記憶されている種々の情報（例えば、存在するＬＤＥＶ毎のＬＤＥＶ＃、それに対応するＶＤＥＶ＃等）を取得し、種々の情報をＮＡＳプロセッサ１１２Ａに送信することができる。
【０１３２】
第一のＮＡＳプロセッサ１１２Ａは、特定されたＬＤＥＶ毎に、問合せを発行する（Ｓ３０５−３）。所定の応答を受けたならば（Ｓ３０５−４）、第一のＮＡＳプロセッサ１１２Ａは、同様の問合せを発行する（Ｓ３０５−５）。別の所定の応答を受けたならば（Ｓ３０５−６）、第一のＮＡＳプロセッサ１１２Ａは、記憶容量を問合せ（Ｓ３０５−７）、その問合せに応答して記憶容量の通知を受けた場合に（Ｓ３０５−８）、その通知された記憶容量を有するＬＤＥＶを使用することができると判断することができる（Ｓ３０５−９）。
【０１３３】
なお、別の所定の応答（Good）は、例えば、Ｉ／Ｏプロセッサ１１９が、問合せを受けたＬＤＥＶ３２に対応する外部ＬＤＥＶ４２に対してＣＨＡ２１Ａを介してアクセスし、そのアクセスに成功した場合に、発行することができる。
【０１３４】
（２）障害のあった外部ＬＤＥＶ４２に対応したＬＤＥＶ３２の他に正常なＬＤＥＶ３１又は３２が第一のＮＡＳプロセッサ１１２Ａで管理されていない場合（例えば、第一のＮＡＳプロセッサ１１２Ａで使用されている全てのＬＤＥＶが、アクセス経路において障害のある外部ＬＤＥＶに対応しており、全てが閉塞している場合）。
【０１３５】
この場合に行われる処理流れの一例を図１９に示す。
【０１３６】
この場合には、第一のＮＡＳプロセッサ１１２Ａから第二のＮＡＳプロセッサ１１２Ｂへのフェイルオーバが行われる（Ｓ４０１）。なお、どのファイルシステムが閉塞しているかという情報は、例えば、ＮＡＳプロセッサ１１２Ａ内のメモリに記憶することができる。
【０１３７】
以後、図１７のＳ３０１及びＳ３０２と同様のことが行われた場合（Ｓ４０２及びＳ４０３）、第一のＮＡＳプロセッサ１１２Ａは、リソースグループを強制的に停止して（Ｓ４０４）、再起動する（Ｓ４０５）。以後、図１７のＳ３０６及びＳ３０７と同様のことが行われる（Ｓ４０６及びＳ４０７）。
【０１３８】
（３）障害のあった外部ＬＤＥＶ４２に対応したＬＤＥＶ３２の他に正常なＬＤＥＶ３１又は３２が第一のＮＡＳプロセッサ１１２Ａで管理されていない場合（例えば、ＮＡＳプロセッサ１１２Ａ及び１１２Ｂで使用されている全てのＬＤＥＶが、アクセス経路において障害のある外部ＬＤＥＶに対応しており、全てが閉塞している場合）。
【０１３９】
この場合に行われる処理流れの一例を図２０に示す。
【０１４０】
この場合、図１８のＳ４０１と同様の処理（Ｓ５０１Ａ）が、第二のＮＡＳプロセッサ１１２Ｂでも行われる（Ｓ５０１Ｂ）。
【０１４１】
以後、図１７のＳ３０１及びＳ３０２と同様のことが行われた場合（Ｓ５０２及びＳ５０３）、両方のＮＡＳプロセッサ１１２Ａ、１１２Ｂで、それぞれ、リソースグループの強制停止が行われ（Ｓ５０４Ａ及びＳ５０４Ｂ）、クラスタ２７の停止となる（Ｓ５０５）。
【０１４２】
その後、両方のＮＡＳプロセッサ１１２Ａ、１１２Ｂが、それぞれ、再起動し（Ｓ５０６Ａ及びＳ５０６Ｂ）、クラスタ２７の起動となる（Ｓ５０７）。ＮＡＳプロセッサ１１２Ａ、１１２Ｂが、それぞれ、リソースグループを起動する（Ｓ５０８Ａ及びＳ５０８Ｂ）。
【０１４３】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、キャッシュメモリ２４と共有メモリ２５とは、物理的に別々のメモリである必要は無く、同一のメモリ上で論理的に分割されていても良い。また、ＬＤＥＶ回復ビットマップ５３３の代わりに、各ＬＤＥＶに対応した各ステータスを有する情報を用意し、そのステータス（例えば、正常、障害、回復）を適宜更新するような仕組みになっていてもよい。また、例えば、ＣＨＮ２７Ａにおいて、通信メモリ８０２及びハードウェアレジスタ群８０３のうちの少なくとも一方が無くても良いし、その代わりに、別の一又は複数の記憶域が設けられても良い。また、例えば、アクセス経路で障害が発生した場合、その障害が発生した場所がわかるように、ＣＨＮ２７Ａに通知されても良い（例えば、所定の場所で障害が発生したか否かを監視する監視プログラムが、障害を発生した場合に、その障害の発生場所を表す情報を出力しても良い）。また、例えば、障害があった場合には、ＣＨＮ２７Ａが、ホスト装置１０、ＳＶＰ２３又は管理端末１５のディスプレイ画面に、どのＬＤＥＶにアクセスできない障害が発生したかや、どんな障害（例えば、ポート障害、電源障害、パス障害、スイッチ障害、或いは外部ＬＤＥＶの障害など）が発生したのか等の障害関連情報を表示させても良い。
【図面の簡単な説明】
【０１４４】
【図１】図１は、本発明の第一の実施例に係る記憶システムを示すブロック図である。
【図２】図２は、第一の記憶制御装置２０及び内部ＬＤＥＶ３２の１つの論理的な概略構造を示す模式図である。
【図３】図３は、マッピングテーブルＴｍの構成例を示す。
【図４】図４は、マッピング時に、第一の記憶制御装置２０と第二の記憶制御装置４０との間で行われる処理の要部を示すタイムチャートである。
【図５】図５は、データ書込み時の処理を示す模式図である。図５Ａは記憶階層を中心に示す流れ図であり、図５Ｂはキャッシュメモリ２４の使われ方を中心に示す流れ図である。
【図６】図６は、図５中の処理の流れを各種テーブルとの関係で示す説明図である。図６Ａは、第一の変換テーブルＴ１の構成例を示す。図６Ｂは、第二の変換テーブルＴ２の構成例を示す。図６Ｃは、別の第二の変換テーブルＴ２ａの構成例を示す。
【図７】図７は、データ読出し時の処理を示す模式図である。図７Ａは記憶階層を中心に示す流れ図であり、図７Ｂはキャッシュメモリ２４の使われ方を中心に示す流れ図である。
【図８】図８は、ＣＨＮ２７Ａの構成例を示す。
【図９】図９Ａは、データ領域８０２Ａに格納されるデータの構造例を示す。図９Ｂは、データ領域８０２Ｂに格納されるデータの構造例を示す。
【図１０】図１０Ａは、書込みコマンド及び書込み対象データを受信した場合に行うＣＨＮ２７Ａの処理流れの一例を示す。図１０Ｂは、読出しコマンドを受信した場合に行うＣＨＮ２７Ａの処理流れの一例を示す。
【図１１】図１１は、外部ＬＤＥＶへのアクセス経路において発生し得る障害の例を示す。図１１Ａは、スイッチ障害を示す。図１１Ｂは、ポート障害を示す。図１１Ｃは、バス障害を示す。図１１Ｄは、ＣＨＡ障害を示す。
【図１２】図１２は、外部ＬＤＥＶへのアクセス経路に障害が発生した場合に行われる処理の説明図である。
【図１３】図１３Ａは、ＬＤＥＶ障害ビットマップ５３３の構成例を示す。図１３Ｂは、ＬＤＥＶ回復ビットマップ５３１の構成例を示す。
【図１４】図１４は、外部ＬＤＥＶへのアクセス経路で障害が発生した場合に行われる処理流れを示す。
【図１５】図１５は、外部ＬＤＥＶへのアクセス経路の障害が回復した場合に行われる処理の説明図である。
【図１６】図１６は、外部ＬＤＥＶへのアクセス経路で障害が発生した場合に行われる処理流れを示す。
【図１７】図１７は、本発明の第二の実施例において回復のあったＬＤＥＶをＮＡＳプロセッサの再起動により検出する場合の第一の例の説明図。
【図１８】図１８は、再起動において行われるＬＤＥＶ認識処理の流れの一例を示す。
【図１９】図１９は、本発明の第二の実施例において回復のあったＬＤＥＶをＮＡＳプロセッサの再起動により検出する場合の第二の例の説明図。
【図２０】図２０は、本発明の第二の実施例において回復のあったＬＤＥＶをＮＡＳプロセッサの再起動により検出する場合の第三の例の説明図。
【符号の説明】
【０１４５】
１０…ホスト装置  １１…ＮＡＳ利用ソフトウェア  １２…通信ポート  ２０…第一の記憶制御装置  ２１…チャネルアダプタ  ２１Ａ…通信ポート  ２２…ディスクアダプタ  ２３…ＳＶＰ（サービスプロセッサ）  ２４…キャッシュメモリ  ２５…共有メモリ  ２６…接続部  ２７…ＣＨＮ（ＮＡＳ用チャネルアダプタ）  ２７Ａ…通信ポート  ３０…記憶装置  ３１、３２、４２…ＬＤＥＶ  ４０…第二の記憶制御装置  ４１…通信ポート  Ｔｍ…マッピングテーブル
【図１】
2006227856.tif 000003
【図２】
2006227856.tif 000004
【図３】
2006227856.tif 000005
【図４】
2006227856.tif 000006
【図５】
2006227856.tif 000007
【図６】
2006227856.tif 000008
【図７】
2006227856.tif 000009
【図８】
2006227856.tif 000010
【図９】
2006227856.tif 000011
【図１０】
2006227856.tif 000012
【図１１】
2006227856.tif 000013
【図１２】
2006227856.tif 000014
【図１３】
2006227856.tif 000015
【図１４】
2006227856.tif 000016
【図１５】
2006227856.tif 000017
【図１６】
2006227856.tif 000018
【図１７】
2006227856.tif 000019
【図１８】
2006227856.tif 000020
【図１９】
2006227856.tif 000021
【図２０】
2006227856.tif 000022