以下に、図面を参照して、本発明にかかるアクセス制御装置、アクセス制御方法、およびアクセス制御プログラムの実施の形態を詳細に説明する。
(実施の形態にかかるアクセス制御方法の一実施例)
図1は、実施の形態にかかるアクセス制御方法の一実施例を示す説明図である。アクセス制御装置100は、ストレージ装置110と複数のパスで接続され、ストレージ装置110が有する記憶装置150に対するアクセス要求を受け付け、ストレージ装置110が有する記憶装置150に対するアクセスを制御するコンピュータである。
〈第1世代の方式〉
ここで、従来、マルチパス構成のストレージシステムには、第1世代のストレージシステムがある。第1世代のストレージシステムでは、例えば、サーバは、アクセス要求に応じて、いずれかのHBA(Host Bus Adapter)がアクセスに成功するまでそれぞれのHBAに順番にアクセス命令を出力させる制御を行うことになる。
サーバは、いずれかのHBAからアクセスに成功したことが通知されるとアクセス要求の要求元に正常応答を出力し、それぞれのHBAからアクセスに失敗したことが通知されるとアクセス要求の要求元にエラー応答を出力する。HBAは、アクセス命令を出力した後、アクセス命令への応答がないまま所定の時間が経過した場合には、アクセスに失敗したことをサーバに通知する。
しかしながら、第1世代のストレージシステムでは、サーバがアクセス要求を受け付けてからストレージ装置が有する記憶装置に対するアクセスが終了するまでにかかる時間が、アクセス要求の要求元が許容可能な時間を超えてしまうことがある。換言すれば、サーバがアクセス要求を受け付けてから、アクセス要求の要求元に応答を出力するまでにかかる時間が、アクセス要求の要求元に設定された、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間を超えてしまうことがある。
例えば、それぞれのHBAがアクセスに失敗した場合に、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間は、それぞれのHBAがアクセスに失敗したと判定するまでにかかる時間の累計時間になる。このため、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間は増加しやすい傾向がある。
また、HBAの処理負荷が比較的大きい場合、または、HBAとストレージ装置とのパス上に障害が発生した場合、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間はさらに増加しやすい傾向がある。結果として、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間が比較的小さくなる傾向がある金融システムなどに、第1世代のストレージシステムを適用することは好ましくない場合がある。
〈第2世代の方式〉
これに対し、マルチパス構成のストレージシステムには、第1世代のストレージシステムに比べて、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間を増加しにくくする第2世代のストレージシステムがある。第2世代のストレージシステムでは、例えば、サーバは、1つ目のHBAにアクセス命令を出力させた後、1つ目のHBAからアクセスに失敗したことが通知される前であっても所定の時間が経過した場合には、2つ目のHBAにアクセス命令を出力させる。
サーバは、1つ目のHBAからアクセスに失敗したことが通知される前であっても所定の時間が経過した場合には、1つ目のHBAにキャンセルコマンドを出力させて、ストレージ装置が実行するアクセス処理があれば停止させ、データ破壊の発生を抑制する。例えば、サーバが1つ目のHBAにキャンセルコマンドを出力させると判定するまでの所定の時間は、HBAがアクセスに失敗したと判定するまでの所定の時間より小さい値が設定される。
しかしながら、第2世代のストレージシステムは、サーバのOS(Operating System)がキャンセルコマンドを出力するためのインターフェースに対応していない場合には、実現することができない。このため、サーバのOSがキャンセルコマンドを出力するためのインターフェースに対応していない場合には、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間は増加しやすくなってしまう。結果として、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間が、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間を超えてしまうことがある。
また、第2世代のストレージシステムでは、HBAとストレージ装置とのパス上に障害が発生した場合、データ破壊の発生を抑制することが難しく、サーバがアクセス要求の要求元に応答を出力するまでにかかる時間が増加してしまうことがある。例えば、HBAとストレージ装置とのパス上に障害が発生した場合、HBAから出力したキャンセルコマンドがストレージ装置まで届かず、ストレージ装置が実行するアクセス処理を停止させることができないことがある。
そこで、本実施の形態では、サーバのOSがキャンセルコマンドを出力するためのインターフェースに対応していなくても、データ破壊を防ぎつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制するアクセス制御方法について説明する。
図1の例では、アクセス制御装置100は、複数のパスによってストレージ装置110と接続される。アクセス制御装置100は、マルチパスドライバ120を実行し、HBA130と、HBA131とを有する。ストレージ装置110は、CM(Controller Module)140と、CM141と、記憶装置150とを有する。
マルチパスドライバ120は、ストレージ装置110が有する記憶装置150に対するアクセス要求を受け付け、HBA130とHBA131とを制御し、HBA130とHBA131とにアクセス命令を出力させることができる。
HBA130は、ストレージ装置110のCM140とパス160によって接続され、マルチパスドライバ120の制御にしたがってCM140にアクセス命令を出力することにより、記憶装置150に対するアクセスをCM140に実行させることができる。HBA131は、ストレージ装置110のCM141とパス161によって接続され、マルチパスドライバ120の制御にしたがってCM141にアクセス命令を出力することにより、記憶装置150に対するアクセスをCM141に実行させることができる。
CM140は、制御装置であり、アクセス制御装置100のHBA130とパス160によって接続され、HBA130からアクセス命令を受け付け、記憶装置150に対するアクセスを実行する。CM141は、制御装置であり、アクセス制御装置100のHBA131とパス161によって接続され、HBA131からアクセス命令を受け付け、記憶装置150に対するアクセスを実行する。記憶装置150は、例えば、ディスクドライバである。記憶装置150は、例えば、SSD(Solid State Drive)であってもよい。
(1−1)アクセス制御装置100は、記憶装置150に対するアクセス要求を受け付ける。アクセス制御装置100は、例えば、マルチパスドライバ120によって、自装置が実行するアプリケーションソフトなどが出力したアクセス要求を受け付ける。また、アクセス制御装置100は、例えば、マルチパスドライバ120によって、他のコンピュータから、記憶装置150に対するアクセス要求を受け付けてもよい。
(1−2)アクセス制御装置100は、アクセス要求を受け付けると、記憶装置150を制御する複数のCMのうちの第1のCMとアクセス制御装置100とを接続する第1のパスを介して、記憶装置150に対するアクセス命令を出力する。アクセス制御装置100は、例えば、マルチパスドライバ120によって、アクセス要求を受け付けると、パス160を介して、記憶装置150に対するアクセス命令を出力する。
(1−3)アクセス制御装置100は、アクセス命令を出力した後、所定の時間が経過するまでに、第1のCMに対するアクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置100は、所定の時間が経過しても応答を受信しない場合に、複数のCMのうちの第2のCMとアクセス制御装置100とを接続する第2のパスを介して、第2のCMに第1のCMが実行するアクセス命令に応じた処理を停止させる制御を行う。
アクセス制御装置100は、例えば、マルチパスドライバ120によって、アクセス命令を出力した後、所定の時間が経過するまでに、CM140に対するアクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置100は、例えば、マルチパスドライバ120によって、所定の時間が経過しても応答を受信しない場合に、パス161を介して、CM141にCM140が実行するアクセス命令に応じた処理を停止させる制御を行う。
(1−4)アクセス制御装置100は、第2のCMから、第1のCMが実行するアクセス命令に応じた処理を停止させる制御に対応する応答を受信した後に、第2のパスを介してアクセス命令を出力する。アクセス制御装置100は、例えば、マルチパスドライバ120によって、CM141からCM140が実行するアクセス命令に応じた処理を停止させたことを示す応答を受信すると、パス161を介してアクセス命令を出力する。
これによれば、アクセス制御装置100は、HBA130からアクセス命令を出力した後、HBA130からアクセスに失敗したことが通知される前に、HBA131からアクセス命令を出力させることができる。結果として、アクセス制御装置100は、アクセス要求の要求元に応答を出力するまでにかかる時間を低減しやすくすることができる。
また、アクセス制御装置100は、HBA131からCM141を制御してCM140の処理を停止させることができ、HBA130から直接CM140にキャンセルコマンドを出力することができない場合であっても、データ破壊を防止することができる。
これにより、アクセス制御装置100は、OSがキャンセルコマンドを出力するためのインターフェースに対応していない場合であっても、データ破壊を防ぎつつ、記憶装置150へのアクセスにかかる時間を増加しにくくすることができる。結果として、アクセス制御装置100は、アクセス要求の要求元が応答を受け付けるまでに許容可能な時間が比較的小さくなる傾向がある金融システムなどに適用することが好ましくなる。また、アクセス制御装置100は、パス160に障害が発生し、パス160からキャンセルコマンドを出力することができない場合であっても、データ破壊を防ぎつつ、記憶装置150へのアクセスにかかる時間を増加しにくくすることができる。
ここでは、1つのサーバと、1つのストレージ装置110とが接続されている場合について説明したが、これに限らない。例えば、サーバは、1以上のストレージ装置110と接続されていてもよい。また、例えば、ストレージ装置110は、1以上のサーバと接続されていてもよい。
(ストレージシステム200の一例)
次に、図2を用いて、図1に示したアクセス制御装置100を適用した、ストレージシステム200の一例について説明する。以下、図2に示す要素のうち、図1に示す要素と同様の要素には、図1と同じ符号を付する場合がある。
図2は、ストレージシステム200の一例を示す説明図である。図2の例では、ストレージシステム200は、アクセス制御装置100と、ストレージ装置110と、ストレージ装置210とを含む。ストレージシステム200において、アクセス制御装置100と、ストレージ装置110とは、複数のパスによって接続される。また、ストレージシステム200において、アクセス制御装置100と、ストレージ装置210とは、複数のパスによって接続される。
アクセス制御装置100では、アプリケーションソフト220と、ミラーソフト230と、マルチパスドライバ120と、マルチパスドライバ240などのプログラムが動作する。アクセス制御装置100は、HBA130と、HBA131と、HBA250と、HBA251とを有する。ストレージ装置110は、CM140と、CM141と、記憶装置150とを有する。ストレージ装置210は、CM260と、CM261と、記憶装置270とを有する。
アプリケーションソフト220は、ミラーソフト230を介して、マルチパスドライバ120、または、マルチパスドライバ240の少なくともいずれかにアクセス要求を出力する。ミラーソフト230は、アプリケーションソフト220が出力するアクセス要求を、マルチパスドライバ120、または、マルチパスドライバ240の少なくともいずれかに出力する。
マルチパスドライバ120は、図1と同様に、ストレージ装置110が有する記憶装置150に対するアクセス要求を受け付け、HBA130とHBA131とを制御し、HBA130とHBA131とにアクセス命令を出力させることができる。マルチパスドライバ240は、ストレージ装置210が有する記憶装置270に対するアクセス要求を受け付け、HBA250とHBA251とを制御し、HBA250とHBA251とにアクセス命令を出力させることができる。
HBA130は、ストレージ装置110のCM140とパス160によって接続され、マルチパスドライバ120の制御にしたがってCM140にアクセス命令を出力することにより、記憶装置150に対するアクセスをCM140に実行させることができる。HBA131は、ストレージ装置110のCM141とパス161によって接続され、マルチパスドライバ120の制御にしたがってCM141にアクセス命令を出力することにより、記憶装置150に対するアクセスをCM141に実行させることができる。
HBA250は、ストレージ装置210のCM260とパス280によって接続され、マルチパスドライバ240の制御にしたがってCM260にアクセス命令を出力することにより、記憶装置270に対するアクセスをCM260に実行させることができる。HBA251は、ストレージ装置210のCM261とパス281によって接続され、マルチパスドライバ240の制御にしたがってCM261にアクセス命令を出力することにより、記憶装置270に対するアクセスをCM261に実行させることができる。
CM140は、アクセス制御装置100のHBA130とパス160によって接続され、HBA130からアクセス命令を受け付け、記憶装置150に対するアクセスを実行する。CM141は、アクセス制御装置100のHBA131とパス161によって接続され、HBA131からアクセス命令を受け付け、記憶装置150に対するアクセスを実行する。記憶装置150は、例えば、ディスクドライバである。記憶装置150は、例えば、SSDであってもよい。
CM260は、アクセス制御装置100のHBA250とパス280によって接続され、HBA250からアクセス命令を受け付け、記憶装置270に対するアクセスを実行する。CM261は、アクセス制御装置100のHBA251とパス281によって接続され、HBA251からアクセス命令を受け付け、記憶装置270に対するアクセスを実行する。記憶装置270は、例えば、ディスクドライバである。記憶装置270は、例えば、SSDであってもよい。
アクセス制御装置100は、ミラーソフト230によって、アプリケーションソフト220が出力したアクセス要求を、マルチパスドライバ120とマルチパスドライバ240との少なくともいずれかに出力する。アクセス制御装置100は、例えば、アプリケーションソフト220が出力したアクセス要求がリード要求であれば、マルチパスドライバ120とマルチパスドライバ240とのいずれかにリード要求を振り分ける。
一方で、アクセス制御装置100は、例えば、アプリケーションソフト220が出力したアクセス要求がライト要求であれば、マルチパスドライバ120とマルチパスドライバ240とのいずれにもライト要求を出力する。アクセス制御装置100は、マルチパスドライバ120によって、アクセス要求を受け付けた場合、記憶装置150に対するアクセスを制御する。アクセス制御装置100は、マルチパスドライバ240によって、アクセス要求を受け付けた場合、記憶装置270に対するアクセスを制御する。
アクセス制御装置100は、ミラーソフト230によって、マルチパスドライバ120またはマルチパスドライバ240に出力したアクセス要求に対する応答を、マルチパスドライバ120またはマルチパスドライバ240から受信する。そして、アクセス制御装置100は、マルチパスドライバ120またはマルチパスドライバ240から受信した応答に基づいて、アプリケーションソフト220からのアクセス要求に対する応答を、アプリケーションソフト220に出力する。アクセス制御装置100は、ミラーソフト230によって、マルチパスドライバ120またはマルチパスドライバ240から受信した応答に基づいて、ストレージ装置110またはストレージ装置210に障害が発生したと判断した場合にはミラーリングを解除する。
また、例えば、ミラーソフト230によって、マルチパスドライバ120にアクセス要求を出力してから、予め設定された待機時間が経過しても、マルチパスドライバ120からアクセス要求に対する応答を受信しない場合がある。待機時間は、例えば、マルチパスドライバ120が、一方のパスを利用したアクセス命令への応答がないと判断するまでの時間より長く、その後さらに他方のパスを利用したアクセス命令への応答もないと判断するまでの時間より短い時間が設定される。この場合、アクセス制御装置100は、ミラーソフト230によって、マルチパスドライバ120に出力したアクセス要求に対するエラー応答がなくても、ストレージ装置110に障害が発生したと判断し、ミラーリングを解除してもよい。
アクセス制御装置100は、アクセス要求がリード要求であった場合には、ミラーリングを解除した後、ミラーソフト230によって、リード要求をまだ出力していないマルチパスドライバ240に、リード要求を出力してもよい。アクセス制御装置100は、アクセス要求がライト要求であった場合には、ミラーリングを解除した後、マルチパスドライバ240から受信した応答に基づいて、アプリケーションソフト220からのアクセス要求に対する応答を出力してもよい。ここでは、ミラーソフト230によって、マルチパスドライバ120にアクセス要求を出力した場合について説明したが、マルチパスドライバ240にアクセス要求を出力した場合も同様である。アクセス制御装置100は、例えば、サーバである。
ストレージ装置110は、アクセス命令を受け付け、アクセス命令に応じて記憶装置150に対するアクセスを実行する。ストレージ装置110は、CM140によって、CM141が実行する処理を停止させることができる。ストレージ装置110は、例えば、CM140によって、CM141にキャンセルコマンドを出力することにより、CM141が実行する処理を停止させることができる。同様に、ストレージ装置110は、CM141によって、CM140が実行する処理を停止させることができる。
ストレージ装置210は、アクセス命令を受け付け、アクセス命令に応じて記憶装置270に対するアクセスを実行する。ストレージ装置210は、CM260によって、CM261が実行する処理を停止させることができる。ストレージ装置210は、例えば、CM260によって、CM261にキャンセルコマンドを出力することにより、CM261が実行する処理を停止させることができる。同様に、ストレージ装置210は、CM261によって、CM260が実行する処理を停止させることができる。
ここでは、アクセス制御装置100でミラーソフト230が動作する場合について説明したが、これに限らない。例えば、アクセス制御装置100でミラーソフト230が動作しない場合があってもよい。この場合、アプリケーションソフト220は、ミラーソフト230を介さずに、マルチパスドライバ120、または、マルチパスドライバ240にアクセス要求を出力する。
(ストレージシステム200の他の例)
次に、図3を用いて、図1に示したアクセス制御装置100を適用した、ストレージシステム200の他の例について説明する。以下、図3に示す要素のうち、図1に示す要素と同様の要素には、図1と同じ符号を付する場合がある。
図3は、ストレージシステム200の他の例を示す説明図である。図3の例では、ストレージシステム200は、アクセス制御装置100と、サーバ310と、ストレージ装置330とを含む。ストレージシステム200において、アクセス制御装置100と、ストレージ装置330とは、複数のパスによって接続される。また、ストレージシステム200において、サーバ310と、ストレージ装置330とは、パスによって接続される。
アクセス制御装置100は、マルチパスドライバ120を実行する。アクセス制御装置100は、HBA130と、HBA131とを有する。サーバ310は、HBA320を有する。ストレージ装置330は、CM340と、CM341と、CM342と、CM343と、記憶装置350とを有する。
マルチパスドライバ120は、ストレージ装置330が有する記憶装置350に対するアクセス要求を受け付け、HBA130とHBA131とを制御し、HBA130とHBA131とにアクセス命令を出力させることができる。
HBA130は、ストレージ装置330のCM340とパス360によって接続され、マルチパスドライバ120の制御にしたがってCM340にアクセス命令を出力することにより、記憶装置350に対するアクセスをCM340に実行させることができる。HBA130は、「WWN:A」が付されている。
HBA131は、ストレージ装置330のCM341とパス361によって接続され、マルチパスドライバ120の制御にしたがってCM341にアクセス命令を出力することにより、記憶装置350に対するアクセスをCM341に実行させることができる。HBA131は、「WWN:B」が付されている。
HBA320は、ストレージ装置330のCM340とパス370によって接続され、CM340にアクセス命令を出力することにより、記憶装置350に対するアクセスをCM340に実行させることができる。HBA320は、「WWN:C」が付されている。
CM340は、アクセス制御装置100のHBA130とパス360によって接続され、HBA130からアクセス命令を受け付け、記憶装置350に対するアクセスを実行する。CM340は、サーバ310のHBA320とパス370によって接続され、HBA320からアクセス命令を受け付け、記憶装置350に対するアクセスを実行する。CM341は、アクセス制御装置100のHBA131とパス361によって接続され、HBA131からアクセス命令を受け付け、記憶装置350に対するアクセスを実行する。
CM342は、アクセス命令を受け付けた場合に、記憶装置350に対するアクセスを実行する。CM343は、アクセス命令を受け付けた場合に、記憶装置350に対するアクセスを実行する。記憶装置350は、例えば、ディスクドライバである。記憶装置350は、例えば、SSDであってもよい。
アクセス制御装置100は、マルチパスドライバ120によって、アクセス要求を受け付けた場合、記憶装置350に対するアクセスを制御する。アクセス制御装置100は、例えば、サーバである。サーバ310は、アクセス要求を受け付けた場合、記憶装置350に対するアクセスを制御する。
ストレージ装置330は、HBA130またはHBA131からアクセス命令を受け付け、アクセス命令に応じて記憶装置350に対するアクセスを実行する。ストレージ装置330は、HBA320からアクセス命令を受け付け、アクセス命令に応じて記憶装置350に対するアクセスを実行する。
ストレージ装置330は、CM340によって、CM341、CM342、または、CM343が実行する処理を停止させることができる。ストレージ装置330は、例えば、CM340によって、CM341にキャンセルコマンドを出力することにより、CM341が実行する処理を停止させることができる。
同様に、ストレージ装置330は、CM341によって、CM340、CM342、または、CM343が実行する処理を停止させることができる。同様に、ストレージ装置330は、CM342によって、CM340、CM341、または、CM343が実行する処理を停止させることができる。同様に、ストレージ装置330は、CM343によって、CM340、CM341、または、CM342が実行する処理を停止させることができる。
(アクセス制御装置100のハードウェア構成例)
次に、図4を用いて、アクセス制御装置100のハードウェア構成例について説明する。
図4は、アクセス制御装置100のハードウェア構成例を示すブロック図である。図4において、アクセス制御装置100は、CPU(Central Processing Unit)401と、メモリ402と、ネットワークI/F(Interface)403と、ディスクドライブ404と、ディスク405と、記憶媒体I/F406と、ストレージI/F407とを有する。また、各構成部は、バス400によってそれぞれ接続される。
ここで、CPU401は、アクセス制御装置100の全体の制御を司る。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
ネットワークI/F403は、通信回線を通じてネットワークに接続され、ネットワークを介して他のコンピュータに接続される。そして、ネットワークI/F403は、ネットワークと内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403には、例えば、モデムやLANアダプタなどを採用することができる。
ディスクドライブ404は、CPU401の制御に従ってディスク405に対するデータのリード/ライトを制御する。ディスクドライブ404は、例えば、磁気ディスクドライブである。ディスク405は、ディスクドライブ404の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク405は、例えば、磁気ディスク、光ディスクなどである。
記憶媒体I/F406は、外部の記憶媒体に接続され、記憶媒体と内部のインターフェースを司り、記憶媒体からのデータの入出力を制御する。記憶媒体I/F406は、例えば、USB(Universal Serial Bus)コネクタである。記憶媒体は、例えば、半導体メモリである。ストレージI/F407は、ストレージ装置110に接続され、ストレージ装置110と内部のインターフェースを司り、ストレージ装置110からのデータの入出力を制御する。ストレージI/F407は、例えば、CM140やCM141である。
アクセス制御装置100は、上述した構成部のほか、例えば、SSD、半導体メモリ、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、アクセス制御装置100は、ディスクドライブ404およびディスク405の代わりに、SSDおよび半導体メモリなどを有していてもよい。
(接続情報テーブル500の記憶内容)
次に、図5を用いて、アクセス制御装置100が記憶する接続情報テーブル500の記憶内容の一例について説明する。接続情報テーブル500は、例えば、図4に示したメモリ402、ディスク405などの記憶領域によって実現される。
図5は、接続情報テーブル500の記憶内容の一例を示す説明図である。図5に示すように、接続情報テーブル500は、CM情報と、HBA情報とのフィールドを有する。接続情報テーブル500は、HBAごとに各フィールドに情報を設定することにより、接続情報がレコードとして記憶される。
CM情報のフィールドには、アクセス制御装置100が有するHBAと接続されるCMを識別する情報が設定される。HBA情報のフィールドには、アクセス制御装置100が有するHBAを識別する情報が設定される。これにより、接続情報テーブル500は、アクセス制御装置100とストレージ装置110との接続関係を示す接続情報を記憶することができる。
(アクセス制御装置100の機能的構成例)
次に、図6を用いて、アクセス制御装置100の機能的構成例について説明する。図6は、アクセス制御装置100の機能的構成例を示すブロック図である。アクセス制御装置100は、受付部601と、第1の出力部602と、停止指示部603と、第2の出力部604と、応答部605とを含む。
受付部601〜応答部605は、制御部となる機能である。受付部601〜応答部605は、具体的には、例えば、図4に示したメモリ402、ディスク405などの記憶装置150に記憶されたプログラムをCPU401に実行させることにより、または、各種I/F403,406,407により、その機能を実現する。各機能部の処理結果は、例えば、メモリ402、ディスク405などの記憶装置150に記憶される。
受付部601は、ストレージ装置110が有する記憶装置150に対するアクセス要求を受け付ける。受付部601は、例えば、アクセス制御装置100が実行するアプリケーションソフト220が出力したアクセス要求を受け付ける。受付部601は、例えば、ネットワークI/F403を介して、他のコンピュータからアクセス要求を受け付けてもよい。これにより、受付部601は、記憶装置150に対するアクセスを制御開始し、第1の出力部602にアクセス命令を出力させることができる。
第1の出力部602は、受付部601がアクセス要求を受け付けると、第1のパスを介して、記憶装置150に対するアクセス命令を出力する。第1のパスは、ストレージ装置110が有する複数の制御装置のうちの第1の制御装置とアクセス制御装置100とを接続するパスである。第1のパスは、例えば、図2に示したパス160である。制御装置は、ストレージ装置110において記憶装置150に対するアクセスを制御する装置である。制御装置は、例えば、CMである。制御装置は、具体的には、図2に示したCM140やCM141などである。制御装置は、具体的には、図3に示したCM340、CM341、CM342、CM343などであってもよい。
第1の出力部602は、例えば、HBA130とCM140とを接続するパス160を介して、HBA130からCM140へと記憶装置150に対するアクセス命令を出力させる。これにより、第1の出力部602は、制御装置に、記憶装置150に対するアクセスを実行させることができる。
第1の出力部602は、例えば、アクセス命令がダイレクトメモリアクセスを用いて記憶装置150にライトデータを書き込む命令であれば、パス160を介してアクセス命令を出力する前にライトデータを複製しておく。これにより、第2の出力部604は、第1の出力部602と同じアクセス命令を出力するときに、ダイレクトメモリアクセスによってライトデータが削除されていても、複製しておいたライトデータを用いることができる。
停止指示部603は、第1の出力部602がアクセス命令を出力した後、所定の時間が経過するまでに、第1の制御装置に対するアクセス命令に対する応答を受信したか否かを判定する。停止指示部603は、所定の時間が経過しても応答を受信しない場合に、第2のパスを介して、第2の制御装置に、第1の制御装置が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させる制御を行う。
ここで、停止指示部603は、少なくとも、第1の制御装置が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させればよい。停止指示部603は、第1の制御装置自体を停止させてもよいし、第1の制御装置の第1のパスにかかる処理を指定して停止させてもよい。第2のパスは、第2の制御装置とアクセス制御装置100とを接続するパスである。第2のパスは、例えば、図2に示したパス161である。第2の制御装置は、複数の制御装置のうちの第1の制御装置とは異なる装置である。
停止指示部603は、所定の時間として、第1の制御装置による記憶装置150へのアクセスが失敗したと判断する時間以下の時間を用いることが好ましい。停止指示部603は、例えば、所定の時間として、HBA130やHBA131がアクセス命令を出力した際にタイムアウトと判断する時間以下の時間を設定する。
停止指示部603は、例えば、第2のパスを介して停止命令を第2の制御装置に出力することにより、第2の制御装置に第1の制御装置が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させる。停止指示部603は、具体的には、HBA131とCM141とを接続するパス161を介して、CM141に停止指示を出力する。停止指示は、例えば、サーバのOSに依存せずに出力することができるSCSIコマンドとして実装される。停止指示は、後述するアクセス切替コマンドである。
これにより、停止指示部603は、CM141に、CM140が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させることができる。結果として、停止指示部603は、CM140の記憶装置150に対するアクセスと、CM141の記憶装置150に対するアクセスとが重複しないようにして、データ破壊を防止することができる。具体的には、停止指示部603は、CM141が記憶装置150に対するアクセスを複数実行した後に、CM141が既に実行済みのアクセスをCM140が再び実行してしまい、データ破壊が発生することを防止することができる。
停止指示部603は、例えば、第2のパスを介して第1の制御装置を示す情報を含む停止命令を第2の制御装置に出力することにより、第2の制御装置に第1の制御装置が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させてもよい。停止指示部603は、具体的には、接続情報テーブル500を参照してHBA130に接続されたCM340を識別する情報を取得する。そして、停止指示部603は、HBA131とCM341とを接続するパス361を介して、CM341に、CM340を識別する情報を含んだ停止指示を出力する。
これにより、停止指示部603は、CM341が、CM340、CM342、およびCM343のいずれを停止させればよいかを判定可能にすることができる。そして、停止指示部603は、CM341にCM340を停止させることにより、CM340が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させることができる。
停止指示部603は、例えば、第2のパスを介して第1のパスを示す情報を含む停止命令を第2の制御装置に出力することにより、第2の制御装置に第1の制御装置における第1のパスに関する処理を停止させる。停止指示部603は、具体的には、接続情報テーブル500を参照してHBA130に接続されたパス360を識別する情報を取得する。パスを識別する情報は、例えば、HBA130に付されたWWN:Aなどである。そして、停止指示部603は、HBA131とCM341とを接続するパス361を介して、CM341に、HBA130とCM340とを接続するパス360を識別する情報を含んだ停止指示を出力する。
これにより、停止指示部603は、CM341が、CM340に接続された複数のパスのいずれを介して実行される処理を停止させればよいかを判定可能にすることができる。そして、停止指示部603は、CM341にCM340がパス361を介して実行される処理を停止させることにより、CM340が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させることができる。一方で、停止指示部603は、CM340が実行する、サーバ310が出力したアクセス命令に応じた処理については、停止させないようにすることができる。
第2の出力部604は、第2の制御装置から、第1の制御装置が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させる制御への応答を受信した後に、第2のパスを介してアクセス命令を出力する。第2の出力部604は、例えば、CM141から、CM140が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させたことを示す通知を受け付けた後に、パス161を介してCM141にアクセス命令を出力する。これにより、第2の出力部604は、データ破壊を防止しつつ、CM141にアクセスを実行させることができる。
第2の出力部604は、第2の制御装置からアクセス命令に応じた処理を停止させる制御への応答を受信したことに応じて、複製しておいたライトデータに基づいて第2のパスを介してアクセス命令を出力してもよい。第2の出力部604は、例えば、CM141から、CM140が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させたことを示す通知を受け付ける。第2の出力部604は、通知を受け付けたことに応じて、パス161を介して、複製しておいたライトデータに基づいてCM141にアクセス命令を出力する。これにより、第2の出力部604は、第1の出力部602が出力したアクセス命令への応答を受信する前であっても、CM141にアクセス命令を実行させることができる。そして、第2の出力部604は、ダイレクトメモリアクセスによって複製元になったライトデータが削除されていても、複製しておいたライトデータを用いてCM141にアクセス命令を実行させることができる。
第2の出力部604は、第2の制御装置からアクセス命令に応じた処理を停止させる制御への応答を受信し、かつ、第1の制御装置に対するアクセス命令に対する応答を受信した後に、第2のパスを介してアクセス命令を出力する。第1の制御装置に対するアクセス命令に対する応答は、例えば、第1の制御装置がアクセス命令の処理を停止されたことに応じて出力したエラー応答である。第1の制御装置に対するアクセス命令に対する応答は、例えば、第1の制御装置へのアクセス命令の出力を制御するHBAが、第1の制御装置からの応答がないと判断したときに出力したエラー応答であってもよい。ま第1の制御装置に対するアクセス命令に対する応答は、例えば、第1の制御装置がアクセス命令の処理を停止される前に出力済みであった正常応答またはエラー応答であってもよい。
第2の出力部604は、例えば、CM141から、CM140が実行する、第1の出力部602が出力したアクセス命令に応じた処理を停止させたことを示す通知を受け付ける。第2の出力部604は、通知を受け付け、かつ、CM140に対するアクセス命令に対するエラー応答を受け付けた後に、パス161を介してCM141にアクセス命令を出力する。これにより、第2の出力部604は、ライトデータを複製しておかなくても、アクセス命令を出力することができる。
応答部605は、第1の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。応答部605は、例えば、CM140からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。
応答部605は、第1の制御装置からエラー応答を受信した場合であって、第2の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。応答部605は、例えば、CM140からアクセス命令へのエラー応答を受信し、CM141からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。
応答部605は、第1の制御装置から応答がないと判断した場合であって、第2の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。応答部605は、例えば、CM140からアクセス命令への応答がないと判断し、CM141からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。ここで、応答部605は、例えば、CM140にアクセス命令を出力してから予め設定された待機時間が経過したことに応じて、HBA130がCM140から応答がないと判断して出力したエラー応答に基づき、CM140から応答がないと判断する。
応答部605は、第1の制御装置に対するアクセス命令に対する応答を受信する前に、第2の制御装置から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力してもよい。応答部605は、例えば、CM140からアクセス命令への応答を受信する前に、CM141からアクセス命令への成功応答を受信した場合、アクセス要求の要求元に成功応答を出力する。
応答部605は、第1の制御装置からエラー応答を受信した場合であって、第2の制御装置からエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。応答部605は、例えば、CM140からアクセス命令へのエラー応答を受信し、CM141からアクセス命令へのエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。
応答部605は、第1の制御装置からエラー応答を受信した場合であって、第2の制御装置から応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。応答部605は、例えば、CM140からアクセス命令へのエラー応答を受信し、CM141からアクセス命令への応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。ここで、応答部605は、例えば、CM141にアクセス命令を出力してから予め設定された待機時間が経過したことに応じて、HBA131がCM141から応答がないと判断して出力したエラー応答に基づき、CM141から応答がないと判断する。
応答部605は、第1の制御装置から応答がないと判断した場合であって、第2の制御装置からエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。応答部605は、例えば、CM140からアクセス命令への応答がないと判断し、CM141からアクセス命令へのエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力する。
応答部605は、第1の制御装置から応答がないと判断した場合であって、第2の制御装置から応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。応答部605は、例えば、CM140からアクセス命令への応答がないと判断し、CM141からアクセス命令への応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力する。これにより、応答部605は、アクセス要求の要求元に応答するまでにかかる時間を増加しにくくすることができる。
以下の説明では、図2に示したストレージシステム200において、ストレージ装置110に対応するマルチパスドライバ120によって実現されるアクセス制御装置100の動作例について説明する。マルチパスドライバ240によって実現されるアクセス制御装置100の動作例は、マルチパスドライバ120によって実現されるアクセス制御装置100の動作例と同様であるため、説明を省略する。
(アクセス制御装置100の動作例1)
まず、アクセス制御装置100の動作例1について説明する。動作例1は、HBA130からアクセス命令を出力した後、アクセス命令への応答を受信する前であってもHBA131からアクセス命令を出力することが可能である場合の一例である。
これによれば、アクセス制御装置100は、HBA130からアクセス命令を出力した後、HBA131からアクセス命令を出力するまでにかかる時間を小さくし、記憶装置150へのアクセスにかかる時間を増加しにくくすることができる。
(動作例1における複数の動作パターンの一例)
まず、図7を用いて、動作例1における複数の動作パターンの一例について説明する。
図7は、動作例1における複数の動作パターンの一例を示す説明図である。上述したように、アクセス制御装置100は、記憶装置150に対するアクセス要求を受け付けると、HBA130とCM140とを接続するパス160を介して、記憶装置150に対するアクセス命令を出力する。
その後、アクセス制御装置100は、アクセス命令を出力してから所定の時間が経過してもCM140から応答を受信しない場合、パス161を介して、CM141にCM140が実行するアクセス命令に応じた処理を停止させるアクセス切替コマンドを出力する。アクセス切替コマンドは、上述した停止指示に対応し、サーバのOSに依存せずに出力することができるSCSIコマンドとして実装される。
そして、アクセス制御装置100は、CM140が実行するアクセス命令に応じた処理が停止されると、HBA131とCM141とを接続するパス161を介してアクセス命令を出力し、CM141からアクセス命令に対する応答を受信する。アクセス命令は、例えば、アクセス切替コマンドに含まれてもよい。
ここで、アクセス制御装置100の動作パターンは、パス160を介して受信する応答の種類と、パス161を介して受信する応答の種類と、パス160とパス161とから応答を受信する順番とに応じて、異なるパターンになる。そこで、図7に示す表700を用いて、動作例1における第1の動作パターン〜第9の動作パターンについて説明する。
第1の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介して正常応答を受信し、かつ、パス161を介して正常応答を受信した場合における動作パターンである。第1の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。
第2の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介してエラー応答を受信し、かつ、パス161を介して正常応答を受信した場合における動作パターンである。第2の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。
第3の動作パターンは、アクセス制御装置100が、パス160を介して応答がないと判断し、かつ、パス161を介して正常応答を受信した場合における動作パターンである。第3の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。
第4の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介して正常応答を受信し、かつ、パス161を介してエラー応答を受信した場合における動作パターンである。第4の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。
第5の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介してエラー応答を受信し、かつ、パス161を介してエラー応答を受信した場合における動作パターンである。第5の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。
第6の動作パターンは、アクセス制御装置100が、パス160を介して応答がないと判断し、かつ、パス161を介してエラー応答を受信した場合における動作パターンである。第6の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。
第7の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介して正常応答を受信し、かつ、パス161を介して応答がないと判断した場合における動作パターンである。第7の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。第7の動作パターンでは、アクセス制御装置100は、マルチパスドライバ120によってアクセス要求の要求元に正常応答を出力する前に、ミラーソフト230によってミラーリングを解除する。具体的には、ミラーソフト230は、上述した待機時間が経過したため、ミラーリングを解除する。
第8の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介してエラー応答を受信し、かつ、パス161を介して応答がないと判断した場合における動作パターンである。第8の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。また、第8の動作パターンでは、アクセス制御装置100は、マルチパスドライバ120によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト230によってミラーリングを解除する。具体的には、ミラーソフト230は、上述した待機時間が経過したため、ミラーリングを解除する。
第9の動作パターンは、アクセス制御装置100が、パス160を介して応答がないと判断し、かつ、パス161を介して応答がないと判断した場合における動作パターンである。第9の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。また、第9の動作パターンでは、アクセス制御装置100は、マルチパスドライバ120によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト230によってミラーリングを解除する。具体的には、ミラーソフト230は、上述した待機時間が経過したため、ミラーリングを解除する。
(動作例1における第1の動作パターンの具体例)
次に、図8を用いて、図7に示した動作例1における第1の動作パターンの具体例について説明する。
図8は、動作例1における第1の動作パターンの具体例を示す説明図である。図8の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(8−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(8−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信するが、所定の時間が経過しておりパス160やCM140が故障している可能性があるため、パス160をオフラインに設定してもよい。
これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。また、アクセス制御装置100は、次回のアクセス命令からはパス161を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
(8−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(8−4)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(8−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、CM140からアクセス命令に対する正常応答を受信し、CM141からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
ここでは、アクセス制御装置100が、パス161を介してCM141にアクセス命令を出力する場合について説明したが、これに限らない。例えば、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信しているため、パス161を介してCM141にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力してもよい。
ここでは、アクセス制御装置100が、パス160をオフラインに設定する場合について説明したが、これに限らない。例えば、アクセス制御装置100は、パス160をオフラインに設定せずに、パス160を介してCM140からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力してもよい。この場合、アクセス制御装置100は、(8−3)〜(8−5)の動作を行わなくてもよい。
(動作例1における第2の動作パターンの具体例)
次に、図9を用いて、図7に示した動作例1における第2の動作パターンの具体例について説明する。
図9は、動作例1における第2の動作パターンの具体例を示す説明図である。図9の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(9−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(9−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、パス160を介してCM140からアクセス命令に対するエラー応答を受信しているため、パス160をオフラインに設定してもよい。
これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。また、アクセス制御装置100は、次回のアクセス命令からはパス161を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
(9−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(9−4)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(9−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、CM141からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
(動作例1における第3の動作パターンの具体例)
次に、図10を用いて、図7に示した動作例1における第3の動作パターンの具体例について説明する。
図10は、動作例1における第3の動作パターンの具体例を示す説明図である。図10の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(10−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス要求に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(10−2)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。また、CM141は、CM140が故障している場合、CM140の処理はすでに停止しているため、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信してもよい。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(10−3)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(10−4)アクセス制御装置100は、パス160を介してCM140から、CM141によってCM140の処理が停止させられたことによるエラー応答を受信する。アクセス制御装置100は、CM140またはパス160が故障している場合は、パス160を介してCM140から応答がないため、HBA130からアクセス命令に対するエラー応答を受信する。ここで、アクセス制御装置100は、パス160をオフラインに設定してもよい。
これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。また、アクセス制御装置100は、次回のアクセス命令からはパス161を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
(10−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、CM141からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
ここでは、アクセス制御装置100が、(10−3)の動作の後に、(10−4)の動作を行う場合について説明したが、これに限らない。例えば、アクセス制御装置100は、(10−4)の動作の後に、(10−3)の動作を行う場合があってもよい。
(動作例1における第4の動作パターンの具体例)
次に、図11を用いて、図7に示した動作例1における第4の動作パターンの具体例について説明する。
図11は、動作例1における第4の動作パターンの具体例を示す説明図である。図11の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(11−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(11−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信するが、所定の時間が経過しておりパス160やCM140が故障している可能性があるため、パス160をオフラインに設定してもよい。これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。
(11−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(11−4)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(11−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
ここでは、アクセス制御装置100が、パス161を介してCM141にアクセス命令を出力する場合について説明したが、これに限らない。例えば、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信しているため、パス161を介してCM141にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力してもよい。
(動作例1における第5の動作パターンの具体例)
次に、図12を用いて、図7に示した動作例1における第5の動作パターンの具体例について説明する。
図12は、動作例1における第5の動作パターンの具体例を示す説明図である。図12の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(12−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(12−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対するエラー応答を受信する。
(12−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(12−4)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(12−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、CM141からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
(動作例1における第6の動作パターンの具体例)
次に、図13を用いて、図7に示した動作例1における第6の動作パターンの具体例について説明する。
図13は、動作例1における第6の動作パターンの具体例を示す説明図である。図13の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(13−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(13−2)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。また、CM141は、CM140が故障している場合、CM140の処理はすでに停止しているため、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信してもよい。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(13−3)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(13−4)アクセス制御装置100は、パス160を介してCM140から、CM141によってCM140の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140またはパス160が故障している場合は、パス160を介してCM140から応答がないため、HBA130からアクセス命令に対するエラー応答を受信する。
(13−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、CM141からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
ここでは、アクセス制御装置100が、(13−3)の動作の後に、(13−4)の動作を行う場合について説明したが、これに限らない。例えば、アクセス制御装置100は、(13−4)の動作の後に、(13−3)の動作を行う場合があってもよい。
(動作例1における第7の動作パターンの具体例)
次に、図14を用いて、図7に示した動作例1における第7の動作パターンの具体例について説明する。
図14は、動作例1における第7の動作パターンの具体例を示す説明図である。図14の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(14−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(14−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信するが、所定の時間が経過しておりパス160やCM140が故障している可能性があるため、パス160をオフラインに設定してもよい。これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。
(14−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(14−4)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(14−5)アクセス制御装置100は、HBA131がパス161を介してCM141から応答がないと判断したため、HBA131からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、HBA131からアクセス命令に対するエラー応答を受信しているため、パス161をオフラインに設定してもよい。これにより、アクセス制御装置100は、故障の可能性があるパス161やCM141を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。
(14−6)アクセス制御装置100は、CM140からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
ここでは、アクセス制御装置100が、パス161を介してCM141にアクセス命令を出力する場合について説明したが、これに限らない。例えば、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信しているため、パス161を介してCM141にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力してもよい。この場合、アクセス制御装置100は、ミラーソフト230によってミラーリングを解除されない。
ここでは、アクセス制御装置100が、パス160をオフラインに設定する場合について説明したが、これに限らない。例えば、アクセス制御装置100は、パス160をオフラインに設定せずに、パス160を介してCM140からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力してもよい。この場合、アクセス制御装置100は、(14−3)〜(14−5)の動作を行わなくてもよい。
(動作例1における第8の動作パターンの具体例)
次に、図15を用いて、図7に示した動作例1における第8の動作パターンの具体例について説明する。
図15は、動作例1における第8の動作パターンの具体例を示す説明図である。図15の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(15−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(15−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対するエラー応答を受信する。
(15−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(15−4)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(15−5)アクセス制御装置100は、HBA131がパス161を介してCM141から応答がないと判断したため、HBA131からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、HBA131からアクセス命令に対するエラー応答を受信しているため、パス161をオフラインに設定してもよい。これにより、アクセス制御装置100は、故障の可能性があるパス161やCM141を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。
(15−6)アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、HBA131からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
(動作例1における第9の動作パターンの具体例)
次に、図16を用いて、図7に示した動作例1における第9の動作パターンの具体例について説明する。
図16は、動作例1における第9の動作パターンの具体例を示す説明図である。図16の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(16−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(16−2)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。また、CM141は、CM140が故障している場合、CM140の処理はすでに停止しているため、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信してもよい。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(16−3)アクセス制御装置100は、CM140の処理が停止したため、パス160を介してCM140からアクセス命令に対する応答を受信したか否かにかかわらず、パス161を介してCM141にアクセス命令を出力する。
(16−4)アクセス制御装置100は、パス160を介してCM140から、CM141によってCM140の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140またはパス160が故障している場合は、パス160を介してCM140から応答がないため、HBA130からアクセス命令に対するエラー応答を受信する。
(16−5)アクセス制御装置100は、HBA131がパス161を介してCM141から応答がないと判断したため、HBA131からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、パス161を介してCM141からアクセス命令に対するエラー応答を受信しているため、パス161をオフラインに設定してもよい。これにより、アクセス制御装置100は、故障の可能性があるパス161やCM141を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。
(16−6)アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、HBA131からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
これにより、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待たなくても、アクセス切替コマンドによってデータ破壊を防止しつつ、パス161を介してCM141にアクセス命令を出力することができる。このため、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待つ時間を低減し、アクセスにかかる時間の低減化を図り、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
ここでは、アクセス制御装置100が、(16−3)の動作の後に、(16−4)の動作を行う場合について説明したが、これに限らない。例えば、アクセス制御装置100は、(16−4)の動作の後に、(16−3)の動作を行う場合があってもよい。
(動作例1にかかる初期化処理手順の一例)
次に、図17を用いて、動作例1にかかる初期化処理手順の一例について説明する。
図17は、動作例1にかかる初期化処理手順の一例を示すフローチャートである。図17において、アクセス制御装置100は、キャンセルコマンドを試行する(ステップS1701)。次に、アクセス制御装置100は、キャンセルコマンドへの正常応答があったか否かを判定する(ステップS1702)。ここで、キャンセルコマンドへの正常応答がない場合(ステップS1702:No)、アクセス制御装置100は、第2世代サポートフラグをオフに設定し(ステップS1703)、初期化処理を終了する。
一方で、キャンセルコマンドへの正常応答があった場合(ステップS1702:Yes)、アクセス制御装置100は、第2世代サポートフラグをオンに設定し(ステップS1704)、初期化処理を終了する。
(動作例1にかかるアクセス処理手順の一例)
次に、図18および図19を用いて、動作例1にかかるアクセス処理手順の一例について説明する。
図18および図19は、動作例1にかかるアクセス処理手順の一例を示すフローチャートである。図18において、アクセス制御装置100は、アクセス要求を受け付ける(ステップS1801)。アクセス制御装置100は、1パス目にアクセス命令を出力する(ステップS1802)。アクセス制御装置100は、1パス目にアクセス命令を出力してから経過した時間を計測する(ステップS1803)。
アクセス制御装置100は、1パス目にアクセス命令を出力してから所定の時間が経過する前に1パス目からアクセス命令への応答があったか否かを判定する(ステップS1804)。ここで、1パス目からアクセス命令への応答があった場合(ステップS1804:Yes)、アクセス制御装置100は、1パス目のアクセス命令への応答が、正常応答であるか否かを判定する(ステップS1805)。ここで、正常応答である場合(ステップS1805:Yes)、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力し(ステップS1806)、アクセス処理を終了する。
一方で、正常応答ではない場合(ステップS1805:No)、アクセス制御装置100は、2パス目にアクセス命令を出力する(ステップS1807)。次に、アクセス制御装置100は、2パス目からアクセス命令への正常応答があったか否かを判定する(ステップS1808)。ここで、2パス目からアクセス命令への正常応答があった場合(ステップS1808:Yes)、アクセス制御装置100は、ステップS1806の処理に移行する。
一方で、2パス目からアクセス命令への正常応答がない場合(ステップS1808:No)、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力し(ステップS1809)、アクセス処理を終了する。
また、ステップS1804にて、1パス目からアクセス命令への応答がない場合(ステップS1804:No)、アクセス制御装置100は、第2世代サポートフラグがオンであるか否かを判定する(ステップS1810)。ここで、第2世代サポートフラグがオンである場合(ステップS1810:Yes)、アクセス制御装置100は、第2世代のアクセス処理を実行し(ステップS1811)、アクセス処理を終了する。
一方で、第2世代サポートフラグがオフである場合(ステップS1810:No)、アクセス制御装置100は、図19のステップS1901の処理に移行する。
図19において、アクセス制御装置100は、2パス目に、引数に1パス目のwwnとCMを示す情報を設定したアクセス切替コマンドを出力する(ステップS1901)。次に、アクセス制御装置100は、ライトであるか否かを判定する(ステップS1902)。ここで、ライトである場合(ステップS1902:Yes)、アクセス制御装置100は、ライトデータを複製し(ステップS1903)、ステップS1904の処理に移行する。
一方で、ライトではない場合(ステップS1902:No)、アクセス制御装置100は、1パス目からアクセス命令への正常応答があったか否かを判定する(ステップS1904)。1パス目からアクセス命令への正常応答があった場合(ステップS1904:Yes)、アクセス制御装置100は、複製したライトデータを破棄する(ステップS1905)。次に、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力し(ステップS1906)、アクセス処理を終了する。
一方で、1パス目からアクセス命令への正常応答がない場合(ステップS1904:No)、アクセス制御装置100は、2パス目からアクセス切替コマンドへの応答があったか否かを判定する(ステップS1907)。ここで、2パス目からアクセス切替コマンドへの応答がない場合(ステップS1907:No)、アクセス制御装置100は、ステップS1907の処理に戻る。
一方で、2パス目からアクセス切替コマンドへの応答があった場合(ステップS1907:Yes)、アクセス制御装置100は、2パス目にアクセス命令を出力する(ステップS1908)。次に、アクセス制御装置100は、2パス目からアクセス命令への応答を受け付ける(ステップS1909)。
そして、アクセス制御装置100は、2パス目のアクセス命令への応答が、正常応答であるか否かを判定する(ステップS1910)。ここで、正常応答である場合(ステップS1910:Yes)、アクセス制御装置100は、1パス目のアクセス命令への応答があるか、または、キャンセルが終了したかを判定する(ステップS1911)。ここで、1パス目のアクセス命令への応答がなく、かつ、キャンセルが終了していない場合(ステップS1911:No)、アクセス制御装置100は、ステップS1911の処理に戻る。
一方で、1パス目のアクセス命令への応答がある場合、または、キャンセルが終了した場合(ステップS1911:Yes)、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力し(ステップS1912)、アクセス処理を終了する。
また、ステップS1910にて、正常応答ではない場合(ステップS1910:No)、アクセス制御装置100は、1パス目のアクセス命令への応答があるか、または、キャンセルが終了したかを判定する(ステップS1913)。ここで、1パス目のアクセス命令への応答がなく、かつ、キャンセルが終了していない場合(ステップS1913:No)、アクセス制御装置100は、ステップS1913の処理に戻る。
一方で、1パス目のアクセス命令への応答がある場合、または、キャンセルが終了した場合(ステップS1913:Yes)、アクセス制御装置100は、1パス目のアクセス命令への応答が、正常応答であるか否かを判定する(ステップS1914)。ここで、正常応答ではない場合(ステップS1914:No)、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力し(ステップS1915)、アクセス処理を終了する。
一方で、正常応答である場合(ステップS1914:Yes)、アクセス制御装置100は、ステップS1912の処理に移行する。
(動作例1にかかるキャンセル処理手順の一例)
次に、図20を用いて、動作例1にかかるキャンセル処理手順の一例について説明する。
図20は、動作例1にかかるキャンセル処理手順の一例を示すフローチャートである。図20において、ストレージ装置110は、切替先のCMによって、アクセス切替コマンドを受け付ける(ステップS2001)。次に、ストレージ装置110は、切替先のCMによって、アクセス切替コマンドの引数から切替元のCMを示す情報を取得する(ステップS2002)。
そして、ストレージ装置110は、切替先のCMによって、切替元のCMが動作しているか否かを判定する(ステップS2003)。ここで、動作していない場合(ステップS2003:No)、ストレージ装置110は、切替先のCMによって、アクセス制御装置100に正常応答を出力し(ステップS2004)、キャンセル処理を終了する。
一方で、動作している場合(ステップS2003:Yes)、ストレージ装置110は、切替先のCMによって、アクセス切替コマンドを切替元のCMに出力する(ステップS2005)。次に、ストレージ装置110は、切替元のCMによって、アクセス切替コマンドの引数からキャンセル対象のパスを示す情報を取得する(ステップS2006)。そして、ストレージ装置110は、切替元のCMによって、キャンセル対象のパスについてキャンセルコマンドを実行する(ステップS2007)。
次に、ストレージ装置110は、切替元のCMによって、キャンセル対象のパスについて処理中のデータを削除し、削除したことを切替先のCMに出力する(ステップS2008)。そして、ストレージ装置110は、切替先のCMによって、アクセス制御装置100に正常応答を出力し(ステップS2009)、キャンセル処理を終了する。
(アクセス制御装置100の動作例2)
次に、アクセス制御装置100の動作例2について説明する。動作例1は、上述したように、HBA130からアクセス命令を出力した後、アクセス命令への応答を受信する前であってもHBA131からアクセス命令を出力することが可能である場合の一例である。これに対し、動作例2は、HBA130からアクセス命令を出力した後、アクセス命令への応答を受信してから、HBA131からアクセス命令を出力する場合の一例である。これによれば、アクセス制御装置100は、データを複製しなくてもよくなる。
(動作例2における複数の動作パターンの一例)
まず、図21を用いて、動作例2における複数の動作パターンの一例について説明する。
図21は、動作例2における複数の動作パターンの一例を示す説明図である。上述したように、アクセス制御装置100は、記憶装置150に対するアクセス要求を受け付けると、HBA130とCM140とを接続するパス160を介して、記憶装置150に対するアクセス命令を出力する。
その後、アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過するまでに、アクセス命令に対する応答を受信したか否かを判定する。アクセス制御装置100は、所定の時間が経過してもアクセス命令に対する応答を受信しなかった場合、パス161を介して、CM141にCM140が実行するアクセス命令に応じた処理を停止させるアクセス切替コマンドを出力する。
そして、アクセス制御装置100は、CM140からアクセス命令に対する応答を受信し、かつ、CM140が実行するアクセス命令に応じた処理が停止されると、パス161を介してアクセス命令を出力し、CM141からアクセス命令に対する応答を受信する。
ここで、アクセス制御装置100の動作パターンは、パス160を介して受信する応答の種類と、パス161を介して受信する応答の種類と、パス160とパス161とから応答を受信する順番とに応じて、異なる動作パターンになる。そこで、図21に示す表2100を用いて、動作例2における第1の動作パターン〜第7の動作パターンについて説明する。
第1の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介して正常応答を受信した場合における動作パターンである。第1の動作パターンでは、アクセス制御装置100は、パス161を介してCM141にアクセス命令を出力せずに、アクセス要求の要求元に正常応答を出力する。
第2の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介してエラー応答を受信し、かつ、パス161を介して正常応答を受信した場合における動作パターンである。第2の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。
第3の動作パターンは、アクセス制御装置100が、パス160を介して応答がないと判断し、かつ、パス161を介して正常応答を受信した場合における動作パターンである。第3の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力する。
第4の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介してエラー応答を受信し、かつ、パス161を介してエラー応答を受信した場合における動作パターンである。第4の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。
第5の動作パターンは、アクセス制御装置100が、パス160を介して応答がないと判断し、かつ、パス161を介してエラー応答を受信した場合における動作パターンである。第5の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。
第6の動作パターンは、アクセス制御装置100が、アクセス切替コマンドへの応答を受信する前に入れ違いでパス160を介してエラー応答を受信し、かつ、パス161を介して応答がないと判断した場合における動作パターンである。第6の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。また、第6の動作パターンでは、アクセス制御装置100は、マルチパスドライバ120によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト230によってミラーリングを解除する。具体的には、ミラーソフト230は、上述した待機時間が経過したため、ミラーリングを解除する。
第7の動作パターンは、アクセス制御装置100が、パス160を介して応答がないと判断し、かつ、パス161を介して応答がないと判断した場合における動作パターンである。第7の動作パターンでは、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力する。また、第7の動作パターンでは、アクセス制御装置100は、マルチパスドライバ120によってアクセス要求の要求元にエラー応答を出力する前に、ミラーソフト230によってミラーリングを解除する。具体的には、ミラーソフト230は、上述した待機時間が経過したため、ミラーリングを解除する。
(動作例2における第1の動作パターンの具体例)
次に、図22を用いて、図21に示した動作例2における第1の動作パターンの具体例について説明する。
図22は、動作例2における第1の動作パターンの具体例を示す説明図である。図22の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(22−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(22−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する正常応答を受信したため、パス160をオフラインに設定しない。
(22−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させる。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(22−4)アクセス制御装置100は、CM140からアクセス命令に対する正常応答を受信しているため、パス161を介してCM141にアクセス命令を出力せず、アクセス要求の要求元に正常応答を出力する。
ここでは、アクセス制御装置100が、パス160をオフラインに設定しない場合について説明したが、これに限らない。例えば、アクセス制御装置100は、パス160を介してアクセス命令を出力してから所定の時間が経過しており、パス160やCM140が故障している可能性があるため、パス160をオフラインに設定してもよい。
そして、アクセス制御装置100は、次回のアクセス命令については、パス161を介して出力するようにしてもよい。これにより、アクセス制御装置100は、次回のアクセス命令からは、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。
(動作例2における第2の動作パターンの具体例)
次に、図23を用いて、図21に示した動作例2における第2の動作パターンの具体例について説明する。
図23は、動作例2における第2の動作パターンの具体例を示す説明図である。図23の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(23−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(23−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、パス160を介してCM140からアクセス命令に対するエラー応答を受信しているため、パス160をオフラインに設定してもよい。
これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。また、アクセス制御装置100は、次回のアクセス命令からはパス161を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
(23−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(23−4)アクセス制御装置100は、CM140の処理が停止し、かつ、パス160を介してCM140からアクセス命令に対する応答を受信しているため、パス161を介してCM141にアクセス命令を出力する。
(23−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、CM141からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
(動作例2における第3の動作パターンの具体例)
次に、図24を用いて、図21に示した動作例2における第3の動作パターンの具体例について説明する。
図24は、動作例2における第3の動作パターンの具体例を示す説明図である。図24の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(24−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(24−2)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。また、CM141は、CM140が故障している場合、CM140の処理はすでに停止しているため、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信してもよい。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(24−3)アクセス制御装置100は、パス160を介してCM140から、CM141によってCM140の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140またはパス160が故障している場合は、パス160を介してCM140から応答がないため、HBA130からアクセス命令に対するエラー応答を受信する。ここで、アクセス制御装置100は、パス160をオフラインに設定してもよい。
これにより、アクセス制御装置100は、故障の可能性があるパス160やCM140を用いないようにして、ストレージシステム200の信頼性の向上を図ることができる。また、アクセス制御装置100は、次回のアクセス命令からはパス161を介して出力することができ、次回のアクセス命令にかかる時間の低減化を図ることができる。
(24−4)アクセス制御装置100は、CM140の処理が停止し、かつ、パス160を介してCM140からアクセス命令に対する応答を受信しているため、パス161を介してCM141にアクセス命令を出力する。
(24−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対する正常応答を受信する。アクセス制御装置100は、CM141からアクセス命令に対する正常応答を受信しているため、アクセス要求の要求元に正常応答を出力する。
これにより、アクセス制御装置100は、CM140が能動的にエラー応答を出力するよりも前に、CM140の処理を停止させ、CM140の処理が停止させられたことによるアクセス命令に対するエラー応答をCM140から受信することができる場合がある。結果として、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待っていても、アクセス切替コマンドによってデータ破壊を防止しつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
(動作例2における第4の動作パターンの具体例)
次に、図25を用いて、図21に示した動作例2における第4の動作パターンの具体例について説明する。
図25は、動作例2における第4の動作パターンの具体例を示す説明図である。図25の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(25−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(25−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対するエラー応答を受信する。
(25−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(25−4)アクセス制御装置100は、CM140の処理が停止し、かつ、パス160を介してCM140からアクセス命令に対する応答を受信しているため、パス161を介してCM141にアクセス命令を出力する。
(25−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、CM141からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
(動作例2における第5の動作パターンの具体例)
次に、図26を用いて、図21に示した動作例2における第5の動作パターンの具体例について説明する。
図26は、動作例2における第5の動作パターンの具体例を示す説明図である。図26の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(26−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(26−2)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。また、CM141は、CM140が故障している場合、CM140の処理はすでに停止しているため、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信してもよい。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(26−3)アクセス制御装置100は、パス160を介してCM140から、CM141によってCM140の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140またはパス160が故障している場合は、パス160を介してCM140から応答がないため、HBA130からアクセス命令に対するエラー応答を受信する。
(26−4)アクセス制御装置100は、CM140の処理が停止し、かつ、パス160を介してCM140からアクセス命令に対する応答を受信しているため、パス161を介してCM141にアクセス命令を出力する。
(26−5)アクセス制御装置100は、パス161を介してCM141からアクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、CM141からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
これにより、アクセス制御装置100は、CM140が能動的にエラー応答を出力するよりも前に、CM140の処理を停止させ、CM140の処理が停止させられたことによるアクセス命令に対するエラー応答をCM140から受信することができる場合がある。結果として、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待っていても、アクセス切替コマンドによってデータ破壊を防止しつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
(動作例2における第6の動作パターンの具体例)
次に、図27を用いて、図21に示した動作例2における第6の動作パターンの具体例について説明する。
図27は、動作例2における第6の動作パターンの具体例を示す説明図である。図27の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(27−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(27−2)アクセス制御装置100は、アクセス切替コマンドへの応答を受信する前に、入れ違いでパス160を介してCM140からアクセス命令に対するエラー応答を受信する。
(27−3)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(27−4)アクセス制御装置100は、CM140の処理が停止し、かつ、パス160を介してCM140からアクセス命令に対する応答を受信しているため、パス161を介してCM141にアクセス命令を出力する。
(27−5)アクセス制御装置100は、HBA131がパス161を介してCM141から応答がないと判断したため、HBA131からアクセス命令に対するエラー応答を受信する。
(27−6)アクセス制御装置100は、CM140からアクセス命令に対するエラー応答を受信し、HBA131からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
(動作例2における第7の動作パターンの具体例)
次に、図28を用いて、図21に示した動作例2における第7の動作パターンの具体例について説明する。
図28は、動作例2における第7の動作パターンの具体例を示す説明図である。図28の例では、アクセス制御装置100は、アクセス命令が記憶装置150にライトデータを書き込む命令であればライトデータを複製したうえで、パス160を介してCM140にアクセス命令を出力したとする。
(28−1)アクセス制御装置100は、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過しても、アクセス命令に対する応答を受信しなかったため、パス161を介してCM141にアクセス切替コマンドを出力する。
(28−2)CM141は、アクセス切替コマンドに応じてCM140の処理を停止させ、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信する。また、CM141は、CM140が故障している場合、CM140の処理はすでに停止しているため、CM140の処理を停止させたことを示す通知をアクセス制御装置100に送信してもよい。アクセス制御装置100は、パス161を介してCM141から、CM140の処理を停止させたことを示す通知を受信する。
(28−3)アクセス制御装置100は、パス160を介してCM140から、CM141によってCM140の処理が停止させられたことによる、アクセス命令に対するエラー応答を受信する。アクセス制御装置100は、CM140またはパス160が故障している場合は、パス160を介してCM140から応答がないため、HBA130からアクセス命令に対するエラー応答を受信する。
(28−4)アクセス制御装置100は、CM140の処理が停止し、かつ、パス160を介してCM140からアクセス命令に対する応答を受信しているため、パス161を介してCM141にアクセス命令を出力する。
(28−5)アクセス制御装置100は、HBA131がパス161を介してCM141から応答がないと判断したため、HBA131からアクセス命令に対するエラー応答を受信する。
(28−6)アクセス制御装置100は、HBA130からアクセス命令に対するエラー応答を受信し、HBA131からアクセス命令に対するエラー応答を受信しているため、アクセス要求の要求元にエラー応答を出力する。
これにより、アクセス制御装置100は、CM140が能動的にエラー応答を出力するよりも前に、CM140の処理を停止させ、CM140の処理が停止させられたことによるアクセス命令に対するエラー応答をCM140から受信することができる場合がある。結果として、アクセス制御装置100は、パス160を介してCM140からアクセス命令に対する応答を待っていても、アクセス切替コマンドによってデータ破壊を防止しつつ、アクセス要求の要求元に応答するまでにかかる時間の増大化を抑制することができる。
(動作例2にかかる初期化処理手順の一例)
動作例2にかかる初期化処理手順の一例は、図17に示した動作例1にかかる初期化処理手順の一例と同様であるため、説明を省略する。
(動作例2にかかるアクセス処理手順の一例)
次に、図29を用いて、動作例2にかかるアクセス処理手順の一例について説明する。
図29は、動作例2にかかるアクセス処理手順の一例を示すフローチャートである。アクセス制御装置100は、図18に示した動作例1にかかるアクセス処理手順の一例のステップS1801〜S1811の処理と同様の処理を行い、図29のステップS2901の処理に移行する。
図29において、アクセス制御装置100は、2パス目に、引数に1パス目のwwnとCMを示す情報を設定したアクセス切替コマンドを出力する(ステップS2901)。次に、アクセス制御装置100は、1パス目からアクセス命令への正常応答があったか否かを判定する(ステップS2902)。1パス目からアクセス命令への正常応答があった場合(ステップS2902:Yes)、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力し(ステップS2903)、アクセス処理を終了する。
一方で、1パス目からアクセス命令への正常応答がない場合(ステップS2902:No)、アクセス制御装置100は、2パス目からアクセス切替コマンドへの応答があったか否かを判定する(ステップS2904)。ここで、2パス目からアクセス切替コマンドへの応答がない場合(ステップS2904:No)、アクセス制御装置100は、ステップS2904の処理に戻る。
一方で、2パス目からアクセス切替コマンドへの応答があった場合(ステップS2904:Yes)、アクセス制御装置100は、1パス目に対するアクセス命令への応答があったか否かを判定する(ステップS2905)。当該応答は、例えば、アクセス切替コマンドに基づき、1パス目に接続されたCMが、アクセス命令の処理を停止されたことに応じて出力したエラー応答である。
また、当該応答は、1パス目に接続されたCMまたは1パス目が故障しているため、1パス目へのアクセス命令の出力を制御するHBAから出力されたエラー応答であってもよい。また、当該応答は、ステップS2902の時点ではマルチパスドライバに未到達であったが、1パス目に接続されたCMがアクセス命令の処理を停止される前に出力済みであった正常応答またはエラー応答であってもよい。
ここで、1パス目に対するアクセス命令への応答がない場合(ステップS2905:No)、アクセス制御装置100は、ステップS2905の処理に移行する。一方で、1パス目に対するアクセス命令への応答があった場合(ステップS2905:Yes)、アクセス制御装置100は、2パス目にアクセス命令を出力する(ステップS2906)。次に、アクセス制御装置100は、2パス目からアクセス命令への応答を受け付ける(ステップS2907)。
そして、アクセス制御装置100は、2パス目のアクセス命令への応答が、正常応答であるか否かを判定する(ステップS2908)。ここで、正常応答である場合(ステップS2908:Yes)、アクセス制御装置100は、アクセス要求の要求元に正常応答を出力し(ステップS2909)、アクセス処理を終了する。
また、ステップS2908にて、正常応答ではない場合(ステップS2908:No)、アクセス制御装置100は、1パス目のアクセス命令への応答が、正常応答であるか否かを判定する(ステップS2910)。ここで、正常応答ではない場合(ステップS2910:No)、アクセス制御装置100は、アクセス要求の要求元にエラー応答を出力し(ステップS2911)、アクセス処理を終了する。
一方で、正常応答である場合(ステップS2910:Yes)、アクセス制御装置100は、ステップS2909の処理に移行する。
(動作例2にかかるキャンセル処理手順の一例)
動作例2にかかるキャンセル処理手順の一例は、図20に示した動作例1にかかるキャンセル処理手順の一例と同様であるため、説明を省略する。
以上説明したように、アクセス制御装置100によれば、記憶装置150に対するアクセス要求を受け付けると、CM140と接続するパス160を介して、記憶装置150に対するアクセス命令を出力することができる。また、アクセス制御装置100によれば、パス160を介してCM140にアクセス命令を出力してから所定の時間が経過するまでに、アクセス命令に対する応答を受信したか否かを判定することができる。また、アクセス制御装置100によれば、所定の時間が経過してもアクセス命令に対する応答を受信しない場合に、CM141と接続するパス161を介して、CM141にCM140が実行するアクセス命令に応じた処理を停止させる制御を行うことができる。また、アクセス制御装置100によれば、CM141から、アクセス命令に応じた処理を停止させる制御に対応する応答を受信した後に、パス161を介してアクセス命令を出力することができる。
これにより、アクセス制御装置100は、HBA130から応答を受信する前であっても、CM141に、CM140が実行するアクセス命令に応じた処理を停止させることができる。結果として、アクセス制御装置100は、アクセス要求の要求元に応答を出力するまでにかかる時間を低減しやすくすることができる。また、アクセス制御装置100は、CM140の記憶装置150に対するアクセスと、CM141の記憶装置150に対するアクセスとが重複しないようにして、データ破壊を防止することができる。
また、アクセス制御装置100によれば、パス160を介してアクセス命令を出力する前にライトデータを複製しておくことができる。また、アクセス制御装置100によれば、CM141から応答を受信したことに応じて、複製しておいたライトデータに基づいてパス161を介してアクセス命令を出力することができる。これにより、アクセス制御装置100は、パス160を介して出力したアクセス命令への応答を受信する前であっても、パス161を介してアクセス命令を出力することができ、CM141にアクセス命令を実行させることができる。また、アクセス制御装置100は、ダイレクトメモリアクセスによって複製元になったライトデータが削除されていても、複製しておいたライトデータを用いてパス161を介してアクセス命令を出力することができる。
また、アクセス制御装置100によれば、CM141から応答を受信し、かつ、CM140から応答を受信した後に、パス161を介してアクセス命令を出力することができる。これにより、アクセス制御装置100は、ライトデータを複製しておかなくても、パス161を介してアクセス命令を出力することができ、メモリ402の使用量を低減しやすくすることができる。
また、アクセス制御装置100によれば、CM140から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力することができる。これにより、アクセス制御装置100は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
また、アクセス制御装置100によれば、CM140からエラー応答を受信した場合、または、CM140から応答がないと判断した場合であって、CM141から成功応答を受信した場合、アクセス要求の要求元に成功応答を出力することができる。これにより、アクセス制御装置100は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
また、アクセス制御装置100によれば、CM140からエラー応答を受信した場合、または、CM140から応答がないと判断した場合であって、CM141からエラー応答を受信した場合、アクセス要求の要求元にエラー応答を出力することができる。これにより、アクセス制御装置100は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
また、アクセス制御装置100によれば、CM140からエラー応答を受信した場合、または、CM140から応答がないと判断した場合であって、CM141から応答がないと判断した場合、アクセス要求の要求元にエラー応答を出力することができる。これにより、アクセス制御装置100は、アクセス要求の要求元に応答するまでにかかる時間が増加しにくくすることができる。
また、アクセス制御装置100によれば、パス161を介してCM140を示す情報を含む停止命令をCM141に出力することにより、CM141にCM140が実行するアクセス命令に応じた処理を停止させることができる。これにより、アクセス制御装置100は、CM141が、ストレージ装置110が有するいずれのCMを停止させればよいかを判定可能にすることができる。
また、アクセス制御装置100によれば、パス161を介してパス160を示す情報を含む停止命令をCM141に出力することにより、CM141にCM140におけるパス160に関する処理を停止させることができる。これにより、アクセス制御装置100は、CM141が、CM140に接続された複数のパスのいずれを介して実行される処理を停止させればよいかを判定可能にすることができる。
また、アクセス制御装置100によれば、所定の時間として、CM140による記憶装置150へのアクセスが失敗したと判断する時間以下の時間を用いることができる。これにより、アクセス制御装置100は、アクセス要求の要求元に応答を出力するまでにかかる時間を低減しやすくすることができる。
なお、本実施の形態で説明したアクセス制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本アクセス制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本アクセス制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第1の制御装置に対して第1のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第1の制御装置に対する前記アクセス命令に対する応答を受信しない場合に、前記複数の制御装置のうちの前記第1の制御装置とは異なる第2の制御装置と接続する第2のパスを利用して前記第2の制御装置に前記第1の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第2の制御装置に対する前記制御に対応する応答を受信した後に、前記第2のパスを介して前記アクセス命令を出力する、
制御部を有することを特徴とするアクセス制御装置。
(付記2)前記アクセス命令は、ダイレクトメモリアクセスを用いて前記記憶装置にライトデータを書き込む命令であって、
前記制御部は、
前記第1のパスを介して前記アクセス命令を出力する前に前記ライトデータを複製しておき、
前記第2の制御装置に対する前記制御に対応する応答を受信したことに応じて、複製しておいた前記ライトデータに基づいて前記第2のパスを介して前記アクセス命令を出力する、ことを特徴とする付記1に記載のアクセス制御装置。
(付記3)前記制御部は、
前記第2の制御装置に対する前記制御に対応する応答を受信し、かつ、前記第1の制御装置に対する前記アクセス命令に対するエラー応答を受信した後に、前記第2のパスを介して前記アクセス命令を出力する、ことを特徴とする付記1に記載のアクセス制御装置。
(付記4)前記制御部は、
前記第1の制御装置に対する前記アクセス命令に対する成功応答を受信した場合、前記アクセス要求の要求元に成功応答を出力する、ことを特徴とする付記1〜3のいずれか一つに記載のアクセス制御装置。
(付記5)前記制御部は、
前記第1の制御装置に対する前記アクセス命令に対するエラー応答を受信した場合であって、前記第2の制御装置に対する前記アクセス命令に対する成功応答を受信した場合、前記アクセス要求の要求元に成功応答を出力する、ことを特徴とする付記1〜4のいずれか一つに記載のアクセス制御装置。
(付記6)前記制御部は、
前記第1の制御装置に対する前記アクセス命令に対するエラー応答を受信した場合であって、前記第2の制御装置に対する前記アクセス命令に対するエラー応答を受信した場合、前記アクセス要求の要求元にエラー応答を出力する、ことを特徴とする付記1〜5のいずれか一つに記載のアクセス制御装置。
(付記7)前記制御部は、
前記第2のパスを介して前記第1の制御装置を示す情報を含む停止命令を前記第2の制御装置に出力することにより、前記第2の制御装置に前記第1の制御装置が実行する前記アクセス命令に応じた処理を停止させる、ことを特徴とする付記1〜6のいずれか一つに記載のアクセス制御装置。
(付記8)前記制御部は、
前記第2のパスを介して前記第1のパスを示す情報を含む停止命令を前記第2の制御装置に出力することにより、前記第2の制御装置に前記第1の制御装置における前記第1のパスに関する処理を停止させる、ことを特徴とする付記1〜7のいずれか一つに記載のアクセス制御装置。
(付記9)前記所定の時間は、前記第1の制御装置による前記記憶装置へのアクセスが失敗したと判断する時間以下である、ことを特徴とする付記1〜8のいずれか一つに記載のアクセス制御装置。
(付記10)コンピュータが、
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第1の制御装置に対して第1のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第1の制御装置に対する前記アクセス命令に対する応答を受信しない場合に、前記複数の制御装置のうちの前記第1の制御装置とは異なる第2の制御装置と接続する第2のパスを利用して前記第2の制御装置に前記第1の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第2の制御装置に対する前記制御に対応する応答を受信した後に、前記第2のパスを介して前記アクセス命令を出力する、
処理を実行することを特徴とするアクセス制御方法。
(付記11)コンピュータに、
ストレージ装置が有する記憶装置に対するアクセス要求の受け付けに基づいて、前記記憶装置を制御する複数の制御装置のうちの第1の制御装置に対して第1のパスを介して前記記憶装置に対するアクセス命令を出力し、
前記アクセス命令を出力した後所定の時間が経過しても前記第1の制御装置に対する前記アクセス命令に対応する応答を受信しない場合に、前記複数の制御装置のうちの前記第1の制御装置とは異なる第2の制御装置と接続する第2のパスを利用して前記第2の制御装置に前記第1の制御装置が実行する前記アクセス命令に応じた処理を停止させる制御を行い、
前記第2の制御装置に対する前記制御に対応する応答を受信した後に、前記第2のパスを介して前記アクセス命令を出力する、
処理を実行させることを特徴とするアクセス制御プログラム。