(57)【要約】【課題】アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制すること。【解決手段】アクセス制御装置１００は、記憶装置１５０に対するアクセス要求を受け付けると、パス１６０を介して、ＣＭ１４０に記憶装置１５０に対するアクセス命令を出力する。アクセス制御装置１００は、アクセス命令を出力してから所定の時間が経過するまでに、ＣＭ１４０に対するアクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置１００は、所定の時間が経過しても応答を受信しなかった場合、パス１６１を介して、ＣＭ１４１にＣＭ１４０が実行するアクセス命令に応じた処理を停止させる制御を行う。アクセス制御装置１００は、ＣＭ１４１からＣＭ１４０が実行するアクセス命令に応じた処理を停止させたことを示す応答を受信すると、ＨＢＡ１３１とＣＭ１４１とを接続するパス１６１を介してアクセス命令を出力する。【選択図】図１
2018041414.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第１の制御装置に対する前記アクセス命令に対する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、
制御部を有することを特徴とするアクセス制御装置。
【請求項２】
前記アクセス命令は、ダイレクトメモリアクセスを用いて前記記憶装置にライトデータを書き込む命令であって、
前記制御部は、
前記第１のパスを介して前記アクセス命令を出力する前に前記ライトデータを複製しておき、
前記第２の制御装置に対する前記制御に対応する応答を受信したことに応じて、複製しておいた前記ライトデータに基づいて前記第２のパスを介して前記アクセス命令を出力する、ことを特徴とする請求項１に記載のアクセス制御装置。
【請求項３】
前記制御部は、
前記第２の制御装置に対する前記制御に対応する応答を受信し、かつ、前記第１の制御装置に対する前記アクセス命令に対するエラー応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、ことを特徴とする請求項１に記載のアクセス制御装置。
【請求項４】
前記制御部は、
前記第２のパスを介して前記第１の制御装置を示す情報を含む停止命令を前記第２の制御装置に出力することにより、前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる、ことを特徴とする請求項１〜３のいずれか一つに記載のアクセス制御装置。
【請求項５】
前記制御部は、
前記第２のパスを介して前記第１のパスを示す情報を含む停止命令を前記第２の制御装置に出力することにより、前記第２の制御装置に前記第１の制御装置における前記第１のパスに関する処理を停止させる、ことを特徴とする請求項１〜４のいずれか一つに記載のアクセス制御装置。
【請求項６】
前記所定の時間は、前記第１の制御装置による前記記憶装置へのアクセスが失敗したと判断する時間以下である、ことを特徴とする請求項１〜５のいずれか一つに記載のアクセス制御装置。
【請求項７】
コンピュータが、
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第１の制御装置に対する前記アクセス命令に対する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、
処理を実行することを特徴とするアクセス制御方法。
【請求項８】
コンピュータに、
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても、前記第１の制御装置に対する前記アクセス命令に対応する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、
処理を実行させることを特徴とするアクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御装置、アクセス制御方法、およびアクセス制御プログラムに関する。
【背景技術】
【０００２】
従来、サーバとストレージ装置とを複数のパスによって接続し、１つのパスに障害が発生した場合、他のパスを介してストレージ装置が有する記憶装置に対してアクセス（入出力（Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）））を行うことができるマルチパス構成のストレージシステムがある。
【０００３】
関連する先行技術としては、例えば、あるパスを使って外部記憶装置に対して入出力を要求し一定時間を経過しても応答がない場合に、別のパスを使って外部記憶装置に対して同じ入出力を要求するものがある。また、例えば、入出力要求に対する予測タイムアウト時間を統計情報に基づいて予測し、予測タイムアウト時間内に入出力要求に対する入出力応答がないと、入出力装置または経路に起因するエラーを検出してタイムアウト処理する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３３１９９９号公報
【特許文献２】特開２００９−２２３７０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、マルチパス構成において、サーバがアクセス要求を受け付けてから、アクセス要求の要求元に応答するまでにかかる時間の増大化を招いてしまうことがある。例えば、１つ目のパスからアクセス命令を出力した後、１つ目のパスからエラー応答を受信するまで待ってから、アクセス命令を出力するパスを切り替えており、アクセス要求の要求元に応答するまでにかかる時間の増大化を招きやすい。
【０００６】
また、例えば、アクセス命令を出力するパスを切り替える前に、１つ目のパスにアクセス命令をキャンセルするキャンセルコマンドを出力することにより、１つ目のパスからエラー応答を待たなくてもよいようにすることが考えられる。しかしながら、サーバがキャンセルコマンドに対応していなければ、データ破壊の可能性が生じるとともに、アクセス要求の要求元に応答するまでにかかる時間の増大化を招いてしまう。
【０００７】
１つの側面では、本発明は、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができるアクセス制御装置、アクセス制御方法、およびアクセス制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、前記アクセス命令を出力した後所定の時間が経過しても、前記第１の制御装置に対する前記アクセス命令に対応する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して、前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力するアクセス制御装置、アクセス制御方法、およびアクセス制御プログラムが提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態にかかるアクセス制御方法の一実施例を示す説明図である。
【図２】図２は、ストレージシステム２００の一例を示す説明図である。
【図３】図３は、ストレージシステム２００の他の例を示す説明図である。
【図４】図４は、アクセス制御装置１００のハードウェア構成例を示すブロック図である。
【図５】図５は、接続情報テーブル５００の記憶内容の一例を示す説明図である。
【図６】図６は、アクセス制御装置１００の機能的構成例を示すブロック図である。
【図７】図７は、動作例１における複数の動作パターンの一例を示す説明図である。
【図８】図８は、動作例１における第１の動作パターンの具体例を示す説明図である。
【図９】図９は、動作例１における第２の動作パターンの具体例を示す説明図である。
【図１０】図１０は、動作例１における第３の動作パターンの具体例を示す説明図である。
【図１１】図１１は、動作例１における第４の動作パターンの具体例を示す説明図である。
【図１２】図１２は、動作例１における第５の動作パターンの具体例を示す説明図である。
【図１３】図１３は、動作例１における第６の動作パターンの具体例を示す説明図である。
【図１４】図１４は、動作例１における第７の動作パターンの具体例を示す説明図である。
【図１５】図１５は、動作例１における第８の動作パターンの具体例を示す説明図である。
【図１６】図１６は、動作例１における第９の動作パターンの具体例を示す説明図である。
【図１７】図１７は、動作例１にかかる初期化処理手順の一例を示すフローチャートである。
【図１８】図１８は、動作例１にかかるアクセス処理手順の一例を示すフローチャート（その１）である。
【図１９】図１９は、動作例１にかかるアクセス処理手順の一例を示すフローチャート（その２）である。
【図２０】図２０は、動作例１にかかるキャンセル処理手順の一例を示すフローチャートである。
【図２１】図２１は、動作例２における複数の動作パターンの一例を示す説明図である。
【図２２】図２２は、動作例２における第１の動作パターンの具体例を示す説明図である。
【図２３】図２３は、動作例２における第２の動作パターンの具体例を示す説明図である。
【図２４】図２４は、動作例２における第３の動作パターンの具体例を示す説明図である。
【図２５】図２５は、動作例２における第４の動作パターンの具体例を示す説明図である。
【図２６】図２６は、動作例２における第５の動作パターンの具体例を示す説明図である。
【図２７】図２７は、動作例２における第６の動作パターンの具体例を示す説明図である。
【図２８】図２８は、動作例２における第７の動作パターンの具体例を示す説明図である。
【図２９】図２９は、動作例２にかかるアクセス処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、本発明にかかるアクセス制御装置、アクセス制御方法、およびアクセス制御プログラムの実施の形態を詳細に説明する。
【００１２】
（実施の形態にかかるアクセス制御方法の一実施例）
図１は、実施の形態にかかるアクセス制御方法の一実施例を示す説明図である。アクセス制御装置１００は、ストレージ装置１１０と複数のパスで接続され、ストレージ装置１１０が有する記憶装置１５０に対するアクセス要求を受け付け、ストレージ装置１１０が有する記憶装置１５０に対するアクセスを制御するコンピュータである。
【００１３】
〈第１世代の方式〉
ここで、従来、マルチパス構成のストレージシステムには、第１世代のストレージシステムがある。第１世代のストレージシステムでは、例えば、サーバは、アクセス要求に応じて、いずれかのＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）がアクセスに成功するまでそれぞれのＨＢＡに順番にアクセス命令を出力させる制御を行うことになる。
【００１４】
サーバは、いずれかのＨＢＡからアクセスに成功したことが通知されるとアクセス要求の要求元に正常応答を出力し、それぞれのＨＢＡからアクセスに失敗したことが通知されるとアクセス要求の要求元にエラー応答を出力する。ＨＢＡは、アクセス命令を出力した後、アクセス命令への応答がないまま所定の時間が経過した場合には、アクセスに失敗したことをサーバに通知する。
【００１５】
しかしながら、第１世代のストレージシステムでは、サーバがアクセス要求を受け付けてからストレージ装置が有する記憶装置に対するアクセスが終了するまでにかかる時間が、アクセス要求の要求元が許容可能な時間を超えてしまうことがある。換言すれば、サーバがアクセス要求を受け付けてから、アクセス要求の要求元に応答を出力するまでにかかる時間が、アクセス要求の要求元に設定された、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間を超えてしまうことがある。
【００１６】
例えば、それぞれのＨＢＡがアクセスに失敗した場合に、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間は、それぞれのＨＢＡがアクセスに失敗したと判定するまでにかかる時間の累計時間になる。このため、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間は増加しやすい傾向がある。
【００１７】
また、ＨＢＡの処理負荷が比較的大きい場合、または、ＨＢＡとストレージ装置とのパス上に障害が発生した場合、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間はさらに増加しやすい傾向がある。結果として、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間が比較的小さくなる傾向がある金融システムなどに、第１世代のストレージシステムを適用することは好ましくない場合がある。
【００１８】
〈第２世代の方式〉
これに対し、マルチパス構成のストレージシステムには、第１世代のストレージシステムに比べて、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間を増加しにくくする第２世代のストレージシステムがある。第２世代のストレージシステムでは、例えば、サーバは、１つ目のＨＢＡにアクセス命令を出力させた後、１つ目のＨＢＡからアクセスに失敗したことが通知される前であっても所定の時間が経過した場合には、２つ目のＨＢＡにアクセス命令を出力させる。
【００１９】
サーバは、１つ目のＨＢＡからアクセスに失敗したことが通知される前であっても所定の時間が経過した場合には、１つ目のＨＢＡにキャンセルコマンドを出力させて、ストレージ装置が実行するアクセス処理があれば停止させ、データ破壊の発生を抑制する。例えば、サーバが１つ目のＨＢＡにキャンセルコマンドを出力させると判定するまでの所定の時間は、ＨＢＡがアクセスに失敗したと判定するまでの所定の時間より小さい値が設定される。
【００２０】
しかしながら、第２世代のストレージシステムは、サーバのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がキャンセルコマンドを出力するためのインターフェースに対応していない場合には、実現することができない。このため、サーバのＯＳがキャンセルコマンドを出力するためのインターフェースに対応していない場合には、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間は増加しやすくなってしまう。結果として、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間が、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間を超えてしまうことがある。
【００２１】
また、第２世代のストレージシステムでは、ＨＢＡとストレージ装置とのパス上に障害が発生した場合、データ破壊の発生を抑制することが難しく、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間が増加してしまうことがある。例えば、ＨＢＡとストレージ装置とのパス上に障害が発生した場合、ＨＢＡから出力したキャンセルコマンドがストレージ装置まで届かず、ストレージ装置が実行するアクセス処理を停止させることができないことがある。
【００２２】
そこで、本実施の形態では、サーバのＯＳがキャンセルコマンドを出力するためのインターフェースに対応していなくても、データ破壊を防ぎつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制するアクセス制御方法について説明する。
【００２３】
図１の例では、アクセス制御装置１００は、複数のパスによってストレージ装置１１０と接続される。アクセス制御装置１００は、マルチパスドライバ１２０を実行し、ＨＢＡ１３０と、ＨＢＡ１３１とを有する。ストレージ装置１１０は、ＣＭ（Ｃｏｎｔｒｏｌｌｅｒ  Ｍｏｄｕｌｅ）１４０と、ＣＭ１４１と、記憶装置１５０とを有する。
【００２４】
マルチパスドライバ１２０は、ストレージ装置１１０が有する記憶装置１５０に対するアクセス要求を受け付け、ＨＢＡ１３０とＨＢＡ１３１とを制御し、ＨＢＡ１３０とＨＢＡ１３１とにアクセス命令を出力させることができる。
【００２５】
ＨＢＡ１３０は、ストレージ装置１１０のＣＭ１４０とパス１６０によって接続され、マルチパスドライバ１２０の制御にしたがってＣＭ１４０にアクセス命令を出力することにより、記憶装置１５０に対するアクセスをＣＭ１４０に実行させることができる。ＨＢＡ１３１は、ストレージ装置１１０のＣＭ１４１とパス１６１によって接続され、マルチパスドライバ１２０の制御にしたがってＣＭ１４１にアクセス命令を出力することにより、記憶装置１５０に対するアクセスをＣＭ１４１に実行させることができる。
【００２６】
ＣＭ１４０は、制御装置であり、アクセス制御装置１００のＨＢＡ１３０とパス１６０によって接続され、ＨＢＡ１３０からアクセス命令を受け付け、記憶装置１５０に対するアクセスを実行する。ＣＭ１４１は、制御装置であり、アクセス制御装置１００のＨＢＡ１３１とパス１６１によって接続され、ＨＢＡ１３１からアクセス命令を受け付け、記憶装置１５０に対するアクセスを実行する。記憶装置１５０は、例えば、ディスクドライバである。記憶装置１５０は、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であってもよい。
【００２７】
（１−１）アクセス制御装置１００は、記憶装置１５０に対するアクセス要求を受け付ける。アクセス制御装置１００は、例えば、マルチパスドライバ１２０によって、自装置が実行するアプリケーションソフトなどが出力したアクセス要求を受け付ける。また、アクセス制御装置１００は、例えば、マルチパスドライバ１２０によって、他のコンピュータから、記憶装置１５０に対するアクセス要求を受け付けてもよい。
【００２８】
（１−２）アクセス制御装置１００は、アクセス要求を受け付けると、記憶装置１５０を制御する複数のＣＭのうちの第１のＣＭとアクセス制御装置１００とを接続する第１のパスを介して、記憶装置１５０に対するアクセス命令を出力する。アクセス制御装置１００は、例えば、マルチパスドライバ１２０によって、アクセス要求を受け付けると、パス１６０を介して、記憶装置１５０に対するアクセス命令を出力する。
【００２９】
（１−３）アクセス制御装置１００は、アクセス命令を出力した後、所定の時間が経過するまでに、第１のＣＭに対するアクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置１００は、所定の時間が経過しても応答を受信しない場合に、複数のＣＭのうちの第２のＣＭとアクセス制御装置１００とを接続する第２のパスを介して、第２のＣＭに第１のＣＭが実行するアクセス命令に応じた処理を停止させる制御を行う。
【００３０】
アクセス制御装置１００は、例えば、マルチパスドライバ１２０によって、アクセス命令を出力した後、所定の時間が経過するまでに、ＣＭ１４０に対するアクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置１００は、例えば、マルチパスドライバ１２０によって、所定の時間が経過しても応答を受信しない場合に、パス１６１を介して、ＣＭ１４１にＣＭ１４０が実行するアクセス命令に応じた処理を停止させる制御を行う。
【００３１】
（１−４）アクセス制御装置１００は、第２のＣＭから、第１のＣＭが実行するアクセス命令に応じた処理を停止させる制御に対応する応答を受信した後に、第２のパスを介してアクセス命令を出力する。アクセス制御装置１００は、例えば、マルチパスドライバ１２０によって、ＣＭ１４１からＣＭ１４０が実行するアクセス命令に応じた処理を停止させたことを示す応答を受信すると、パス１６１を介してアクセス命令を出力する。
【００３２】
これによれば、アクセス制御装置１００は、ＨＢＡ１３０からアクセス命令を出力した後、ＨＢＡ１３０からアクセスに失敗したことが通知される前に、ＨＢＡ１３１からアクセス命令を出力させることができる。結果として、アクセス制御装置１００は、アクセス要求の要求元に応答を出力するまでにかかる時間を低減しやすくすることができる。
【００３３】
また、アクセス制御装置１００は、ＨＢＡ１３１からＣＭ１４１を制御してＣＭ１４０の処理を停止させることができ、ＨＢＡ１３０から直接ＣＭ１４０にキャンセルコマンドを出力することができない場合であっても、データ破壊を防止することができる。
【００３４】
これにより、アクセス制御装置１００は、ＯＳがキャンセルコマンドを出力するためのインターフェースに対応していない場合であっても、データ破壊を防ぎつつ、記憶装置１５０へのアクセスにかかる時間を増加しにくくすることができる。結果として、アクセス制御装置１００は、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間が比較的小さくなる傾向がある金融システムなどに適用することが好ましくなる。また、アクセス制御装置１００は、パス１６０に障害が発生し、パス１６０からキャンセルコマンドを出力することができない場合であっても、データ破壊を防ぎつつ、記憶装置１５０へのアクセスにかかる時間を増加しにくくすることができる。
【００３５】
ここでは、１つのサーバと、１つのストレージ装置１１０とが接続されている場合について説明したが、これに限らない。例えば、サーバは、１以上のストレージ装置１１０と接続されていてもよい。また、例えば、ストレージ装置１１０は、１以上のサーバと接続されていてもよい。
【００３６】
（ストレージシステム２００の一例）
次に、図２を用いて、図１に示したアクセス制御装置１００を適用した、ストレージシステム２００の一例について説明する。以下、図２に示す要素のうち、図１に示す要素と同様の要素には、図１と同じ符号を付する場合がある。
【００３７】
図２は、ストレージシステム２００の一例を示す説明図である。図２の例では、ストレージシステム２００は、アクセス制御装置１００と、ストレージ装置１１０と、ストレージ装置２１０とを含む。ストレージシステム２００において、アクセス制御装置１００と、ストレージ装置１１０とは、複数のパスによって接続される。また、ストレージシステム２００において、アクセス制御装置１００と、ストレージ装置２１０とは、複数のパスによって接続される。
【００３８】
アクセス制御装置１００では、アプリケーションソフト２２０と、ミラーソフト２３０と、マルチパスドライバ１２０と、マルチパスドライバ２４０などのプログラムが動作する。アクセス制御装置１００は、ＨＢＡ１３０と、ＨＢＡ１３１と、ＨＢＡ２５０と、ＨＢＡ２５１とを有する。ストレージ装置１１０は、ＣＭ１４０と、ＣＭ１４１と、記憶装置１５０とを有する。ストレージ装置２１０は、ＣＭ２６０と、ＣＭ２６１と、記憶装置２７０とを有する。
【００３９】
アプリケーションソフト２２０は、ミラーソフト２３０を介して、マルチパスドライバ１２０、または、マルチパスドライバ２４０の少なくともいずれかにアクセス要求を出力する。ミラーソフト２３０は、アプリケーションソフト２２０が出力するアクセス要求を、マルチパスドライバ１２０、または、マルチパスドライバ２４０の少なくともいずれかに出力する。
【００４０】
マルチパスドライバ１２０は、図１と同様に、ストレージ装置１１０が有する記憶装置１５０に対するアクセス要求を受け付け、ＨＢＡ１３０とＨＢＡ１３１とを制御し、ＨＢＡ１３０とＨＢＡ１３１とにアクセス命令を出力させることができる。マルチパスドライバ２４０は、ストレージ装置２１０が有する記憶装置２７０に対するアクセス要求を受け付け、ＨＢＡ２５０とＨＢＡ２５１とを制御し、ＨＢＡ２５０とＨＢＡ２５１とにアクセス命令を出力させることができる。
【００４１】
ＨＢＡ１３０は、ストレージ装置１１０のＣＭ１４０とパス１６０によって接続され、マルチパスドライバ１２０の制御にしたがってＣＭ１４０にアクセス命令を出力することにより、記憶装置１５０に対するアクセスをＣＭ１４０に実行させることができる。ＨＢＡ１３１は、ストレージ装置１１０のＣＭ１４１とパス１６１によって接続され、マルチパスドライバ１２０の制御にしたがってＣＭ１４１にアクセス命令を出力することにより、記憶装置１５０に対するアクセスをＣＭ１４１に実行させることができる。
【００４２】
ＨＢＡ２５０は、ストレージ装置２１０のＣＭ２６０とパス２８０によって接続され、マルチパスドライバ２４０の制御にしたがってＣＭ２６０にアクセス命令を出力することにより、記憶装置２７０に対するアクセスをＣＭ２６０に実行させることができる。ＨＢＡ２５１は、ストレージ装置２１０のＣＭ２６１とパス２８１によって接続され、マルチパスドライバ２４０の制御にしたがってＣＭ２６１にアクセス命令を出力することにより、記憶装置２７０に対するアクセスをＣＭ２６１に実行させることができる。
【００４３】
ＣＭ１４０は、アクセス制御装置１００のＨＢＡ１３０とパス１６０によって接続され、ＨＢＡ１３０からアクセス命令を受け付け、記憶装置１５０に対するアクセスを実行する。ＣＭ１４１は、アクセス制御装置１００のＨＢＡ１３１とパス１６１によって接続され、ＨＢＡ１３１からアクセス命令を受け付け、記憶装置１５０に対するアクセスを実行する。記憶装置１５０は、例えば、ディスクドライバである。記憶装置１５０は、例えば、ＳＳＤであってもよい。
【００４４】
ＣＭ２６０は、アクセス制御装置１００のＨＢＡ２５０とパス２８０によって接続され、ＨＢＡ２５０からアクセス命令を受け付け、記憶装置２７０に対するアクセスを実行する。ＣＭ２６１は、アクセス制御装置１００のＨＢＡ２５１とパス２８１によって接続され、ＨＢＡ２５１からアクセス命令を受け付け、記憶装置２７０に対するアクセスを実行する。記憶装置２７０は、例えば、ディスクドライバである。記憶装置２７０は、例えば、ＳＳＤであってもよい。
【００４５】
アクセス制御装置１００は、ミラーソフト２３０によって、アプリケーションソフト２２０が出力したアクセス要求を、マルチパスドライバ１２０とマルチパスドライバ２４０との少なくともいずれかに出力する。アクセス制御装置１００は、例えば、アプリケーションソフト２２０が出力したアクセス要求がリード要求であれば、マルチパスドライバ１２０とマルチパスドライバ２４０とのいずれかにリード要求を振り分ける。
【００４６】
一方で、アクセス制御装置１００は、例えば、アプリケーションソフト２２０が出力したアクセス要求がライト要求であれば、マルチパスドライバ１２０とマルチパスドライバ２４０とのいずれにもライト要求を出力する。アクセス制御装置１００は、マルチパスドライバ１２０によって、アクセス要求を受け付けた場合、記憶装置１５０に対するアクセスを制御する。アクセス制御装置１００は、マルチパスドライバ２４０によって、アクセス要求を受け付けた場合、記憶装置２７０に対するアクセスを制御する。
【００４７】
アクセス制御装置１００は、ミラーソフト２３０によって、マルチパスドライバ１２０またはマルチパスドライバ２４０に出力したアクセス要求に対する応答を、マルチパスドライバ１２０またはマルチパスドライバ２４０から受信する。そして、アクセス制御装置１００は、マルチパスドライバ１２０またはマルチパスドライバ２４０から受信した応答に基づいて、アプリケーションソフト２２０からのアクセス要求に対する応答を、アプリケーションソフト２２０に出力する。アクセス制御装置１００は、ミラーソフト２３０によって、マルチパスドライバ１２０またはマルチパスドライバ２４０から受信した応答に基づいて、ストレージ装置１１０またはストレージ装置２１０に障害が発生したと判断した場合にはミラーリングを解除する。
【００４８】
また、例えば、ミラーソフト２３０によって、マルチパスドライバ１２０にアクセス要求を出力してから、予め設定された待機時間が経過しても、マルチパスドライバ１２０からアクセス要求に対する応答を受信しない場合がある。待機時間は、例えば、マルチパスドライバ１２０が、一方のパスを利用したアクセス命令への応答がないと判断するまでの時間より長く、その後さらに他方のパスを利用したアクセス命令への応答もないと判断するまでの時間より短い時間が設定される。この場合、アクセス制御装置１００は、ミラーソフト２３０によって、マルチパスドライバ１２０に出力したアクセス要求に対するエラー応答がなくても、ストレージ装置１１０に障害が発生したと判断し、ミラーリングを解除してもよい。
【００４９】
アクセス制御装置１００は、アクセス要求がリード要求であった場合には、ミラーリングを解除した後、ミラーソフト２３０によって、リード要求をまだ出力していないマルチパスドライバ２４０に、リード要求を出力してもよい。アクセス制御装置１００は、アクセス要求がライト要求であった場合には、ミラーリングを解除した後、マルチパスドライバ２４０から受信した応答に基づいて、アプリケーションソフト２２０からのアクセス要求に対する応答を出力してもよい。ここでは、ミラーソフト２３０によって、マルチパスドライバ１２０にアクセス要求を出力した場合について説明したが、マルチパスドライバ２４０にアクセス要求を出力した場合も同様である。アクセス制御装置１００は、例えば、サーバである。
【００５０】
ストレージ装置１１０は、アクセス命令を受け付け、アクセス命令に応じて記憶装置１５０に対するアクセスを実行する。ストレージ装置１１０は、ＣＭ１４０によって、ＣＭ１４１が実行する処理を停止させることができる。ストレージ装置１１０は、例えば、ＣＭ１４０によって、ＣＭ１４１にキャンセルコマンドを出力することにより、ＣＭ１４１が実行する処理を停止させることができる。同様に、ストレージ装置１１０は、ＣＭ１４１によって、ＣＭ１４０が実行する処理を停止させることができる。
【００５１】
ストレージ装置２１０は、アクセス命令を受け付け、アクセス命令に応じて記憶装置２７０に対するアクセスを実行する。ストレージ装置２１０は、ＣＭ２６０によって、ＣＭ２６１が実行する処理を停止させることができる。ストレージ装置２１０は、例えば、ＣＭ２６０によって、ＣＭ２６１にキャンセルコマンドを出力することにより、ＣＭ２６１が実行する処理を停止させることができる。同様に、ストレージ装置２１０は、ＣＭ２６１によって、ＣＭ２６０が実行する処理を停止させることができる。
【００５２】
ここでは、アクセス制御装置１００でミラーソフト２３０が動作する場合について説明したが、これに限らない。例えば、アクセス制御装置１００でミラーソフト２３０が動作しない場合があってもよい。この場合、アプリケーションソフト２２０は、ミラーソフト２３０を介さずに、マルチパスドライバ１２０、または、マルチパスドライバ２４０にアクセス要求を出力する。
【００５３】
（ストレージシステム２００の他の例）
次に、図３を用いて、図１に示したアクセス制御装置１００を適用した、ストレージシステム２００の他の例について説明する。以下、図３に示す要素のうち、図１に示す要素と同様の要素には、図１と同じ符号を付する場合がある。
【００５４】
図３は、ストレージシステム２００の他の例を示す説明図である。図３の例では、ストレージシステム２００は、アクセス制御装置１００と、サーバ３１０と、ストレージ装置３３０とを含む。ストレージシステム２００において、アクセス制御装置１００と、ストレージ装置３３０とは、複数のパスによって接続される。また、ストレージシステム２００において、サーバ３１０と、ストレージ装置３３０とは、パスによって接続される。
【００５５】
アクセス制御装置１００は、マルチパスドライバ１２０を実行する。アクセス制御装置１００は、ＨＢＡ１３０と、ＨＢＡ１３１とを有する。サーバ３１０は、ＨＢＡ３２０を有する。ストレージ装置３３０は、ＣＭ３４０と、ＣＭ３４１と、ＣＭ３４２と、ＣＭ３４３と、記憶装置３５０とを有する。
【００５６】
マルチパスドライバ１２０は、ストレージ装置３３０が有する記憶装置３５０に対するアクセス要求を受け付け、ＨＢＡ１３０とＨＢＡ１３１とを制御し、ＨＢＡ１３０とＨＢＡ１３１とにアクセス命令を出力させることができる。
【００５７】
ＨＢＡ１３０は、ストレージ装置３３０のＣＭ３４０とパス３６０によって接続され、マルチパスドライバ１２０の制御にしたがってＣＭ３４０にアクセス命令を出力することにより、記憶装置３５０に対するアクセスをＣＭ３４０に実行させることができる。ＨＢＡ１３０は、「ＷＷＮ：Ａ」が付されている。
【００５８】
ＨＢＡ１３１は、ストレージ装置３３０のＣＭ３４１とパス３６１によって接続され、マルチパスドライバ１２０の制御にしたがってＣＭ３４１にアクセス命令を出力することにより、記憶装置３５０に対するアクセスをＣＭ３４１に実行させることができる。ＨＢＡ１３１は、「ＷＷＮ：Ｂ」が付されている。
【００５９】
ＨＢＡ３２０は、ストレージ装置３３０のＣＭ３４０とパス３７０によって接続され、ＣＭ３４０にアクセス命令を出力することにより、記憶装置３５０に対するアクセスをＣＭ３４０に実行させることができる。ＨＢＡ３２０は、「ＷＷＮ：Ｃ」が付されている。
【００６０】
ＣＭ３４０は、アクセス制御装置１００のＨＢＡ１３０とパス３６０によって接続され、ＨＢＡ１３０からアクセス命令を受け付け、記憶装置３５０に対するアクセスを実行する。ＣＭ３４０は、サーバ３１０のＨＢＡ３２０とパス３７０によって接続され、ＨＢＡ３２０からアクセス命令を受け付け、記憶装置３５０に対するアクセスを実行する。ＣＭ３４１は、アクセス制御装置１００のＨＢＡ１３１とパス３６１によって接続され、ＨＢＡ１３１からアクセス命令を受け付け、記憶装置３５０に対するアクセスを実行する。
【００６１】
ＣＭ３４２は、アクセス命令を受け付けた場合に、記憶装置３５０に対するアクセスを実行する。ＣＭ３４３は、アクセス命令を受け付けた場合に、記憶装置３５０に対するアクセスを実行する。記憶装置３５０は、例えば、ディスクドライバである。記憶装置３５０は、例えば、ＳＳＤであってもよい。
【００６２】
アクセス制御装置１００は、マルチパスドライバ１２０によって、アクセス要求を受け付けた場合、記憶装置３５０に対するアクセスを制御する。アクセス制御装置１００は、例えば、サーバである。サーバ３１０は、アクセス要求を受け付けた場合、記憶装置３５０に対するアクセスを制御する。
【００６３】
ストレージ装置３３０は、ＨＢＡ１３０またはＨＢＡ１３１からアクセス命令を受け付け、アクセス命令に応じて記憶装置３５０に対するアクセスを実行する。ストレージ装置３３０は、ＨＢＡ３２０からアクセス命令を受け付け、アクセス命令に応じて記憶装置３５０に対するアクセスを実行する。
【００６４】
ストレージ装置３３０は、ＣＭ３４０によって、ＣＭ３４１、ＣＭ３４２、または、ＣＭ３４３が実行する処理を停止させることができる。ストレージ装置３３０は、例えば、ＣＭ３４０によって、ＣＭ３４１にキャンセルコマンドを出力することにより、ＣＭ３４１が実行する処理を停止させることができる。
【００６５】
同様に、ストレージ装置３３０は、ＣＭ３４１によって、ＣＭ３４０、ＣＭ３４２、または、ＣＭ３４３が実行する処理を停止させることができる。同様に、ストレージ装置３３０は、ＣＭ３４２によって、ＣＭ３４０、ＣＭ３４１、または、ＣＭ３４３が実行する処理を停止させることができる。同様に、ストレージ装置３３０は、ＣＭ３４３によって、ＣＭ３４０、ＣＭ３４１、または、ＣＭ３４２が実行する処理を停止させることができる。
【００６６】
（アクセス制御装置１００のハードウェア構成例）
次に、図４を用いて、アクセス制御装置１００のハードウェア構成例について説明する。
【００６７】
図４は、アクセス制御装置１００のハードウェア構成例を示すブロック図である。図４において、アクセス制御装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、メモリ４０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０３と、ディスクドライブ４０４と、ディスク４０５と、記憶媒体Ｉ／Ｆ４０６と、ストレージＩ／Ｆ４０７とを有する。また、各構成部は、バス４００によってそれぞれ接続される。
【００６８】
ここで、ＣＰＵ４０１は、アクセス制御装置１００の全体の制御を司る。メモリ４０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ４０１のワークエリアとして使用される。メモリ４０２に記憶されるプログラムは、ＣＰＵ４０１にロードされることで、コーディングされている処理をＣＰＵ４０１に実行させる。
【００６９】
ネットワークＩ／Ｆ４０３は、通信回線を通じてネットワークに接続され、ネットワークを介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ４０３は、ネットワークと内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ４０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００７０】
ディスクドライブ４０４は、ＣＰＵ４０１の制御に従ってディスク４０５に対するデータのリード／ライトを制御する。ディスクドライブ４０４は、例えば、磁気ディスクドライブである。ディスク４０５は、ディスクドライブ４０４の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク４０５は、例えば、磁気ディスク、光ディスクなどである。
【００７１】
記憶媒体Ｉ／Ｆ４０６は、外部の記憶媒体に接続され、記憶媒体と内部のインターフェースを司り、記憶媒体からのデータの入出力を制御する。記憶媒体Ｉ／Ｆ４０６は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コネクタである。記憶媒体は、例えば、半導体メモリである。ストレージＩ／Ｆ４０７は、ストレージ装置１１０に接続され、ストレージ装置１１０と内部のインターフェースを司り、ストレージ装置１１０からのデータの入出力を制御する。ストレージＩ／Ｆ４０７は、例えば、ＣＭ１４０やＣＭ１４１である。
【００７２】
アクセス制御装置１００は、上述した構成部のほか、例えば、ＳＳＤ、半導体メモリ、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、アクセス制御装置１００は、ディスクドライブ４０４およびディスク４０５の代わりに、ＳＳＤおよび半導体メモリなどを有していてもよい。
【００７３】
（接続情報テーブル５００の記憶内容）
次に、図５を用いて、アクセス制御装置１００が記憶する接続情報テーブル５００の記憶内容の一例について説明する。接続情報テーブル５００は、例えば、図４に示したメモリ４０２、ディスク４０５などの記憶領域によって実現される。
【００７４】
図５は、接続情報テーブル５００の記憶内容の一例を示す説明図である。図５に示すように、接続情報テーブル５００は、ＣＭ情報と、ＨＢＡ情報とのフィールドを有する。接続情報テーブル５００は、ＨＢＡごとに各フィールドに情報を設定することにより、接続情報がレコードとして記憶される。
【００７５】
ＣＭ情報のフィールドには、アクセス制御装置１００が有するＨＢＡと接続されるＣＭを識別する情報が設定される。ＨＢＡ情報のフィールドには、アクセス制御装置１００が有するＨＢＡを識別する情報が設定される。これにより、接続情報テーブル５００は、アクセス制御装置１００とストレージ装置１１０との接続関係を示す接続情報を記憶することができる。
【００７６】
（アクセス制御装置１００の機能的構成例）
次に、図６を用いて、アクセス制御装置１００の機能的構成例について説明する。図６は、アクセス制御装置１００の機能的構成例を示すブロック図である。アクセス制御装置１００は、受付部６０１と、第１の出力部６０２と、停止指示部６０３と、第２の出力部６０４と、応答部６０５とを含む。
【００７７】
受付部６０１〜応答部６０５は、制御部となる機能である。受付部６０１〜応答部６０５は、具体的には、例えば、図４に示したメモリ４０２、ディスク４０５などの記憶装置１５０に記憶されたプログラムをＣＰＵ４０１に実行させることにより、または、各種Ｉ／Ｆ４０３，４０６，４０７により、その機能を実現する。各機能部の処理結果は、例えば、メモリ４０２、ディスク４０５などの記憶装置１５０に記憶される。
【００７８】
受付部６０１は、ストレージ装置１１０が有する記憶装置１５０に対するアクセス要求を受け付ける。受付部６０１は、例えば、アクセス制御装置１００が実行するアプリケーションソフト２２０が出力したアクセス要求を受け付ける。受付部６０１は、例えば、ネットワークＩ／Ｆ４０３を介して、他のコンピュータからアクセス要求を受け付けてもよい。これにより、受付部６０１は、記憶装置１５０に対するアクセスを制御開始し、第１の出力部６０２にアクセス命令を出力させることができる。
【００７９】
第１の出力部６０２は、受付部６０１がアクセス要求を受け付けると、第１のパスを介して、記憶装置１５０に対するアクセス命令を出力する。第１のパスは、ストレージ装置１１０が有する複数の制御装置のうちの第１の制御装置とアクセス制御装置１００とを接続するパスである。第１のパスは、例えば、図２に示したパス１６０である。制御装置は、ストレージ装置１１０において記憶装置１５０に対するアクセスを制御する装置である。制御装置は、例えば、ＣＭである。制御装置は、具体的には、図２に示したＣＭ１４０やＣＭ１４１などである。制御装置は、具体的には、図３に示したＣＭ３４０、ＣＭ３４１、ＣＭ３４２、ＣＭ３４３などであってもよい。
【００８０】
第１の出力部６０２は、例えば、ＨＢＡ１３０とＣＭ１４０とを接続するパス１６０を介して、ＨＢＡ１３０からＣＭ１４０へと記憶装置１５０に対するアクセス命令を出力させる。これにより、第１の出力部６０２は、制御装置に、記憶装置１５０に対するアクセスを実行させることができる。
【００８１】
第１の出力部６０２は、例えば、アクセス命令がダイレクトメモリアクセスを用いて記憶装置１５０にライトデータを書き込む命令であれば、パス１６０を介してアクセス命令を出力する前にライトデータを複製しておく。これにより、第２の出力部６０４は、第１の出力部６０２と同じアクセス命令を出力するときに、ダイレクトメモリアクセスによってライトデータが削除されていても、複製しておいたライトデータを用いることができる。
【００８２】
停止指示部６０３は、第１の出力部６０２がアクセス命令を出力した後、所定の時間が経過するまでに、第１の制御装置に対するアクセス命令に対する応答を受信したか否かを判定する。停止指示部６０３は、所定の時間が経過しても応答を受信しない場合に、第２のパスを介して、第２の制御装置に、第１の制御装置が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させる制御を行う。
【００８３】
ここで、停止指示部６０３は、少なくとも、第１の制御装置が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させればよい。停止指示部６０３は、第１の制御装置自体を停止させてもよいし、第１の制御装置の第１のパスにかかる処理を指定して停止させてもよい。第２のパスは、第２の制御装置とアクセス制御装置１００とを接続するパスである。第２のパスは、例えば、図２に示したパス１６１である。第２の制御装置は、複数の制御装置のうちの第１の制御装置とは異なる装置である。
【００８４】
停止指示部６０３は、所定の時間として、第１の制御装置による記憶装置１５０へのアクセスが失敗したと判断する時間以下の時間を用いることが好ましい。停止指示部６０３は、例えば、所定の時間として、ＨＢＡ１３０やＨＢＡ１３１がアクセス命令を出力した際にタイムアウトと判断する時間以下の時間を設定する。
【００８５】
停止指示部６０３は、例えば、第２のパスを介して停止命令を第２の制御装置に出力することにより、第２の制御装置に第１の制御装置が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させる。停止指示部６０３は、具体的には、ＨＢＡ１３１とＣＭ１４１とを接続するパス１６１を介して、ＣＭ１４１に停止指示を出力する。停止指示は、例えば、サーバのＯＳに依存せずに出力することができるＳＣＳＩコマンドとして実装される。停止指示は、後述するアクセス切替コマンドである。
【００８６】
これにより、停止指示部６０３は、ＣＭ１４１に、ＣＭ１４０が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させることができる。結果として、停止指示部６０３は、ＣＭ１４０の記憶装置１５０に対するアクセスと、ＣＭ１４１の記憶装置１５０に対するアクセスとが重複しないようにして、データ破壊を防止することができる。具体的には、停止指示部６０３は、ＣＭ１４１が記憶装置１５０に対するアクセスを複数実行した後に、ＣＭ１４１が既に実行済みのアクセスをＣＭ１４０が再び実行してしまい、データ破壊が発生することを防止することができる。
【００８７】
停止指示部６０３は、例えば、第２のパスを介して第１の制御装置を示す情報を含む停止命令を第２の制御装置に出力することにより、第２の制御装置に第１の制御装置が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させてもよい。停止指示部６０３は、具体的には、接続情報テーブル５００を参照してＨＢＡ１３０に接続されたＣＭ３４０を識別する情報を取得する。そして、停止指示部６０３は、ＨＢＡ１３１とＣＭ３４１とを接続するパス３６１を介して、ＣＭ３４１に、ＣＭ３４０を識別する情報を含んだ停止指示を出力する。
【００８８】
これにより、停止指示部６０３は、ＣＭ３４１が、ＣＭ３４０、ＣＭ３４２、およびＣＭ３４３のいずれを停止させればよいかを判定可能にすることができる。そして、停止指示部６０３は、ＣＭ３４１にＣＭ３４０を停止させることにより、ＣＭ３４０が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させることができる。
【００８９】
停止指示部６０３は、例えば、第２のパスを介して第１のパスを示す情報を含む停止命令を第２の制御装置に出力することにより、第２の制御装置に第１の制御装置における第１のパスに関する処理を停止させる。停止指示部６０３は、具体的には、接続情報テーブル５００を参照してＨＢＡ１３０に接続されたパス３６０を識別する情報を取得する。パスを識別する情報は、例えば、ＨＢＡ１３０に付されたＷＷＮ：Ａなどである。そして、停止指示部６０３は、ＨＢＡ１３１とＣＭ３４１とを接続するパス３６１を介して、ＣＭ３４１に、ＨＢＡ１３０とＣＭ３４０とを接続するパス３６０を識別する情報を含んだ停止指示を出力する。
【００９０】
これにより、停止指示部６０３は、ＣＭ３４１が、ＣＭ３４０に接続された複数のパスのいずれを介して実行される処理を停止させればよいかを判定可能にすることができる。そして、停止指示部６０３は、ＣＭ３４１にＣＭ３４０がパス３６１を介して実行される処理を停止させることにより、ＣＭ３４０が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させることができる。一方で、停止指示部６０３は、ＣＭ３４０が実行する、サーバ３１０が出力したアクセス命令に応じた処理については、停止させないようにすることができる。
【００９１】
第２の出力部６０４は、第２の制御装置から、第１の制御装置が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させる制御への応答を受信した後に、第２のパスを介してアクセス命令を出力する。第２の出力部６０４は、例えば、ＣＭ１４１から、ＣＭ１４０が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させたことを示す通知を受け付けた後に、パス１６１を介してＣＭ１４１にアクセス命令を出力する。これにより、第２の出力部６０４は、データ破壊を防止しつつ、ＣＭ１４１にアクセスを実行させることができる。
【００９２】
第２の出力部６０４は、第２の制御装置からアクセス命令に応じた処理を停止させる制御への応答を受信したことに応じて、複製しておいたライトデータに基づいて第２のパスを介してアクセス命令を出力してもよい。第２の出力部６０４は、例えば、ＣＭ１４１から、ＣＭ１４０が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させたことを示す通知を受け付ける。第２の出力部６０４は、通知を受け付けたことに応じて、パス１６１を介して、複製しておいたライトデータに基づいてＣＭ１４１にアクセス命令を出力する。これにより、第２の出力部６０４は、第１の出力部６０２が出力したアクセス命令への応答を受信する前であっても、ＣＭ１４１にアクセス命令を実行させることができる。そして、第２の出力部６０４は、ダイレクトメモリアクセスによって複製元になったライトデータが削除されていても、複製しておいたライトデータを用いてＣＭ１４１にアクセス命令を実行させることができる。
【００９３】
第２の出力部６０４は、第２の制御装置からアクセス命令に応じた処理を停止させる制御への応答を受信し、かつ、第１の制御装置に対するアクセス命令に対する応答を受信した後に、第２のパスを介してアクセス命令を出力する。第１の制御装置に対するアクセス命令に対する応答は、例えば、第１の制御装置がアクセス命令の処理を停止されたことに応じて出力したエラー応答である。第１の制御装置に対するアクセス命令に対する応答は、例えば、第１の制御装置へのアクセス命令の出力を制御するＨＢＡが、第１の制御装置からの応答がないと判断したときに出力したエラー応答であってもよい。ま第１の制御装置に対するアクセス命令に対する応答は、例えば、第１の制御装置がアクセス命令の処理を停止される前に出力済みであった正常応答またはエラー応答であってもよい。
【００９４】
第２の出力部６０４は、例えば、ＣＭ１４１から、ＣＭ１４０が実行する、第１の出力部６０２が出力したアクセス命令に応じた処理を停止させたことを示す通知を受け付ける。第２の出力部６０４は、通知を受け付け、かつ、ＣＭ１４０に対するアクセス命令に対するエラー応答を受け付けた後に、パス１６１を介してＣＭ１４１にアクセス命令を出力する。これにより、第２の出力部６０４は、ライトデータを複製しておかなくても、アクセス命令を出力することができる。
【００９５】
応答部６０５は、第１の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。
【００９６】
応答部６０５は、第１の制御装置からエラー応答を受信した場合であって、第２の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令へのエラー応答を受信し、ＣＭ１４１からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。
【００９７】
応答部６０５は、第１の制御装置から応答がないと判断した場合であって、第２の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令への応答がないと判断し、ＣＭ１４１からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。ここで、応答部６０５は、例えば、ＣＭ１４０にアクセス命令を出力してから予め設定された待機時間が経過したことに応じて、ＨＢＡ１３０がＣＭ１４０から応答がないと判断して出力したエラー応答に基づき、ＣＭ１４０から応答がないと判断する。
【００９８】
応答部６０５は、第１の制御装置に対するアクセス命令に対する応答を受信する前に、第２の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力してもよい。応答部６０５は、例えば、ＣＭ１４０からアクセス命令への応答を受信する前に、ＣＭ１４１からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。
【００９９】
応答部６０５は、第１の制御装置からエラー応答を受信した場合であって、第２の制御装置からエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令へのエラー応答を受信し、ＣＭ１４１からアクセス命令へのエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。
【０１００】
応答部６０５は、第１の制御装置からエラー応答を受信した場合であって、第２の制御装置から応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令へのエラー応答を受信し、ＣＭ１４１からアクセス命令への応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。ここで、応答部６０５は、例えば、ＣＭ１４１にアクセス命令を出力してから予め設定された待機時間が経過したことに応じて、ＨＢＡ１３１がＣＭ１４１から応答がないと判断して出力したエラー応答に基づき、ＣＭ１４１から応答がないと判断する。
【０１０１】
応答部６０５は、第１の制御装置から応答がないと判断した場合であって、第２の制御装置からエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令への応答がないと判断し、ＣＭ１４１からアクセス命令へのエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。
【０１０２】
応答部６０５は、第１の制御装置から応答がないと判断した場合であって、第２の制御装置から応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。応答部６０５は、例えば、ＣＭ１４０からアクセス命令への応答がないと判断し、ＣＭ１４１からアクセス命令への応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。これにより、応答部６０５は、アクセス要求の要求元に応答するまでにかかる時間を増加しにくくすることができる。
【０１０３】
以下の説明では、図２に示したストレージシステム２００において、ストレージ装置１１０に対応するマルチパスドライバ１２０によって実現されるアクセス制御装置１００の動作例について説明する。マルチパスドライバ２４０によって実現されるアクセス制御装置１００の動作例は、マルチパスドライバ１２０によって実現されるアクセス制御装置１００の動作例と同様であるため、説明を省略する。
【０１０４】
（アクセス制御装置１００の動作例１）
まず、アクセス制御装置１００の動作例１について説明する。動作例１は、ＨＢＡ１３０からアクセス命令を出力した後、アクセス命令への応答を受信する前であってもＨＢＡ１３１からアクセス命令を出力することが可能である場合の一例である。
【０１０５】
これによれば、アクセス制御装置１００は、ＨＢＡ１３０からアクセス命令を出力した後、ＨＢＡ１３１からアクセス命令を出力するまでにかかる時間を小さくし、記憶装置１５０へのアクセスにかかる時間を増加しにくくすることができる。
【０１０６】
（動作例１における複数の動作パターンの一例）
まず、図７を用いて、動作例１における複数の動作パターンの一例について説明する。
【０１０７】
図７は、動作例１における複数の動作パターンの一例を示す説明図である。上述したように、アクセス制御装置１００は、記憶装置１５０に対するアクセス要求を受け付けると、ＨＢＡ１３０とＣＭ１４０とを接続するパス１６０を介して、記憶装置１５０に対するアクセス命令を出力する。
【０１０８】
その後、アクセス制御装置１００は、アクセス命令を出力してから所定の時間が経過してもＣＭ１４０から応答を受信しない場合、パス１６１を介して、ＣＭ１４１にＣＭ１４０が実行するアクセス命令に応じた処理を停止させるアクセス切替コマンドを出力する。アクセス切替コマンドは、上述した停止指示に対応し、サーバのＯＳに依存せずに出力することができるＳＣＳＩコマンドとして実装される。
【０１０９】
そして、アクセス制御装置１００は、ＣＭ１４０が実行するアクセス命令に応じた処理が停止されると、ＨＢＡ１３１とＣＭ１４１とを接続するパス１６１を介してアクセス命令を出力し、ＣＭ１４１からアクセス命令に対する応答を受信する。アクセス命令は、例えば、アクセス切替コマンドに含まれてもよい。
【０１１０】
ここで、アクセス制御装置１００の動作パターンは、パス１６０を介して受信する応答の種類と、パス１６１を介して受信する応答の種類と、パス１６０とパス１６１とから応答を受信する順番とに応じて、異なるパターンになる。そこで、図７に示す表７００を用いて、動作例１における第１の動作パターン〜第９の動作パターンについて説明する。
【０１１１】
第１の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介して正常応答を受信し、かつ、パス１６１を介して正常応答を受信した場合における動作パターンである。第１の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。
【０１１２】
第２の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介してエラー応答を受信し、かつ、パス１６１を介して正常応答を受信した場合における動作パターンである。第２の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。
【０１１３】
第３の動作パターンは、アクセス制御装置１００が、パス１６０を介して応答がないと判断し、かつ、パス１６１を介して正常応答を受信した場合における動作パターンである。第３の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。
【０１１４】
第４の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介して正常応答を受信し、かつ、パス１６１を介してエラー応答を受信した場合における動作パターンである。第４の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。
【０１１５】
第５の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介してエラー応答を受信し、かつ、パス１６１を介してエラー応答を受信した場合における動作パターンである。第５の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。
【０１１６】
第６の動作パターンは、アクセス制御装置１００が、パス１６０を介して応答がないと判断し、かつ、パス１６１を介してエラー応答を受信した場合における動作パターンである。第６の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。
【０１１７】
第７の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介して正常応答を受信し、かつ、パス１６１を介して応答がないと判断した場合における動作パターンである。第７の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。第７の動作パターンでは、アクセス制御装置１００は、マルチパスドライバ１２０によってアクセス要求の要求元に正常応答を出力する前に、ミラーソフト２３０によってミラーリングを解除する。具体的には、ミラーソフト２３０は、上述した待機時間が経過したため、ミラーリングを解除する。
【０１１８】
第８の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介してエラー応答を受信し、かつ、パス１６１を介して応答がないと判断した場合における動作パターンである。第８の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。また、第８の動作パターンでは、アクセス制御装置１００は、マルチパスドライバ１２０によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト２３０によってミラーリングを解除する。具体的には、ミラーソフト２３０は、上述した待機時間が経過したため、ミラーリングを解除する。
【０１１９】
第９の動作パターンは、アクセス制御装置１００が、パス１６０を介して応答がないと判断し、かつ、パス１６１を介して応答がないと判断した場合における動作パターンである。第９の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。また、第９の動作パターンでは、アクセス制御装置１００は、マルチパスドライバ１２０によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト２３０によってミラーリングを解除する。具体的には、ミラーソフト２３０は、上述した待機時間が経過したため、ミラーリングを解除する。
【０１２０】
（動作例１における第１の動作パターンの具体例）
次に、図８を用いて、図７に示した動作例１における第１の動作パターンの具体例について説明する。
【０１２１】
図８は、動作例１における第１の動作パターンの具体例を示す説明図である。図８の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１２２】
（８−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１２３】
（８−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信するが、所定の時間が経過しておりパス１６０やＣＭ１４０が故障している可能性があるため、パス１６０をオフラインに設定してもよい。
【０１２４】
これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。また、アクセス制御装置１００は、次回のアクセス命令からはパス１６１を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
【０１２５】
（８−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１２６】
（８−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１２７】
（８−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対する正常応答を受信し、ＣＭ１４１からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０１２８】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１２９】
ここでは、アクセス制御装置１００が、パス１６１を介してＣＭ１４１にアクセス命令を出力する場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力してもよい。
【０１３０】
ここでは、アクセス制御装置１００が、パス１６０をオフラインに設定する場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、パス１６０をオフラインに設定せずに、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力してもよい。この場合、アクセス制御装置１００は、（８−３）〜（８−５）の動作を行わなくてもよい。
【０１３１】
（動作例１における第２の動作パターンの具体例）
次に、図９を用いて、図７に示した動作例１における第２の動作パターンの具体例について説明する。
【０１３２】
図９は、動作例１における第２の動作パターンの具体例を示す説明図である。図９の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１３３】
（９−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１３４】
（９−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信しているため、パス１６０をオフラインに設定してもよい。
【０１３５】
これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。また、アクセス制御装置１００は、次回のアクセス命令からはパス１６１を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
【０１３６】
（９−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１３７】
（９−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１３８】
（９−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、ＣＭ１４１からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０１３９】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１４０】
（動作例１における第３の動作パターンの具体例）
次に、図１０を用いて、図７に示した動作例１における第３の動作パターンの具体例について説明する。
【０１４１】
図１０は、動作例１における第３の動作パターンの具体例を示す説明図である。図１０の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１４２】
（１０−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス要求に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１４３】
（１０−２）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。また、ＣＭ１４１は、ＣＭ１４０が故障している場合、ＣＭ１４０の処理はすでに停止しているため、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信してもよい。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１４４】
（１０−３）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１４５】
（１０−４）アクセス制御装置１００は、パス１６０を介してＣＭ１４０から、ＣＭ１４１によってＣＭ１４０の処理が停止させられたことによるエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０またはパス１６０が故障している場合は、パス１６０を介してＣＭ１４０から応答がないため、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信する。ここで、アクセス制御装置１００は、パス１６０をオフラインに設定してもよい。
【０１４６】
これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。また、アクセス制御装置１００は、次回のアクセス命令からはパス１６１を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
【０１４７】
（１０−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、ＣＭ１４１からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０１４８】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１４９】
ここでは、アクセス制御装置１００が、（１０−３）の動作の後に、（１０−４）の動作を行う場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、（１０−４）の動作の後に、（１０−３）の動作を行う場合があってもよい。
【０１５０】
（動作例１における第４の動作パターンの具体例）
次に、図１１を用いて、図７に示した動作例１における第４の動作パターンの具体例について説明する。
【０１５１】
図１１は、動作例１における第４の動作パターンの具体例を示す説明図である。図１１の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１５２】
（１１−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１５３】
（１１−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信するが、所定の時間が経過しておりパス１６０やＣＭ１４０が故障している可能性があるため、パス１６０をオフラインに設定してもよい。これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。
【０１５４】
（１１−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１５５】
（１１−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１５６】
（１１−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０１５７】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１５８】
ここでは、アクセス制御装置１００が、パス１６１を介してＣＭ１４１にアクセス命令を出力する場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力してもよい。
【０１５９】
（動作例１における第５の動作パターンの具体例）
次に、図１２を用いて、図７に示した動作例１における第５の動作パターンの具体例について説明する。
【０１６０】
図１２は、動作例１における第５の動作パターンの具体例を示す説明図である。図１２の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１６１】
（１２−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１６２】
（１２−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信する。
【０１６３】
（１２−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１６４】
（１２−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１６５】
（１２−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＣＭ１４１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０１６６】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１６７】
（動作例１における第６の動作パターンの具体例）
次に、図１３を用いて、図７に示した動作例１における第６の動作パターンの具体例について説明する。
【０１６８】
図１３は、動作例１における第６の動作パターンの具体例を示す説明図である。図１３の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１６９】
（１３−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１７０】
（１３−２）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。また、ＣＭ１４１は、ＣＭ１４０が故障している場合、ＣＭ１４０の処理はすでに停止しているため、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信してもよい。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１７１】
（１３−３）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１７２】
（１３−４）アクセス制御装置１００は、パス１６０を介してＣＭ１４０から、ＣＭ１４１によってＣＭ１４０の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０またはパス１６０が故障している場合は、パス１６０を介してＣＭ１４０から応答がないため、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信する。
【０１７３】
（１３−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＣＭ１４１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０１７４】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１７５】
ここでは、アクセス制御装置１００が、（１３−３）の動作の後に、（１３−４）の動作を行う場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、（１３−４）の動作の後に、（１３−３）の動作を行う場合があってもよい。
【０１７６】
（動作例１における第７の動作パターンの具体例）
次に、図１４を用いて、図７に示した動作例１における第７の動作パターンの具体例について説明する。
【０１７７】
図１４は、動作例１における第７の動作パターンの具体例を示す説明図である。図１４の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１７８】
（１４−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１７９】
（１４−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信するが、所定の時間が経過しておりパス１６０やＣＭ１４０が故障している可能性があるため、パス１６０をオフラインに設定してもよい。これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。
【０１８０】
（１４−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１８１】
（１４−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１８２】
（１４−５）アクセス制御装置１００は、ＨＢＡ１３１がパス１６１を介してＣＭ１４１から応答がないと判断したため、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信しているため、パス１６１をオフラインに設定してもよい。これにより、アクセス制御装置１００は、故障の可能性があるパス１６１やＣＭ１４１を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。
【０１８３】
（１４−６）アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０１８４】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１８５】
ここでは、アクセス制御装置１００が、パス１６１を介してＣＭ１４１にアクセス命令を出力する場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力してもよい。この場合、アクセス制御装置１００は、ミラーソフト２３０によってミラーリングを解除されない。
【０１８６】
ここでは、アクセス制御装置１００が、パス１６０をオフラインに設定する場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、パス１６０をオフラインに設定せずに、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力してもよい。この場合、アクセス制御装置１００は、（１４−３）〜（１４−５）の動作を行わなくてもよい。
【０１８７】
（動作例１における第８の動作パターンの具体例）
次に、図１５を用いて、図７に示した動作例１における第８の動作パターンの具体例について説明する。
【０１８８】
図１５は、動作例１における第８の動作パターンの具体例を示す説明図である。図１５の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１８９】
（１５−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１９０】
（１５−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信する。
【０１９１】
（１５−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０１９２】
（１５−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０１９３】
（１５−５）アクセス制御装置１００は、ＨＢＡ１３１がパス１６１を介してＣＭ１４１から応答がないと判断したため、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信しているため、パス１６１をオフラインに設定してもよい。これにより、アクセス制御装置１００は、故障の可能性があるパス１６１やＣＭ１４１を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。
【０１９４】
（１５−６）アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０１９５】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０１９６】
（動作例１における第９の動作パターンの具体例）
次に、図１６を用いて、図７に示した動作例１における第９の動作パターンの具体例について説明する。
【０１９７】
図１６は、動作例１における第９の動作パターンの具体例を示す説明図である。図１６の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０１９８】
（１６−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０１９９】
（１６−２）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。また、ＣＭ１４１は、ＣＭ１４０が故障している場合、ＣＭ１４０の処理はすでに停止しているため、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信してもよい。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２００】
（１６−３）アクセス制御装置１００は、ＣＭ１４０の処理が停止したため、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信したか否かにかかわらず、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２０１】
（１６−４）アクセス制御装置１００は、パス１６０を介してＣＭ１４０から、ＣＭ１４１によってＣＭ１４０の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０またはパス１６０が故障している場合は、パス１６０を介してＣＭ１４０から応答がないため、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信する。
【０２０２】
（１６−５）アクセス制御装置１００は、ＨＢＡ１３１がパス１６１を介してＣＭ１４１から応答がないと判断したため、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対するエラー応答を受信しているため、パス１６１をオフラインに設定してもよい。これにより、アクセス制御装置１００は、故障の可能性があるパス１６１やＣＭ１４１を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。
【０２０３】
（１６−６）アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０２０４】
これにより、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス１６１を介してＣＭ１４１にアクセス命令を出力することができる。このため、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０２０５】
ここでは、アクセス制御装置１００が、（１６−３）の動作の後に、（１６−４）の動作を行う場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、（１６−４）の動作の後に、（１６−３）の動作を行う場合があってもよい。
【０２０６】
（動作例１にかかる初期化処理手順の一例）
次に、図１７を用いて、動作例１にかかる初期化処理手順の一例について説明する。
【０２０７】
図１７は、動作例１にかかる初期化処理手順の一例を示すフローチャートである。図１７において、アクセス制御装置１００は、キャンセルコマンドを試行する（ステップＳ１７０１）。次に、アクセス制御装置１００は、キャンセルコマンドへの正常応答があったか否かを判定する（ステップＳ１７０２）。ここで、キャンセルコマンドへの正常応答がない場合（ステップＳ１７０２：Ｎｏ）、アクセス制御装置１００は、第２世代サポートフラグをオフに設定し（ステップＳ１７０３）、初期化処理を終了する。
【０２０８】
一方で、キャンセルコマンドへの正常応答があった場合（ステップＳ１７０２：Ｙｅｓ）、アクセス制御装置１００は、第２世代サポートフラグをオンに設定し（ステップＳ１７０４）、初期化処理を終了する。
【０２０９】
（動作例１にかかるアクセス処理手順の一例）
次に、図１８および図１９を用いて、動作例１にかかるアクセス処理手順の一例について説明する。
【０２１０】
図１８および図１９は、動作例１にかかるアクセス処理手順の一例を示すフローチャートである。図１８において、アクセス制御装置１００は、アクセス要求を受け付ける（ステップＳ１８０１）。アクセス制御装置１００は、１パス目にアクセス命令を出力する（ステップＳ１８０２）。アクセス制御装置１００は、１パス目にアクセス命令を出力してから経過した時間を計測する（ステップＳ１８０３）。
【０２１１】
アクセス制御装置１００は、１パス目にアクセス命令を出力してから所定の時間が経過する前に１パス目からアクセス命令への応答があったか否かを判定する（ステップＳ１８０４）。ここで、１パス目からアクセス命令への応答があった場合（ステップＳ１８０４：Ｙｅｓ）、アクセス制御装置１００は、１パス目のアクセス命令への応答が、正常応答であるか否かを判定する（ステップＳ１８０５）。ここで、正常応答である場合（ステップＳ１８０５：Ｙｅｓ）、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力し（ステップＳ１８０６）、アクセス処理を終了する。
【０２１２】
一方で、正常応答ではない場合（ステップＳ１８０５：Ｎｏ）、アクセス制御装置１００は、２パス目にアクセス命令を出力する（ステップＳ１８０７）。次に、アクセス制御装置１００は、２パス目からアクセス命令への正常応答があったか否かを判定する（ステップＳ１８０８）。ここで、２パス目からアクセス命令への正常応答があった場合（ステップＳ１８０８：Ｙｅｓ）、アクセス制御装置１００は、ステップＳ１８０６の処理に移行する。
【０２１３】
一方で、２パス目からアクセス命令への正常応答がない場合（ステップＳ１８０８：Ｎｏ）、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力し（ステップＳ１８０９）、アクセス処理を終了する。
【０２１４】
また、ステップＳ１８０４にて、１パス目からアクセス命令への応答がない場合（ステップＳ１８０４：Ｎｏ）、アクセス制御装置１００は、第２世代サポートフラグがオンであるか否かを判定する（ステップＳ１８１０）。ここで、第２世代サポートフラグがオンである場合（ステップＳ１８１０：Ｙｅｓ）、アクセス制御装置１００は、第２世代のアクセス処理を実行し（ステップＳ１８１１）、アクセス処理を終了する。
【０２１５】
一方で、第２世代サポートフラグがオフである場合（ステップＳ１８１０：Ｎｏ）、アクセス制御装置１００は、図１９のステップＳ１９０１の処理に移行する。
【０２１６】
図１９において、アクセス制御装置１００は、２パス目に、引数に１パス目のｗｗｎとＣＭを示す情報を設定したアクセス切替コマンドを出力する（ステップＳ１９０１）。次に、アクセス制御装置１００は、ライトであるか否かを判定する（ステップＳ１９０２）。ここで、ライトである場合（ステップＳ１９０２：Ｙｅｓ）、アクセス制御装置１００は、ライトデータを複製し（ステップＳ１９０３）、ステップＳ１９０４の処理に移行する。
【０２１７】
一方で、ライトではない場合（ステップＳ１９０２：Ｎｏ）、アクセス制御装置１００は、１パス目からアクセス命令への正常応答があったか否かを判定する（ステップＳ１９０４）。１パス目からアクセス命令への正常応答があった場合（ステップＳ１９０４：Ｙｅｓ）、アクセス制御装置１００は、複製したライトデータを破棄する（ステップＳ１９０５）。次に、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力し（ステップＳ１９０６）、アクセス処理を終了する。
【０２１８】
一方で、１パス目からアクセス命令への正常応答がない場合（ステップＳ１９０４：Ｎｏ）、アクセス制御装置１００は、２パス目からアクセス切替コマンドへの応答があったか否かを判定する（ステップＳ１９０７）。ここで、２パス目からアクセス切替コマンドへの応答がない場合（ステップＳ１９０７：Ｎｏ）、アクセス制御装置１００は、ステップＳ１９０７の処理に戻る。
【０２１９】
一方で、２パス目からアクセス切替コマンドへの応答があった場合（ステップＳ１９０７：Ｙｅｓ）、アクセス制御装置１００は、２パス目にアクセス命令を出力する（ステップＳ１９０８）。次に、アクセス制御装置１００は、２パス目からアクセス命令への応答を受け付ける（ステップＳ１９０９）。
【０２２０】
そして、アクセス制御装置１００は、２パス目のアクセス命令への応答が、正常応答であるか否かを判定する（ステップＳ１９１０）。ここで、正常応答である場合（ステップＳ１９１０：Ｙｅｓ）、アクセス制御装置１００は、１パス目のアクセス命令への応答があるか、または、キャンセルが終了したかを判定する（ステップＳ１９１１）。ここで、１パス目のアクセス命令への応答がなく、かつ、キャンセルが終了していない場合（ステップＳ１９１１：Ｎｏ）、アクセス制御装置１００は、ステップＳ１９１１の処理に戻る。
【０２２１】
一方で、１パス目のアクセス命令への応答がある場合、または、キャンセルが終了した場合（ステップＳ１９１１：Ｙｅｓ）、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力し（ステップＳ１９１２）、アクセス処理を終了する。
【０２２２】
また、ステップＳ１９１０にて、正常応答ではない場合（ステップＳ１９１０：Ｎｏ）、アクセス制御装置１００は、１パス目のアクセス命令への応答があるか、または、キャンセルが終了したかを判定する（ステップＳ１９１３）。ここで、１パス目のアクセス命令への応答がなく、かつ、キャンセルが終了していない場合（ステップＳ１９１３：Ｎｏ）、アクセス制御装置１００は、ステップＳ１９１３の処理に戻る。
【０２２３】
一方で、１パス目のアクセス命令への応答がある場合、または、キャンセルが終了した場合（ステップＳ１９１３：Ｙｅｓ）、アクセス制御装置１００は、１パス目のアクセス命令への応答が、正常応答であるか否かを判定する（ステップＳ１９１４）。ここで、正常応答ではない場合（ステップＳ１９１４：Ｎｏ）、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力し（ステップＳ１９１５）、アクセス処理を終了する。
【０２２４】
一方で、正常応答である場合（ステップＳ１９１４：Ｙｅｓ）、アクセス制御装置１００は、ステップＳ１９１２の処理に移行する。
【０２２５】
（動作例１にかかるキャンセル処理手順の一例）
次に、図２０を用いて、動作例１にかかるキャンセル処理手順の一例について説明する。
【０２２６】
図２０は、動作例１にかかるキャンセル処理手順の一例を示すフローチャートである。図２０において、ストレージ装置１１０は、切替先のＣＭによって、アクセス切替コマンドを受け付ける（ステップＳ２００１）。次に、ストレージ装置１１０は、切替先のＣＭによって、アクセス切替コマンドの引数から切替元のＣＭを示す情報を取得する（ステップＳ２００２）。
【０２２７】
そして、ストレージ装置１１０は、切替先のＣＭによって、切替元のＣＭが動作しているか否かを判定する（ステップＳ２００３）。ここで、動作していない場合（ステップＳ２００３：Ｎｏ）、ストレージ装置１１０は、切替先のＣＭによって、アクセス制御装置１００に正常応答を出力し（ステップＳ２００４）、キャンセル処理を終了する。
【０２２８】
一方で、動作している場合（ステップＳ２００３：Ｙｅｓ）、ストレージ装置１１０は、切替先のＣＭによって、アクセス切替コマンドを切替元のＣＭに出力する（ステップＳ２００５）。次に、ストレージ装置１１０は、切替元のＣＭによって、アクセス切替コマンドの引数からキャンセル対象のパスを示す情報を取得する（ステップＳ２００６）。そして、ストレージ装置１１０は、切替元のＣＭによって、キャンセル対象のパスについてキャンセルコマンドを実行する（ステップＳ２００７）。
【０２２９】
次に、ストレージ装置１１０は、切替元のＣＭによって、キャンセル対象のパスについて処理中のデータを削除し、削除したことを切替先のＣＭに出力する（ステップＳ２００８）。そして、ストレージ装置１１０は、切替先のＣＭによって、アクセス制御装置１００に正常応答を出力し（ステップＳ２００９）、キャンセル処理を終了する。
【０２３０】
（アクセス制御装置１００の動作例２）
次に、アクセス制御装置１００の動作例２について説明する。動作例１は、上述したように、ＨＢＡ１３０からアクセス命令を出力した後、アクセス命令への応答を受信する前であってもＨＢＡ１３１からアクセス命令を出力することが可能である場合の一例である。これに対し、動作例２は、ＨＢＡ１３０からアクセス命令を出力した後、アクセス命令への応答を受信してから、ＨＢＡ１３１からアクセス命令を出力する場合の一例である。これによれば、アクセス制御装置１００は、データを複製しなくてもよくなる。
【０２３１】
（動作例２における複数の動作パターンの一例）
まず、図２１を用いて、動作例２における複数の動作パターンの一例について説明する。
【０２３２】
図２１は、動作例２における複数の動作パターンの一例を示す説明図である。上述したように、アクセス制御装置１００は、記憶装置１５０に対するアクセス要求を受け付けると、ＨＢＡ１３０とＣＭ１４０とを接続するパス１６０を介して、記憶装置１５０に対するアクセス命令を出力する。
【０２３３】
その後、アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過するまでに、アクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置１００は、所定の時間が経過してもアクセス命令に対する応答を受信しなかった場合、パス１６１を介して、ＣＭ１４１にＣＭ１４０が実行するアクセス命令に応じた処理を停止させるアクセス切替コマンドを出力する。
【０２３４】
そして、アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対する応答を受信し、かつ、ＣＭ１４０が実行するアクセス命令に応じた処理が停止されると、パス１６１を介してアクセス命令を出力し、ＣＭ１４１からアクセス命令に対する応答を受信する。
【０２３５】
ここで、アクセス制御装置１００の動作パターンは、パス１６０を介して受信する応答の種類と、パス１６１を介して受信する応答の種類と、パス１６０とパス１６１とから応答を受信する順番とに応じて、異なる動作パターンになる。そこで、図２１に示す表２１００を用いて、動作例２における第１の動作パターン〜第７の動作パターンについて説明する。
【０２３６】
第１の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介して正常応答を受信した場合における動作パターンである。第１の動作パターンでは、アクセス制御装置１００は、パス１６１を介してＣＭ１４１にアクセス命令を出力せずに、アクセス要求の要求元に正常応答を出力する。
【０２３７】
第２の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介してエラー応答を受信し、かつ、パス１６１を介して正常応答を受信した場合における動作パターンである。第２の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。
【０２３８】
第３の動作パターンは、アクセス制御装置１００が、パス１６０を介して応答がないと判断し、かつ、パス１６１を介して正常応答を受信した場合における動作パターンである。第３の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力する。
【０２３９】
第４の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介してエラー応答を受信し、かつ、パス１６１を介してエラー応答を受信した場合における動作パターンである。第４の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。
【０２４０】
第５の動作パターンは、アクセス制御装置１００が、パス１６０を介して応答がないと判断し、かつ、パス１６１を介してエラー応答を受信した場合における動作パターンである。第５の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。
【０２４１】
第６の動作パターンは、アクセス制御装置１００が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス１６０を介してエラー応答を受信し、かつ、パス１６１を介して応答がないと判断した場合における動作パターンである。第６の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。また、第６の動作パターンでは、アクセス制御装置１００は、マルチパスドライバ１２０によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト２３０によってミラーリングを解除する。具体的には、ミラーソフト２３０は、上述した待機時間が経過したため、ミラーリングを解除する。
【０２４２】
第７の動作パターンは、アクセス制御装置１００が、パス１６０を介して応答がないと判断し、かつ、パス１６１を介して応答がないと判断した場合における動作パターンである。第７の動作パターンでは、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力する。また、第７の動作パターンでは、アクセス制御装置１００は、マルチパスドライバ１２０によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト２３０によってミラーリングを解除する。具体的には、ミラーソフト２３０は、上述した待機時間が経過したため、ミラーリングを解除する。
【０２４３】
（動作例２における第１の動作パターンの具体例）
次に、図２２を用いて、図２１に示した動作例２における第１の動作パターンの具体例について説明する。
【０２４４】
図２２は、動作例２における第１の動作パターンの具体例を示す説明図である。図２２の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２４５】
（２２−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２４６】
（２２−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する正常応答を受信したため、パス１６０をオフラインに設定しない。
【０２４７】
（２２−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させる。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２４８】
（２２−４）アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対する正常応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力する。
【０２４９】
ここでは、アクセス制御装置１００が、パス１６０をオフラインに設定しない場合について説明したが、これに限らない。例えば、アクセス制御装置１００は、パス１６０を介してアクセス命令を出力してから所定の時間が経過しており、パス１６０やＣＭ１４０が故障している可能性があるため、パス１６０をオフラインに設定してもよい。
【０２５０】
そして、アクセス制御装置１００は、次回のアクセス命令については、パス１６１を介して出力するようにしてもよい。これにより、アクセス制御装置１００は、次回のアクセス命令からは、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。
【０２５１】
（動作例２における第２の動作パターンの具体例）
次に、図２３を用いて、図２１に示した動作例２における第２の動作パターンの具体例について説明する。
【０２５２】
図２３は、動作例２における第２の動作パターンの具体例を示す説明図である。図２３の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２５３】
（２３−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２５４】
（２３−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信しているため、パス１６０をオフラインに設定してもよい。
【０２５５】
これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。また、アクセス制御装置１００は、次回のアクセス命令からはパス１６１を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
【０２５６】
（２３−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２５７】
（２３−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止し、かつ、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２５８】
（２３−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、ＣＭ１４１からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０２５９】
（動作例２における第３の動作パターンの具体例）
次に、図２４を用いて、図２１に示した動作例２における第３の動作パターンの具体例について説明する。
【０２６０】
図２４は、動作例２における第３の動作パターンの具体例を示す説明図である。図２４の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２６１】
（２４−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２６２】
（２４−２）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。また、ＣＭ１４１は、ＣＭ１４０が故障している場合、ＣＭ１４０の処理はすでに停止しているため、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信してもよい。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２６３】
（２４−３）アクセス制御装置１００は、パス１６０を介してＣＭ１４０から、ＣＭ１４１によってＣＭ１４０の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０またはパス１６０が故障している場合は、パス１６０を介してＣＭ１４０から応答がないため、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信する。ここで、アクセス制御装置１００は、パス１６０をオフラインに設定してもよい。
【０２６４】
これにより、アクセス制御装置１００は、故障の可能性があるパス１６０やＣＭ１４０を用いないようにして、ストレージシステム２００の信頼性の向上を図ることができる。また、アクセス制御装置１００は、次回のアクセス命令からはパス１６１を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
【０２６５】
（２４−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止し、かつ、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２６６】
（２４−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対する正常応答を受信する。アクセス制御装置１００は、ＣＭ１４１からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
【０２６７】
これにより、アクセス制御装置１００は、ＣＭ１４０が能動的にエラー応答を出力するよりも前に、ＣＭ１４０の処理を停止させ、ＣＭ１４０の処理が停止させられたことによるアクセス命令に対するエラー応答をＣＭ１４０から受信することができる場合がある。結果として、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待っていても、アクセス切替コマンドによってデータ破壊を防止しつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０２６８】
（動作例２における第４の動作パターンの具体例）
次に、図２５を用いて、図２１に示した動作例２における第４の動作パターンの具体例について説明する。
【０２６９】
図２５は、動作例２における第４の動作パターンの具体例を示す説明図である。図２５の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２７０】
（２５−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２７１】
（２５−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信する。
【０２７２】
（２５−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２７３】
（２５−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止し、かつ、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２７４】
（２５−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＣＭ１４１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０２７５】
（動作例２における第５の動作パターンの具体例）
次に、図２６を用いて、図２１に示した動作例２における第５の動作パターンの具体例について説明する。
【０２７６】
図２６は、動作例２における第５の動作パターンの具体例を示す説明図である。図２６の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２７７】
（２６−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２７８】
（２６−２）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。また、ＣＭ１４１は、ＣＭ１４０が故障している場合、ＣＭ１４０の処理はすでに停止しているため、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信してもよい。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２７９】
（２６−３）アクセス制御装置１００は、パス１６０を介してＣＭ１４０から、ＣＭ１４１によってＣＭ１４０の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０またはパス１６０が故障している場合は、パス１６０を介してＣＭ１４０から応答がないため、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信する。
【０２８０】
（２６−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止し、かつ、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２８１】
（２６−５）アクセス制御装置１００は、パス１６１を介してＣＭ１４１からアクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＣＭ１４１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０２８２】
これにより、アクセス制御装置１００は、ＣＭ１４０が能動的にエラー応答を出力するよりも前に、ＣＭ１４０の処理を停止させ、ＣＭ１４０の処理が停止させられたことによるアクセス命令に対するエラー応答をＣＭ１４０から受信することができる場合がある。結果として、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待っていても、アクセス切替コマンドによってデータ破壊を防止しつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０２８３】
（動作例２における第６の動作パターンの具体例）
次に、図２７を用いて、図２１に示した動作例２における第６の動作パターンの具体例について説明する。
【０２８４】
図２７は、動作例２における第６の動作パターンの具体例を示す説明図である。図２７の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２８５】
（２７−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２８６】
（２７−２）アクセス制御装置１００は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス１６０を介してＣＭ１４０からアクセス命令に対するエラー応答を受信する。
【０２８７】
（２７−３）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２８８】
（２７−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止し、かつ、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２８９】
（２７−５）アクセス制御装置１００は、ＨＢＡ１３１がパス１６１を介してＣＭ１４１から応答がないと判断したため、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信する。
【０２９０】
（２７−６）アクセス制御装置１００は、ＣＭ１４０からアクセス命令に対するエラー応答を受信し、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０２９１】
（動作例２における第７の動作パターンの具体例）
次に、図２８を用いて、図２１に示した動作例２における第７の動作パターンの具体例について説明する。
【０２９２】
図２８は、動作例２における第７の動作パターンの具体例を示す説明図である。図２８の例では、アクセス制御装置１００は、アクセス命令が記憶装置１５０にライトデータを書き込む命令であればライトデータを複製したうえで、パス１６０を介してＣＭ１４０にアクセス命令を出力したとする。
【０２９３】
（２８−１）アクセス制御装置１００は、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス１６１を介してＣＭ１４１にアクセス切替コマンドを出力する。
【０２９４】
（２８−２）ＣＭ１４１は、アクセス切替コマンドに応じてＣＭ１４０の処理を停止させ、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信する。また、ＣＭ１４１は、ＣＭ１４０が故障している場合、ＣＭ１４０の処理はすでに停止しているため、ＣＭ１４０の処理を停止させたことを示す通知をアクセス制御装置１００に送信してもよい。アクセス制御装置１００は、パス１６１を介してＣＭ１４１から、ＣＭ１４０の処理を停止させたことを示す通知を受信する。
【０２９５】
（２８−３）アクセス制御装置１００は、パス１６０を介してＣＭ１４０から、ＣＭ１４１によってＣＭ１４０の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置１００は、ＣＭ１４０またはパス１６０が故障している場合は、パス１６０を介してＣＭ１４０から応答がないため、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信する。
【０２９６】
（２８−４）アクセス制御装置１００は、ＣＭ１４０の処理が停止し、かつ、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を受信しているため、パス１６１を介してＣＭ１４１にアクセス命令を出力する。
【０２９７】
（２８−５）アクセス制御装置１００は、ＨＢＡ１３１がパス１６１を介してＣＭ１４１から応答がないと判断したため、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信する。
【０２９８】
（２８−６）アクセス制御装置１００は、ＨＢＡ１３０からアクセス命令に対するエラー応答を受信し、ＨＢＡ１３１からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
【０２９９】
これにより、アクセス制御装置１００は、ＣＭ１４０が能動的にエラー応答を出力するよりも前に、ＣＭ１４０の処理を停止させ、ＣＭ１４０の処理が停止させられたことによるアクセス命令に対するエラー応答をＣＭ１４０から受信することができる場合がある。結果として、アクセス制御装置１００は、パス１６０を介してＣＭ１４０からアクセス命令に対する応答を待っていても、アクセス切替コマンドによってデータ破壊を防止しつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
【０３００】
（動作例２にかかる初期化処理手順の一例）
動作例２にかかる初期化処理手順の一例は、図１７に示した動作例１にかかる初期化処理手順の一例と同様であるため、説明を省略する。
【０３０１】
（動作例２にかかるアクセス処理手順の一例）
次に、図２９を用いて、動作例２にかかるアクセス処理手順の一例について説明する。
【０３０２】
図２９は、動作例２にかかるアクセス処理手順の一例を示すフローチャートである。アクセス制御装置１００は、図１８に示した動作例１にかかるアクセス処理手順の一例のステップＳ１８０１〜Ｓ１８１１の処理と同様の処理を行い、図２９のステップＳ２９０１の処理に移行する。
【０３０３】
図２９において、アクセス制御装置１００は、２パス目に、引数に１パス目のｗｗｎとＣＭを示す情報を設定したアクセス切替コマンドを出力する（ステップＳ２９０１）。次に、アクセス制御装置１００は、１パス目からアクセス命令への正常応答があったか否かを判定する（ステップＳ２９０２）。１パス目からアクセス命令への正常応答があった場合（ステップＳ２９０２：Ｙｅｓ）、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力し（ステップＳ２９０３）、アクセス処理を終了する。
【０３０４】
一方で、１パス目からアクセス命令への正常応答がない場合（ステップＳ２９０２：Ｎｏ）、アクセス制御装置１００は、２パス目からアクセス切替コマンドへの応答があったか否かを判定する（ステップＳ２９０４）。ここで、２パス目からアクセス切替コマンドへの応答がない場合（ステップＳ２９０４：Ｎｏ）、アクセス制御装置１００は、ステップＳ２９０４の処理に戻る。
【０３０５】
一方で、２パス目からアクセス切替コマンドへの応答があった場合（ステップＳ２９０４：Ｙｅｓ）、アクセス制御装置１００は、１パス目に対するアクセス命令への応答があったか否かを判定する（ステップＳ２９０５）。当該応答は、例えば、アクセス切替コマンドに基づき、１パス目に接続されたＣＭが、アクセス命令の処理を停止されたことに応じて出力したエラー応答である。
【０３０６】
また、当該応答は、１パス目に接続されたＣＭまたは１パス目が故障しているため、１パス目へのアクセス命令の出力を制御するＨＢＡから出力されたエラー応答であってもよい。また、当該応答は、ステップＳ２９０２の時点ではマルチパスドライバに未到達であったが、１パス目に接続されたＣＭがアクセス命令の処理を停止される前に出力済みであった正常応答またはエラー応答であってもよい。
【０３０７】
ここで、１パス目に対するアクセス命令への応答がない場合（ステップＳ２９０５：Ｎｏ）、アクセス制御装置１００は、ステップＳ２９０５の処理に移行する。一方で、１パス目に対するアクセス命令への応答があった場合（ステップＳ２９０５：Ｙｅｓ）、アクセス制御装置１００は、２パス目にアクセス命令を出力する（ステップＳ２９０６）。次に、アクセス制御装置１００は、２パス目からアクセス命令への応答を受け付ける（ステップＳ２９０７）。
【０３０８】
そして、アクセス制御装置１００は、２パス目のアクセス命令への応答が、正常応答であるか否かを判定する（ステップＳ２９０８）。ここで、正常応答である場合（ステップＳ２９０８：Ｙｅｓ）、アクセス制御装置１００は、アクセス要求の要求元に正常応答を出力し（ステップＳ２９０９）、アクセス処理を終了する。
【０３０９】
また、ステップＳ２９０８にて、正常応答ではない場合（ステップＳ２９０８：Ｎｏ）、アクセス制御装置１００は、１パス目のアクセス命令への応答が、正常応答であるか否かを判定する（ステップＳ２９１０）。ここで、正常応答ではない場合（ステップＳ２９１０：Ｎｏ）、アクセス制御装置１００は、アクセス要求の要求元にエラー応答を出力し（ステップＳ２９１１）、アクセス処理を終了する。
【０３１０】
一方で、正常応答である場合（ステップＳ２９１０：Ｙｅｓ）、アクセス制御装置１００は、ステップＳ２９０９の処理に移行する。
【０３１１】
（動作例２にかかるキャンセル処理手順の一例）
動作例２にかかるキャンセル処理手順の一例は、図２０に示した動作例１にかかるキャンセル処理手順の一例と同様であるため、説明を省略する。
【０３１２】
以上説明したように、アクセス制御装置１００によれば、記憶装置１５０に対するアクセス要求を受け付けると、ＣＭ１４０と接続するパス１６０を介して、記憶装置１５０に対するアクセス命令を出力することができる。また、アクセス制御装置１００によれば、パス１６０を介してＣＭ１４０にアクセス命令を出力してから所定の時間が経過するまでに、アクセス命令に対する応答を受信したか否かを判定することができる。また、アクセス制御装置１００によれば、所定の時間が経過してもアクセス命令に対する応答を受信しない場合に、ＣＭ１４１と接続するパス１６１を介して、ＣＭ１４１にＣＭ１４０が実行するアクセス命令に応じた処理を停止させる制御を行うことができる。また、アクセス制御装置１００によれば、ＣＭ１４１から、アクセス命令に応じた処理を停止させる制御に対応する応答を受信した後に、パス１６１を介してアクセス命令を出力することができる。
【０３１３】
これにより、アクセス制御装置１００は、ＨＢＡ１３０から応答を受信する前であっても、ＣＭ１４１に、ＣＭ１４０が実行するアクセス命令に応じた処理を停止させることができる。結果として、アクセス制御装置１００は、アクセス要求の要求元に応答を出力するまでにかかる時間を低減しやすくすることができる。また、アクセス制御装置１００は、ＣＭ１４０の記憶装置１５０に対するアクセスと、ＣＭ１４１の記憶装置１５０に対するアクセスとが重複しないようにして、データ破壊を防止することができる。
【０３１４】
また、アクセス制御装置１００によれば、パス１６０を介してアクセス命令を出力する前にライトデータを複製しておくことができる。また、アクセス制御装置１００によれば、ＣＭ１４１から応答を受信したことに応じて、複製しておいたライトデータに基づいてパス１６１を介してアクセス命令を出力することができる。これにより、アクセス制御装置１００は、パス１６０を介して出力したアクセス命令への応答を受信する前であっても、パス１６１を介してアクセス命令を出力することができ、ＣＭ１４１にアクセス命令を実行させることができる。また、アクセス制御装置１００は、ダイレクトメモリアクセスによって複製元になったライトデータが削除されていても、複製しておいたライトデータを用いてパス１６１を介してアクセス命令を出力することができる。
【０３１５】
また、アクセス制御装置１００によれば、ＣＭ１４１から応答を受信し、かつ、ＣＭ１４０から応答を受信した後に、パス１６１を介してアクセス命令を出力することができる。これにより、アクセス制御装置１００は、ライトデータを複製しておかなくても、パス１６１を介してアクセス命令を出力することができ、メモリ４０２の使用量を低減しやすくすることができる。
【０３１６】
また、アクセス制御装置１００によれば、ＣＭ１４０から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力することができる。これにより、アクセス制御装置１００は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
【０３１７】
また、アクセス制御装置１００によれば、ＣＭ１４０からエラー応答を受信した場合、または、ＣＭ１４０から応答がないと判断した場合であって、ＣＭ１４１から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力することができる。これにより、アクセス制御装置１００は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
【０３１８】
また、アクセス制御装置１００によれば、ＣＭ１４０からエラー応答を受信した場合、または、ＣＭ１４０から応答がないと判断した場合であって、ＣＭ１４１からエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力することができる。これにより、アクセス制御装置１００は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
【０３１９】
また、アクセス制御装置１００によれば、ＣＭ１４０からエラー応答を受信した場合、または、ＣＭ１４０から応答がないと判断した場合であって、ＣＭ１４１から応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力することができる。これにより、アクセス制御装置１００は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
【０３２０】
また、アクセス制御装置１００によれば、パス１６１を介してＣＭ１４０を示す情報を含む停止命令をＣＭ１４１に出力することにより、ＣＭ１４１にＣＭ１４０が実行するアクセス命令に応じた処理を停止させることができる。これにより、アクセス制御装置１００は、ＣＭ１４１が、ストレージ装置１１０が有するいずれのＣＭを停止させればよいかを判定可能にすることができる。
【０３２１】
また、アクセス制御装置１００によれば、パス１６１を介してパス１６０を示す情報を含む停止命令をＣＭ１４１に出力することにより、ＣＭ１４１にＣＭ１４０におけるパス１６０に関する処理を停止させることができる。これにより、アクセス制御装置１００は、ＣＭ１４１が、ＣＭ１４０に接続された複数のパスのいずれを介して実行される処理を停止させればよいかを判定可能にすることができる。
【０３２２】
また、アクセス制御装置１００によれば、所定の時間として、ＣＭ１４０による記憶装置１５０へのアクセスが失敗したと判断する時間以下の時間を用いることができる。これにより、アクセス制御装置１００は、アクセス要求の要求元に応答を出力するまでにかかる時間を低減しやすくすることができる。
【０３２３】
なお、本実施の形態で説明したアクセス制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本アクセス制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本アクセス制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０３２４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０３２５】
（付記１）ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第１の制御装置に対する前記アクセス命令に対する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、
制御部を有することを特徴とするアクセス制御装置。
【０３２６】
（付記２）前記アクセス命令は、ダイレクトメモリアクセスを用いて前記記憶装置にライトデータを書き込む命令であって、
前記制御部は、
前記第１のパスを介して前記アクセス命令を出力する前に前記ライトデータを複製しておき、
前記第２の制御装置に対する前記制御に対応する応答を受信したことに応じて、複製しておいた前記ライトデータに基づいて前記第２のパスを介して前記アクセス命令を出力する、ことを特徴とする付記１に記載のアクセス制御装置。
【０３２７】
（付記３）前記制御部は、
前記第２の制御装置に対する前記制御に対応する応答を受信し、かつ、前記第１の制御装置に対する前記アクセス命令に対するエラー応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、ことを特徴とする付記１に記載のアクセス制御装置。
【０３２８】
（付記４）前記制御部は、
前記第１の制御装置に対する前記アクセス命令に対する成功応答を受信した場合、前記アクセス要求の要求元に成功応答を出力する、ことを特徴とする付記１〜３のいずれか一つに記載のアクセス制御装置。
【０３２９】
（付記５）前記制御部は、
前記第１の制御装置に対する前記アクセス命令に対するエラー応答を受信した場合であって、前記第２の制御装置に対する前記アクセス命令に対する成功応答を受信した場合、前記アクセス要求の要求元に成功応答を出力する、ことを特徴とする付記１〜４のいずれか一つに記載のアクセス制御装置。
【０３３０】
（付記６）前記制御部は、
前記第１の制御装置に対する前記アクセス命令に対するエラー応答を受信した場合であって、前記第２の制御装置に対する前記アクセス命令に対するエラー応答を受信した場合、前記アクセス要求の要求元にエラー応答を出力する、ことを特徴とする付記１〜５のいずれか一つに記載のアクセス制御装置。
【０３３１】
（付記７）前記制御部は、
前記第２のパスを介して前記第１の制御装置を示す情報を含む停止命令を前記第２の制御装置に出力することにより、前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる、ことを特徴とする付記１〜６のいずれか一つに記載のアクセス制御装置。
【０３３２】
（付記８）前記制御部は、
前記第２のパスを介して前記第１のパスを示す情報を含む停止命令を前記第２の制御装置に出力することにより、前記第２の制御装置に前記第１の制御装置における前記第１のパスに関する処理を停止させる、ことを特徴とする付記１〜７のいずれか一つに記載のアクセス制御装置。
【０３３３】
（付記９）前記所定の時間は、前記第１の制御装置による前記記憶装置へのアクセスが失敗したと判断する時間以下である、ことを特徴とする付記１〜８のいずれか一つに記載のアクセス制御装置。
【０３３４】
（付記１０）コンピュータが、
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第１の制御装置に対する前記アクセス命令に対する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、
処理を実行することを特徴とするアクセス制御方法。
【０３３５】
（付記１１）コンピュータに、
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第１の制御装置に対して第１のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第１の制御装置に対する前記アクセス命令に対応する応答を受信しない場合に、前記複数の制御装置のうちの前記第１の制御装置とは異なる第２の制御装置と接続する第２のパスを利用して前記第２の制御装置に前記第１の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第２の制御装置に対する前記制御に対応する応答を受信した後に、前記第２のパスを介して前記アクセス命令を出力する、
処理を実行させることを特徴とするアクセス制御プログラム。
【符号の説明】
【０３３６】
１００  アクセス制御装置
１１０，２１０，３３０  ストレージ装置
１２０，２４０  マルチパスドライバ
１３０，１３１，２５０，２５１，３２０  ＨＢＡ
１４０，１４１，２６０，２６１，３４０〜３４３  ＣＭ
１５０，２７０，３５０  記憶装置
１６０，１６１，２８０，２８１，３６０，３６１，３７０  パス
２００  ストレージシステム
２２０  アプリケーションソフト
２３０  ミラーソフト
３１０  サーバ
４００  バス
４０１  ＣＰＵ
４０２  メモリ
４０３  ネットワークＩ／Ｆ
４０４  ディスクドライブ
４０５  ディスク
４０６  記憶媒体Ｉ／Ｆ
４０７  ストレージＩ／Ｆ
５００  接続情報テーブル
６０１  受付部
６０２，６０４  出力部
６０３  停止指示部
６０５  応答部
７００，２１００  表
【図１】
2018041414.tif 000003
【図２】
2018041414.tif 000004
【図３】
2018041414.tif 000005
【図４】
2018041414.tif 000006
【図５】
2018041414.tif 000007
【図６】
2018041414.tif 000008
【図７】
2018041414.tif 000009
【図８】
2018041414.tif 000010
【図９】
2018041414.tif 000011
【図１０】
2018041414.tif 000012
【図１１】
2018041414.tif 000013
【図１２】
2018041414.tif 000014
【図１３】
2018041414.tif 000015
【図１４】
2018041414.tif 000016
【図１５】
2018041414.tif 000017
【図１６】
2018041414.tif 000018
【図１７】
2018041414.tif 000019
【図１８】
2018041414.tif 000020
【図１９】
2018041414.tif 000021
【図２０】
2018041414.tif 000022
【図２１】
2018041414.tif 000023
【図２２】
2018041414.tif 000024
【図２３】
2018041414.tif 000025
【図２４】
2018041414.tif 000026
【図２５】
2018041414.tif 000027
【図２６】
2018041414.tif 000028
【図２７】
2018041414.tif 000029
【図２８】
2018041414.tif 000030
【図２９】
2018041414.tif 000031