(57)【特許請求の範囲】
【請求項１】
自装置に接続されたデバイスに含まれる監視対象部の状態を監視し、前記監視対象部の異常を検知する状態監視手段と、
前記監視対象部の異常が検知されたとき、
前記デバイスに対してリセットを要求するリセット要求手段と、
前記リセットを要求した後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視し、
前記ステータス情報において、
前記デバイスが起動状態となったことを表す情報である起動ステータス、および、前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスをそれぞれ検知し、
復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知するステータス検出手段と、
前記起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新する接続情報設定手段と
を含む情報処理装置。
【請求項２】
自装置と前記デバイスとのデータの受け渡しを介在する共有メモリをさらに含み、
前記接続情報は、前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報である
請求項１記載の情報処理装置。
【請求項３】
前記監視対象部の異常が検知された後、前記リセットを要求する前に前記デバイスに対して未発行の入出力（ＩＯ）要求の内容を一時保存データとして記憶し、前記復帰済みステータスが検知された後、前記一時保存データに記憶した前記未発行のＩＯ要求の内容に基づいて入出力要求を前記デバイスに対して発行するＩＯキューイング手段をさらに含む
請求項１または２記載の情報処理装置。
【請求項４】
前記監視対象部の異常が検知された後、前記リセットを要求する前にＩＯ要求の発行元に対して、それ以降のＩＯ要求の発行を停止することを要求し、前記復帰済みステータスが検知された後、停止した前記ＩＯ要求の発行の再開を要求するＩＯ停止制御手段をさらに含む
請求項１乃至３のいずれか１つに記載の情報処理装置。
【請求項５】
自デバイスに含まれる所定の各部の電源を制御する電源制御手段と、
自デバイスが接続された情報処理装置からリセットが要求されたことを検知したとき、前記電源制御手段を介して、自デバイスに含まれる所定の各部をハードウェアリセット（ＨＷリセット）するリセット手段と、
自装置において、前記ＨＷリセット後における所定の起動処理が行われたことを検知し、自装置に含まれる、前記情報処理装置と自装置との双方から読み書き可能な記憶装置に記憶されるステータス情報を、起動状態であることを表す情報である起動ステータスによって更新するステータス監視手段と、
前記起動ステータスによる更新が行われた後、前記ステータス情報を監視し、前記情報処理装置との接続の再開に使用される情報である接続情報が、前記記憶装置に書き込まれたことを表す情報である接続情報設定済みステータスが検知されたとき、少なくとも前記接続情報が取得されたことを所定の方法で通知し、通常の処理に復帰できる状態になったことを表す情報である復帰済みステータスによって前記ステータス情報を更新する接続情報取得手段と
を含むデバイス。
【請求項６】
前記接続情報は、前記情報処理装置に含まれる記憶装置である共有メモリにおいて、前記情報処理装置と自デバイスとのデータの受け渡しに使用される前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報であり、
前記記憶装置における前記接続情報が書き込まれる部分は、レジスタの一つであるベースアドレスレジスタである
請求項５記載のデバイス。
【請求項７】
前記起動処理が行われたことを検知した後、前記ステータス情報を前記起動ステータスによって更新する前に、入出力処理が未完了なデータが一時的に記憶されたデータである一時保存データに対して、前記入出力処理を完了する復帰処理手段をさらに含む
請求項５または６記載のデバイス。
【請求項８】
情報処理装置によって、
自装置に接続されたデバイスに含まれる監視対象部の状態を監視し、
前記監視対象部の異常が検知されたとき、
前記デバイスに対してリセットを要求し、
前記リセットを要求した後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視し、
前記ステータス情報において、前記デバイスが起動状態となったことを表す情報である起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新し、
前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知する
復旧方法。
【請求項９】
自装置に接続されたデバイスに含まれる監視対象部の状態を監視する状態監視処理と、
前記監視対象部の異常が検知されたとき、前記デバイスに対してリセットを要求するリセット要求処理と、
前記リセット要求処理後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視するステータス検出処理と、
前記ステータス検出処理において、前記デバイスが起動状態となったことを表す情報である起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新する接続情報設定処理と、
前記ステータス検出処理において、前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知する復帰通知処理と
をコンピュータに実行させる第１のコンピュータ・プログラム。
【請求項１０】
自デバイスが接続された情報処理装置からリセットが要求されたことを検知したとき、
自デバイスに含まれる所定の各部の電源を制御する電源制御手段を介して、自デバイスに含まれる所定の各部をハードウェアリセット（ＨＷリセット）するリセット処理と、
前記リセット処理後、自装置において所定の起動処理が行われたことを検知したとき、
自装置に含まれる、前記情報処理装置と自装置との双方から読み書き可能な記憶装置に記憶されるステータス情報を、起動状態であることを表す情報である起動ステータスによって更新するステータス監視処理と、
前記ステータス情報を監視し、前記情報処理装置との接続の再開に使用される情報である接続情報が、前記記憶装置に書き込まれたことを表す情報である接続情報設定済みステータスが検知されたとき、少なくとも前記接続情報が取得されたことを所定の方法で通知し、通常の処理に復帰できる状態になったことを表す情報である復帰済みステータスによって前記ステータス情報を更新する接続情報取得処理と
をコンピュータに実行させる第２のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置（コンピュータ）と、共有メモリを介して情報の入出力を行うデバイスを復旧する技術に関する。
【背景技術】
【０００２】
ディスクアレイコントローラなどのデバイスにおいて異常が検出された場合の復旧方法として、ディスクアレイコントローラの一部または全部をリセットする方法が一般的に知られている。
【０００３】
関連技術として、特許文献１には、二重化されたＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）コントローラを備えるＲＡＩＤ装置が開示されている。この特許文献１に記載されたＲＡＩＤ装置においては、両系のＲＡＩＤコントローラがともに停止すると、これを検出した監視制御部が、両系のＲＡＩＤコントローラの電源オフ、オン処理を実行する。このＲＡＩＤ装置は、このようにしてＲＡＩＤコントローラを再起動させることにより、ハードウェア異常によるＲＡＩＤコントローラの停止から復旧することができる。
【０００４】
また、特許文献２には、二重化されたファイバチャネルループで接続されるディスク装置において発生した障害を回避するディスクアレイ装置が開示されている。この特許文献２に記載されたディスクアレイ装置においては、障害が発生した場合、システムコントローラは、増設のドライブ筐体のリセットまたは電源オフにより、障害が発生したドライブを完全に停止させる。これによって、このディスクアレイ装置は、障害が発生したドライブコントローラの誤動作を防止することにより、システムへの障害の影響を抑制することができる。
【０００５】
また、特許文献３には、ディスクドライブの障害率を低減するディスクアレイ装置が開示されている。この特許文献３に記載されたディスクアレイ装置は、障害が発生したディスクドライブに対して制御コマンドのリトライを行っても障害が回復しない場合に、そのディスクドライブをハードリセットすることにより、さらなる障害回復を図る回路を備える。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２０６２３９号公報
【特許文献２】特開２００５−２２２３７９号公報
【特許文献３】特開２００６−３３８６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１乃至３に開示されたＲＡＩＤ装置またはディスクアレイ装置においては、これらの装置が異常から回復したとしても、これらの装置に接続される上位ホストが、運用を継続できないという問題がある。異常の回復後、上位ホストが運用を継続するには、これらの再起動された装置を再認識し、これらの装置との通信を再開する必要がある。しかしながら、これらの装置は、再起動後に上位ホストとの間の連絡に関して、何も考慮されていない。したがって、上位ホストは、これらの再起動された装置と再接続するために、上位ホスト自身も再起動（電源オフ、オン）を行わなければならないという問題があると考えられる。
【０００８】
本発明の一つの目的は、自装置の再起動なしに、異常から復旧したデバイスと再接続することにより運用を継続できる情報処理装置などを提供することにある。
【課題を解決するための手段】
【０００９】
上記の目的を達成すべく、本発明の一態様に係る情報処理装置は、以下の構成を備えることを特徴とする。
【００１０】
すなわち、本発明の一態様に係る情報処理装置は、
自装置に接続されたデバイスに含まれる監視対象部の状態を監視し、前記監視対象部の異常を検知する状態監視手段と、
前記監視対象部の異常が検知されたとき、
前記デバイスに対してリセットを要求するリセット要求手段と、
前記リセットを要求した後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視し、
前記ステータス情報において、
前記デバイスが起動状態となったことを表す情報である起動ステータス、および、前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスをそれぞれ検知し、
復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知するステータス検出手段と、
前記起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新する接続情報設定手段と
を含む。
【００１１】
また、上記の同目的を達成すべく、本発明の一態様に係るデバイスは、
自デバイスに含まれる所定の各部の電源を制御する電源制御手段と、
自デバイスが接続された情報処理装置からリセットが要求されたことを検知したとき、前記電源制御手段を介して、自デバイスに含まれる所定の各部をハードウェアリセット（ＨＷリセット）するリセット手段と、
自装置において、前記ＨＷリセット後における所定の起動処理が行われたことを検知し、自装置に含まれる、前記情報処理装置と自装置との双方から読み書き可能な記憶装置に記憶されるステータス情報を、起動状態であることを表す情報である起動ステータスによって更新するステータス監視手段と、
前記起動ステータスによる更新が行われた後、前記ステータス情報を監視し、前記情報処理装置との接続の再開に使用される情報である接続情報が、前記記憶装置に書き込まれたことを表す情報である接続情報設定済みステータスが検知されたとき、少なくとも前記接続情報が取得されたことを所定の方法で通知し、通常の処理に復帰できる状態になったことを表す情報である復帰済みステータスによって前記ステータス情報を更新する接続情報取得手段と
を含む。
【００１２】
また、上記の同目的を達成すべく、本発明の一態様に係る復旧方法は、情報処理装置によって、
自装置に接続されたデバイスに含まれる監視対象部の状態を監視し、
前記監視対象部の異常が検知されたとき、
前記デバイスに対してリセットを要求し、
前記リセットを要求した後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視し、
前記ステータス情報において、前記デバイスが起動状態となったことを表す情報である起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新し、
前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知する。
【００１３】
また、同目的は、上記の各構成を有する情報処理装置、デバイス、並びに対応する方法を、それぞれ（←装置等が複数ある場合）コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１４】
本発明には、異常から復旧したデバイスと再接続することにより、上位ホストである情報処理装置を再起動することなく運用を継続できるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係る情報システムの構成を示すブロック図である。
【図２】第１の実施形態において情報処理装置１およびデバイス２０が行う動作を示すフローチャートである。
【図３】本発明の第２の実施形態に係るディスクアレイシステムの構成を示すブロック図である。
【図４】第２の実施形態において本体装置１００およびディスクアレイコントローラ２００が行う動作を示すフローチャートである。
【図５】第２の実施形態の変形例において、本体装置１００およびディスクアレイコントローラ２００が行う動作を示すフローチャートである。
【図６】本発明の各実施形態、および、その変形例に係る情報システムおよびディスクアレイシステムに適用可能なコンピュータ（情報処理装置）の構成を例示する図である。
【発明を実施するための形態】
【００１６】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【００１７】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る情報システムの構成を示すブロック図である。図１を参照すると、本実施形態に係る情報システムは、情報処理装置１、および、情報処理装置１に接続されるデバイス２０を含む。
【００１８】
情報処理装置１およびデバイス２０は、各種バス、ファイバチャネル、またはＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の通信ネットワークを介して、互いに通信可能に接続される。
【００１９】
情報処理装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：図示せず）を用いて実行されるコンピュータ・プログラム（ソフトウェア・プログラム）の制御により動作する一般的な情報処理装置（コンピュータ）によって構成されても良い。または、情報処理装置１の各部が、専用のハードウェアデバイス、または論理回路によって構成されても良い。なお、情報処理装置１をコンピュータによって実現したハードウェア構成例については、図６を参照して後述する。
【００２０】
デバイス２０は、プロセッサ（ＩＯ（ＩｎｐｕｔＯｕｔｐｕｔ）プロセッサ：図示せず）を用いて実行されるコンピュータ・プログラム（ソフトウェア・プログラム、またはファームウェア・プログラム）の制御により動作する情報処理装置（デバイス）によって構成されてもよい。または、デバイス２０の各部は、専用のハードウェアデバイス、または論理回路によって構成されても良い。
【００２１】
情報処理装置１は、状態監視部３、リセット要求部４、ステータス検出部５、接続情報設定部６および第１の記憶装置１０を含む。第１の記憶装置１０は、接続情報１１を記憶することができる。第１の記憶装置１０は、例えば、半導体メモリ装置、またはディスク装置などにより実現される。
【００２２】
状態監視部３は、情報処理装置１に接続されたデバイス２０に含まれる監視対象部２１の状態を監視し、監視対象部２１の異常を検知することができる。
【００２３】
リセット要求部４は、監視対象部２１の異常が検知されたとき、デバイス２０に対してリセットを要求する。
【００２４】
ステータス検出部５は、リセットが要求された後、デバイス２０に含まれる第２の記憶装置４０に記憶されるステータス情報４１を監視する。第２の記憶装置４０は、デバイス２０と情報処理装置１との双方から読み書き可能なメモリである。ステータス検出部５は、ステータス情報４１において、デバイス２０が起動処理を行ったことを表す情報である「起動」ステータスを検知することができる。また、ステータス検出部５は、ステータス情報４１において、デバイス２０がリセットから復帰できる状態になったことを表す情報である「復帰済み」ステータスを検知することができる。「復帰済み」ステータスを検知した場合、ステータス検出部５は、通常の処理を再開可能であることを、所定の方法によって通知する。ステータス検出部５は、例えば、デバイス２０の監視対象部２１に対して入出力などの要求を発行する制御部２などに対して、通常の処理を再開可能であることを通知してもよい。
【００２５】
接続情報設定部６は、ステータス情報４１において「起動」ステータスが検知されたとき、デバイス２０において情報処理装置１との接続再開に使用される情報である接続情報１１を、デバイス２０に含まれる第２の記憶装置４０に書き込む。なお、接続情報１１は、第１の記憶装置１０にあらかじめ記憶されている。また、第２の記憶装置４０に書き込まれた接続情報１１は、区別のため、接続情報４２と称する。そして、接続情報設定部６は、接続情報１１（接続情報４２）の書き込みを行ったことを表す「接続情報設定済み」ステータスによって、ステータス情報４１を更新する。
【００２６】
デバイス２０は、ステータス監視部２２、接続情報取得部２３、リセット部３０、および第２の記憶装置４０を含む。リセット部３０は、リセット制御部３１、および電源制御部３２を含む。第２の記憶装置４０は、ステータス情報４１、および接続情報４２を記憶することができる。第２の記憶装置４０は、例えば、半導体メモリ装置、ディスク装置、論理回路などにより実現される。なお、第２の記憶装置４０は、ステータス情報４１と接続情報４２とをそれぞれ記憶する２つに分かれた記憶装置によって実現してもよい。
【００２７】
リセット制御部３１は、情報処理装置１からリセットが要求されたことを検知したとき、電源制御部３２を介して、デバイス２０に含まれる所定の各部（ＨＷリセットされる範囲）をハードウェアリセット（ＨＷリセット）する。
【００２８】
電源制御部３２は、上述した所定の各部（ＨＷリセットされる範囲）の電源を制御することができる。リセット部３０自身の電源は、例えば、情報処理装置１に含まれる電源制御部７など、電源制御部３２以外の電源から供給してもよい。なお、電源制御部７は、情報処理装置１以外の図示しない装置、または、デバイス２０などにあってもよい。
【００２９】
ステータス監視部２２は、デバイス２０において、ＨＷリセット後における所定の起動処理が行われたことを検知する。そして、ステータス監視部２２は、情報処理装置１とデバイス２０との双方から読み書き可能な記憶装置である第２の記憶装置４０に記憶されるステータス情報４１を、起動状態であることを表す情報である「起動」ステータスによって更新する。
【００３０】
接続情報取得部２３は、ステータス監視部２２によって「起動」ステータスによる更新が行われた後、ステータス情報４１を監視する。接続情報取得部２３は、ステータス情報４１において、「接続情報設定済み」ステータスが検知されたとき、少なくとも接続情報４２が取得されたことを、所定の方法で通知する。このとき、接続情報取得部２３は、通知と共に接続情報４２を、所定の各部に渡してもよい。そして、接続情報取得部２３は、通常の処理に復帰できる状態になったことを表す情報である「復帰済み」ステータスによってステータス情報４１を更新する。
【００３１】
次に、図２を参照して、上述した構成を備える本実施形態の動作について詳細に説明する。図２は、第１の実施形態において情報処理装置１およびデバイス２０が行う動作を示すフローチャートである。
【００３２】
以下の動作の前に、情報処理装置１における第１の記憶装置１０には、接続情報１１があらかじめ記憶されている前提とする。接続情報１１は、例えば、デバイス２０の監視対象部２１との間で入出力を行う制御部２などが、正常に処理を行っている間に、第１の記憶装置１０に記憶しておくことができる。
【００３３】
まず、情報処理装置１において、状態監視部３が、監視対象部２１の異常を検知する（ステップＡ１０）。状態監視部３は、図示しないバスなどの経路を通して、監視対象部２１の異常を直接検知してもよい。または、状態監視部３は、例えば、デバイス２０の監視対象部２１に対して入出力などの要求を発行する制御部２などの動作を監視してもよい。そして、状態監視部３は、デバイス２０から制御部２に対する応答の状態（無応答、遅延、エラー応答、または異常な応答内容など）に基づいて、監視対象部２１の異常を間接的に検知してもよい。
【００３４】
状態監視部３が異常を検出した場合、リセット要求部４が、デバイス２０に対してリセットを要求する（ステップＡ１１）。この後、情報処理装置１では、ステータス検出部５が、デバイス２０の第２の記憶装置４０に記憶されたステータス情報４１を監視する。
【００３５】
リセットを要求されたデバイス２０では、リセット制御部３１が、情報処理装置１からリセットが要求されたことを検知する（ステップＢ２０）。
【００３６】
次に、リセット制御部３１は、電源制御部３２を介して、デバイス２０に含まれる所定の各部（ＨＷリセットされる範囲）のハードウェアリセット（ＨＷリセット）を実行する（ステップＢ２１）。ＨＷリセットされる範囲は、例えば、デバイス２０に含まれるリセット部３０を除く各部であってもよい。または、ＨＷリセットされる範囲は、例えば、監視対象部２１、および第２の記憶装置４０であってもよい。一般に、ＨＷリセットされる範囲が広い方が、デバイス２０が異常状態から回復できる可能性が高まる。
【００３７】
ＨＷリセットが実行されると、図示しないローダなどによって、ＨＷリセットされた範囲の起動処理が実行される。起動処理とは、例えば、機能部のロード、および記憶装置に記憶された情報の初期化などを含む。起動処理が行われた（終了した）後、監視対象部２１（またはデバイス２０）は「起動状態」とみなされる。
【００３８】
ステータス監視部２２は、ＨＷリセットの実行後、監視対象部２１の状態を監視する。そして、ステータス監視部２２は、所定の起動処理が行われたことを検知する（ステップＢ２２）。
【００３９】
次に、ステータス監視部２２は、「起動」ステータスによってステータス情報４１を更新する（ステップＢ２３）。この後、デバイス２０では、接続情報取得部２３がステータス情報４１を監視する。
【００４０】
情報処理装置１においては、ステータス検出部５が、ステータス情報４１において、「起動」ステータスを検知する（ステップＡ１２）。
【００４１】
「起動」ステータスが検知されると、接続情報設定部６が、第１の記憶装置１０に記憶された接続情報１１を、デバイス２０に含まれる第２の記憶装置４０に書き込む（ステップＡ１３）。上述した通り、第２の記憶装置４０に書き込まれた接続情報１１の内容は、接続情報４２と呼ぶ。
【００４２】
接続情報設定部６は、「接続情報設定済み」ステータスによって、ステータス情報４１を更新する（ステップＡ１４）。この後、情報処理装置１では、ステータス検出部５が、ステータス情報４１を監視する。
【００４３】
デバイス２０においては、接続情報取得部２３が、ステータス情報４１において、「接続情報設定済み」ステータスを検知する（ステップＢ２４）。
【００４４】
「接続情報設定済み」ステータスが検知されると、接続情報取得部２３は、少なくとも接続情報４２が取得されたことを、所定の方法で通知する。例えば、接続情報取得部２３は、接続情報４２が取得されたことを、監視対象部２１などの所定の各部に通知してもよい。通知を受けた監視対象部２１などの各部は、第２の記憶装置４０に記憶された接続情報４２を使用して、情報処理装置１との接続を再開する準備が整う。
【００４５】
次に、接続情報取得部２３は、「復帰済み」ステータスによってステータス情報４１を更新する（ステップＢ２５）。
【００４６】
情報処理装置１においては、ステータス検出部５が、ステータス情報４１において、「復帰済み」ステータスを検知する（ステップＡ１５）。ステータス検出部５は、例えば、制御部２などに対して、デバイス２０との間で行う通常の処理が再開可能であることを通知する。通知を受けた制御部２は、接続情報１１を使用して、デバイス２０との接続を再開する。このようにして、情報処理装置１およびデバイス２０は、まずお互いを再接続し、その後、通常の処理を再開することができる。
【００４７】
以上説明したように、本実施形態によれば、情報処理装置１の再起動なしに、異常から復旧したデバイス２０と再接続することにより運用を継続できる情報処理装置１を提供することができるという効果がある。
【００４８】
その理由は、デバイス２０のステータス監視部２２が、ＨＷリセット後に、デバイス２０が起動状態になったことを、ステータス情報４１を介して、情報処理装置１のステータス検出部５に対して伝えるからである。それから、情報処理装置１の接続情報設定部６が、接続情報１１（接続情報４２）を、第２の記憶装置４０を介して、デバイス２０の接続情報取得部２３に対して与えるからである。すなわち、情報処理装置１は、ＨＷリセットによって接続情報４２の内容を失ったデバイス２０に対して、第２の記憶装置４０を介して、接続情報１１（接続情報４２）を与えることができる。その結果として、情報処理装置１は、自身を再起動させることなく、接続情報１１を使用して、デバイス２０との接続を再開させることが可能となる。
【００４９】
また、本実施形態には、デバイス２０の監視対象部２１が動作できない（フリーズした状態になった）場合にも、リセット処理を実行することができるという効果がある。
【００５０】
その理由は、デバイス２０の外にある情報処理装置１の状態監視部３が、監視対象部２１の異常を検知することができるからである。そして、リセット要求部４を介して、デバイス２０に対してリセットを要求することができるからである。また、デバイス２０では、リセット制御部３１が、電源制御によって、所定の範囲の各部をＨＷリセットすることができるからである。また、リセット部３０が、監視対象部２１とは別系統の電源によって動作できる場合、監視対象部２１の異常の影響を受けずに、ＨＷリセットを実行できる可能性が高いという効果も期待できる。
【００５１】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする第２の実施形態について説明する。以下では、第２の実施形態に係る特徴的な部分を中心に説明し、第１の実施形態と同様な構成を有する第２の実施形態の構成要素には、第１の実施形態で付した参照符号と同一の参照符号を付し、その構成要素について重複する詳細な説明は省略する。
【００５２】
まず、図３を参照して、以下に本実施形態の構成を説明する。図３は、本発明の第２の実施形態に係るディスクアレイシステムの構成を示すブロック図である。本実施形態は、一例として、ディスクアレイシステムに本発明を適用した事例である。
【００５３】
図３を参照すると、本実施形態に係るディスクアレイシステムは、本体装置（情報処理装置）１００、ディスクアレイコントローラ２００、および、複数の物理デバイス２８０を含む。本体装置１００は、第１の実施形態における情報処理装置１を基本とする。ディスクアレイコントローラ２００は、第１の実施形態におけるデバイス２０を基本とする。
【００５４】
本体装置１００およびディスクアレイコントローラ２００は、各種バス、ファイバチャネル、またはＬＡＮ等の通信ネットワークを介して、互いに通信可能に接続される。複数の物理デバイス２８０は、各種バス、ファイバチャネル、またはＬＡＮ等の通信ネットワークを介して、ディスクアレイコントローラ２００と互いに通信可能に接続される。本体装置１００は、ディスクアレイコントローラ２００を介して、各物理デバイス２８０に対するデータの入出力（ＩＯ）要求の発行すること、および、ＩＯ要求に対する応答を、各物理デバイス２８０から受け取ることが可能である。
【００５５】
本体装置１００は、ＣＰＵ（図示せず）を用いて実行されるコンピュータ・プログラム（ソフトウェア・プログラム）の制御により動作する一般的な情報処理装置（コンピュータ）によって構成されても良い。または、本体装置１００の各部が、専用のハードウェアデバイス、または論理回路によって構成されても良い。なお、本体装置１００をコンピュータによって実現したハードウェア構成例については、図６を参照して後述する。
【００５６】
ディスクアレイコントローラ２００は、プロセッサ（ＩＯプロセッサ）を用いて実行されるコンピュータ・プログラム（ソフトウェア・プログラム、またはファームウェア・プログラム）の制御により動作する情報処理装置（デバイス）によって構成されてもよい。または、ディスクアレイコントローラ２００の各部は、専用のハードウェアデバイス、または論理回路によって構成されても良い。
【００５７】
各物理デバイス２８０は、半導体メモリ装置、またはハードディスク装置などにより実現される。
【００５８】
本体装置１００は、装置電源制御部１０７、装置メモリ１１０、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１３０を含む。装置メモリ１１０は、ベースアドレス情報１１１、および一時保存データ１１２を記憶することができる。ＯＳ１３０は、ドライバ１２０、およびＩＯ制御部１３１を含む。ドライバ１２０は、状態監視部３、リセット要求部４、ステータス検出部５、接続情報設定部６、ドライバ制御部１０２、本体装置メモリ制御部１２１、ＩＯ停止制御部１２２、およびＩＯキューイング部１２３を含む。
【００５９】
本実施形態の本体装置１００は、ベースアドレス設定部１０６、装置電源制御部１０７、ＯＳ１３０に含まれるＩＯ制御部１３１、ドライバ１２０に含まれるドライバ制御部１０２、ＩＯ停止制御部１２２、およびＩＯキューイング部１２３、および本体装置メモリ制御部１２１を含む点が、第１の実施形態の情報処理装置１と異なる。
【００６０】
ベースアドレス設定部１０６は、第１の実施形態における接続情報設定部６を基本とする。ベースアドレス設定部１０６は、第１の実施形態における接続情報１１に替えて、装置メモリ１１０に記憶されるベースアドレス情報１１１を、ディスクアレイコントローラ２００に含まれるベースアドレスレジスタ２４２に書き込む。ベースアドレス設定部１０６の構成と内容は、上述した点以外は、第１の実施形態における接続情報設定部６と同様であるので、重複する詳細な説明は省略する。ベースアドレスレジスタ２４２の詳細は、ディスクアレイコントローラ２００の説明において、後述する。
【００６１】
本実施形態におけるベースアドレス情報１１１は、第１の実施形態における接続情報１１の一例である。本実施形態において、ドライバ１２０とＲＡＩＤコントローラ２５０（ディスクアレイコントローラ２００）との間の通信は、本体装置１００に含まれる共有するメモリ空間（共有メモリ：図示せず）に対して、一方から置かれたデータを、他方から引き取ることによって実現される。ベースアドレス情報１１１は、共有するメモリ空間の範囲を示すアドレスの情報を含む。すなわち、ベースアドレス情報１１１は、本体装置１００とディスクアレイコントローラ２００とのデータの受け渡しに使用される共有メモリの範囲を示すアドレスの情報である。したがって、ドライバ１２０およびＲＡＩＤコントローラ２５０のどちらか一方でもベースアドレス情報１１１を失った場合、ドライバ１２０とＲＡＩＤコントローラ２５０とは、通信することができない。共有メモリは、本実施形態においては、装置メモリ１１０、または、図示しない他の記憶装置に含まれてもよい。
【００６２】
本実施形態では、第１の実施形態における電源制御部７を基本として、装置電源制御部１０７が、本体装置１００において実装される。装置電源制御部１０７は、ディスクアレイコントローラ２００におけるリセット回路２３０および記憶装置２６０に対して、電源を供給することができる。
【００６３】
ＩＯ制御部１３１は、ドライバ１２０、およびディスクアレイコントローラ２００を介して、物理デバイス２８０に対するＩＯ要求の発行、およびＩＯ応答の受信を行う。
【００６４】
ドライバ制御部１０２は、第１の実施形態における制御部２を基本とする。すなわち、ドライバ制御部１０２は、状態監視部３が、監視対象部２１の異常検知に際して、間接的に監視する対象である。また、ドライバ制御部１０２は、ステータス検出部５が、「復帰済み」ステータスを検知した際に、通常の処理を再開可能であることを通知する対象である。
【００６５】
さらに、本実施形態では、ドライバ制御部１０２は、ドライバ１２０に含まれる各部を制御することにより、ＩＯ要求およびＩＯ応答に対するＩＯ処理（以下、「通常の処理」とも言う）、および本実施形態に係る各処理を制御する。すなわち、本実施形態では、一例として、ドライバ１２０に含まれる各部は、ドライバ制御部１０２を介して、動作の連携を取るように実装されている。例えば、第１の実施形態において、リセットが要求された際のリセット要求部４とステータス検出部５との各動作の連携は、本実施形態では、ドライバ制御部１０２を介して、実現される。以下の説明では、各部における各動作の間をドライバ制御部１０２が仲介することの記述を省略する。
【００６６】
本実施形態の本体装置１００では、ＩＯ停止制御部１２２、およびＩＯキューイング部１２３が、ＲＡＩＤコントローラ２５０のリセットに際して、ＩＯ制御部１３１から発行されるＩＯ要求を損失しないよう対処する点が、第１の実施形態の情報処理装置１と異なる。
【００６７】
ＩＯ停止制御部１２２は、監視対象部２１の異常が検知された後、リセットが要求される前の準備処理の一部として、ＩＯ制御部１３１に対して、それ以降のＩＯ要求の発行を停止することを要求する。また、ＩＯ停止制御部１２２は、「復帰済み」ステータスが検知された後、通常の処理を再開する前の復帰処理の一部として、ＩＯ制御部１３１に対して、停止したＩＯ要求の発行の再開を要求する。
【００６８】
ＩＯキューイング部１２３は、監視対象部２１の異常が検知された後、リセットが要求される前の準備処理の一部として、ディスクアレイコントローラ２００に対して未発行のＩＯ要求の内容を、一時保存データ１１２として、装置メモリ１１０に保存（記憶、キューイング）する。また、ＩＯキューイング部１２３は、「復帰済み」ステータスが検知された後、通常の処理を再開する前の復帰処理の一部として、一時保存データ１１２に保存した未発行のＩＯ要求を、ディスクアレイコントローラ２００に対して発行する。
【００６９】
本体装置メモリ制御部１２１は、第１の実施形態の情報処理装置１における第１の記憶装置１０を基本とする。本体装置メモリ制御部１２１は、第１の実施形態における接続情報１１を基本とするベースアドレス情報１１１、および、上述した一時保存データ１１２を記憶することができる。
【００７０】
状態監視部３、リセット要求部４、およびステータス検出部５の各構造および内容は、以下の点を除いて、上述した第１の実施形態を基本とする。
【００７１】
状態監視部３は、第１の実施形態における監視対象部２１の異常検知に際して、間接的にドライバ制御部１０２を監視する。本実施形態における監視対象部２１は、ディスクアレイコントローラ２００のＩＯプロセッサ２２１である。
【００７２】
リセット要求部４は、状態監視部３が異常を検知した際、ディスクアレイコントローラ２００に対してリセットを要求する。
【００７３】
ステータス検出部５は、ステータス情報４１の格納先として、第２の記憶装置４０を基本とする記憶装置２４０を対象として、第１の実施形態を基本とする各動作を行う。また、ステータス検出部５は、「復帰済み」ステータスを検知した際に、通常の処理を再開可能であることを、ドライバ制御部１０２に対して通知する。
【００７４】
以上、本実施形態における状態監視部３、リセット要求部４、およびステータス検出部５の各構造と内容は、上述した点以外は、第１の実施形態と同様であるので、重複する詳細な説明は省略する。
【００７５】
ディスクアレイコントローラ２００は、リセット回路２３０、ＲＡＩＤコントローラ２５０、記憶装置２６０、およびフラッシュメモリ２７０を含む。リセット回路２３０は、リセット検出部２３３、ＨＷリセット制御部２３１、および電源制御部２３２を含む。ＲＡＩＤコントローラ２５０は、ステータス監視部２２、記憶装置２４０、ＩＯプロセッサ２２１、ベースアドレス取得部２２３、ベースアドレスレジスタ２４２、メモリコントローラ２５１、ＩＯコントローラ２５２、および復帰処理部２５３を含む。記憶装置２４０は、ステータス情報４１を記憶することができる。記憶装置２６０は、一時保存データ２６１を記憶することができる。フラッシュメモリ２７０は、ファームウェア（ＦＷ）バイナリ２７１を記憶することができる。
【００７６】
本実施形態のディスクアレイコントローラ２００は、ＩＯプロセッサ２２１、ベースアドレス取得部２２３、リセット回路２３０に含まれるリセット検出部２３３、ＨＷリセット制御部２３１、記憶装置２４０、ベースアドレスレジスタ２４２、メモリコントローラ２５１、ＩＯコントローラ２５２、復帰処理部２５３、記憶装置２６０、フラッシュメモリ２７０、およびＦＷバイナリ２７１を含む点が第１の実施形態におけるデバイス２０と異なる。
【００７７】
ＩＯプロセッサ２２１は、第１の実施形態における監視対象部２１である。ただし、厳密には、監視対象部２１は、ＩＯプロセッサ２２１のＩＯ処理動作に影響を与えうるＩＯコントローラ２５２、メモリコントローラ２５１などの各部を含むとも言える。
【００７８】
また、本実施形態では、ＩＯプロセッサ２２１は、ＲＡＩＤコントローラ２５０に含まれる各部を制御することにより、ドライバ１２０とやり取りするＩＯ要求およびＩＯ応答に対するＩＯ処理（以下、「通常の処理」とも言う）、および本実施形態に係る各処理を制御する。すなわち、本実施形態では、ＲＡＩＤコントローラ２５０に含まれる各部は、ＩＯプロセッサ２２１を介して、動作を実行する。
【００７９】
また、ＲＡＩＤコントローラ２５０に含まれる各部は、ＩＯコントローラ２５２を介して、物理デバイス２８０に接続される。同様に、ＲＡＩＤコントローラ２５０に含まれる各部は、メモリコントローラ２５１を介して、記憶装置２６０にアクセスする。
【００８０】
以下では、各部の動作が、ＩＯプロセッサ２２１、ＩＯコントローラ２５２、メモリコントローラ２５１を介して実行されることの記述を省略する。また、通常の処理は、図示しないＦＷプログラムがＩＯプロセッサ２２１を介して実行する。以下では、図示しないＦＷプログラムに替えて、ＩＯプロセッサ２２１を主語として、通常の処理を説明する。例えば、通常の処理として、図示しないＦＷプログラムが、ＩＯ要求を受けたとき、ＩＯプロセッサ２２１およびメモリコントローラ２５１を介して、記憶装置２６０に、ＩＯ要求の内容を一時保存データ２６１として保存する動作がある。以下ではこれを、「ＩＯプロセッサ２２１は、ＩＯ要求を受けた時、記憶装置２６０に、ＩＯ要求の内容を一時保存データ２６１として保存する」と記述する。
【００８１】
リセット回路２３０は、第１の実施形態におけるリセット部３０を基本とする。本実施形態では、第１の実施形態におけるリセット制御部３１が行う動作は、リセット検出部２２３とＨＷリセット制御部２３１とが分担している。リセット検出部２２３は、本体装置１００からリセットが要求されたことを検知する。ＨＷリセット制御部２３１は、リセット要求が検知されたとき、電源制御部２３２を介して、ＲＡＩＤコントローラ２５０の各部をＨＷリセットする。電源制御部２３２は、ＲＡＩＤコントローラ２５０の各部の電源を制御することができる。すなわち、本実施形態におけるＨＷリセットされる範囲には、第１の実施形態における監視対象部２１に加えて、本発明を実現する各部（ステータス監視部２２、ベースアドレス取得部２２３および復帰処理部２５３）も含まれる。
【００８２】
ベースアドレス取得部２２３は、第１の実施形態における接続情報取得部２３を基本とする。本実施形態では、ベースアドレス情報１１１が、第１の実施形態における接続情報４２に対応する。したがって、ベースアドレス取得部２２３は、ベースアドレスレジスタ２４２に記憶されるベースアドレス情報が取得されたことを、ＩＯプロセッサ２２１に通知する。ベースアドレス取得部２２３の構成と内容は、上述した点以外は、第１の実施形態における接続情報取得部２３と同様であるので、重複する詳細な説明は省略する。
【００８３】
記憶装置２４０は、ステータス情報４１を記憶することができる。また、ベースアドレスレジスタ２４２は、第１の実施形態における接続情報４２に対応するベースアドレス情報を記憶することができる。記憶装置２４０およびベースアドレス２４２は、第１の実施形態における第２の記憶装置４０を基本とする。すなわち、第１の実施形態における第２の記憶装置４０は、本実施形態では、２つの記憶装置として実現される。なお、図３において、ベースアドレスレジスタ２４２に記憶されたベースアドレス情報は、記述を省略されている。
【００８４】
復帰処理部２５３は、起動処理が実行されたことを検知した後、ステータス情報４１を「起動」ステータスに更新する前に、記憶装置２６０に記憶された一時保存データ２６１を、物理デバイス２８０に書き込むという復帰処理を行う。一時保存データ２６１は、入出力処理が未完了なデータが一時的に記憶されたデータである。通常の処理において、ＩＯプロセッサ２２１は、ＩＯコントローラ２５２に対して出力したＩＯデータを、一時保存データ２６１として記憶する。そして、ＩＯプロセッサ２２１は、ＩＯコントローラ２５２から出力したＩＯデータの処理が終了したことを知った後に、一時保存データ２６１からそのＩＯデータを消去する。すなわち、一時保存データ２６１は、一般的なＲＡＩＤコントローラにおけるキャッシュデータであってもよい。復帰処理は、この入出力処理未完了のキャッシュデータである一時保存データ２６１に対して、リセットの再起動後に入出力処理を完了するという処理である。
【００８５】
記憶装置２６０は、キャッシュである一時保存データ２６１を保存することができる記憶装置である。記憶装置２６０は、一般的なキャッシュに使われるメモリであってもよい。ただし、記憶装置２６０に対する電源は、ＲＡＩＤコントローラ２５０とは別の電源である装置電源制御部１０７から供給される。
【００８６】
ＦＷバイナリ２７１は、ＲＡＩＤコントローラ２５０に含まれる各機能部のファームウェア・プログラムを実行形式で表したバイナリファイルである。各機能部は、少なくとも、ステータス監視部２２、ベースアドレス取得部２２３、復帰処理部２５３、および、上述した通常の処理を制御する図示しないＦＷプログラムを含む。ＦＷバイナリ２７１は、ＨＷリセット後の起動処理において、図示しないローダなどによって実行可能に展開される。
【００８７】
フラッシュメモリ２７０は、半導体素子等によって実現される不揮発性のメモリである。
【００８８】
ステータス監視部２２の構造および内容は、第１の実施形態と同様であるので、重複する詳細な説明は省略する。
【００８９】
次に、上述した構成を備える本実施形態の動作について詳細に説明する。  はじめに、本説明における前提条件を述べる。
【００９０】
ベースアドレス情報１１１は、システムの立ち上げの際、本体装置１００およびディスクアレイコントローラ２００がそれぞれ初期処理を行う間に、本体装置１００のＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ：図示せず）によって決定される。ＢＩＯＳは、初期処理において、決定したベースアドレス情報１１１をＲＡＩＤコントローラ２５０に対して通知する。ＲＡＩＤコントローラ２５０は、初期処理において、通知されたベースアドレス情報１１１を、本実施形態では、ベースアドレスレジスタ２４２に記憶する。一方、ＢＩＯＳは、決定したベースアドレス情報１１１を、装置メモリ１１０のベースアドレス情報１１１として保存することにより、ドライバ１２０（ＯＳ１３０）に引き渡す。ＢＩＯＳの初期処理は、通常、本体装置１００を再起動しなければ実行されない。すなわち、ＲＡＩＤコントローラ２５０のリセットによってベースアドレス情報１１１を失った場合、一般的な手順では、本体装置１００を再起動せずに、ＲＡＩＤコントローラ２５０に対してベースアドレス情報１１１再通知することはできない。
【００９１】
ディスクアレイコントローラ２００における一時保存データ２６１は、上述したように、通常の処理の過程で、ＩＯプロセッサ２２１によって、ＩＯコントローラ２５２に対して出力したＩＯデータを、一時保存データ２６１として随時保存される。図４および以下の動作の説明において、一時保存データ２６１の保存と消去の記述は省略する。
【００９２】
このような前提条件における、ディスクアレイシステムの動作を説明する。図４は、第２の実施形態において本体装置１００およびディスクアレイコントローラ２００が行う動作を示すフローチャートである。図４において、図２と同じ符号を付したステップの動作は、第１の実施形態と第２の実施形態とで名称が異なる各部の読み替えを行う以外、第１の実施形態と同様である。したがって、以下の説明では、原則として、重複する詳細な説明を省略する。
【００９３】
まず、本体装置１００において、状態監視部３が、ドライバ制御部１０２の動作から、ＩＯプロセッサ２２１の異常を検知する（ステップＡ１０）。例えば、状態監視部３は、ドライバ制御部１０２がＩＯプロセッサ２２１に対してＩＯを発行した後、所定の時間ＩＯプロセッサ２２１から応答がないことを検出したとき、ＩＯプロセッサ２２１の異常を検知したと判断してもよい。状態監視部３は、ＩＯプロセッサ２２１の異常を検知したことを、ドライバ制御部１０２に対して通知する。
【００９４】
次に、ドライバ制御部１０２は、リセット準備処理を行う（ステップＡ３０）。具体的には、ドライバ制御部１０２は、ＩＯ停止制御部１２２およびＩＯキューイング部１２３を介して、これから行われるリセットによって、ＩＯ制御部１３１から発行されるＩＯ要求を損失しないよう対処する。ＩＯ停止制御部１２２は、ＩＯ制御部１３１に対して、ＩＯ要求の発行を停止することを要求する。また、ＩＯキューイング部１２３は、ＩＯプロセッサ２２１に対して未発行のＩＯ要求の内容を、一時保存データ１１２として、装置メモリ１１０に保存する。
【００９５】
これ以降の本体装置１００におけるステップＡ１１、およびディスクアレイコントローラ２００におけるステップＢ２０〜Ｂ２２の動作は、第１の実施形態における図２の同じ符号を付したステップの動作と同様であるので、重複する詳細な説明を省略する。
【００９６】
ディスクアレイコントローラ２００において、ステータス監視部２２が、ＨＷリセット後の所定の起動処理が行われたことを検知（ステップＢ２２）した後、本実施形態では、ＩＯプロセッサ２２１を介して、次の復帰処理部２５３に制御が渡される。すなわち、復帰処理部２５３が、復帰処理を実行する（ステップＢ４０）。具体的には、復帰処理部２５３は、そのときに記憶されていた一時保存データ２６１を、物理デバイス２８０に対して出力する。この一時保存データ２６１は、ＨＷリセット（ステップＢ２１）の前に保存されていたデータである。このようにして、ＲＡＩＤコントローラ２５０は、ＨＷリセットによるＩＯデータの損失をできるだけ低減することができる。
【００９７】
次に、ステータス監視部２２は、「起動」ステータスによってステータス情報４１を更新する（ステップＢ２３）。各部の間で（復帰処理部２５３からステータス監視部２２へ）制御が渡る方法は、ステップＢ２２〜Ｂ４０の間と同様なので、重複する詳細な説明は省略する。
【００９８】
ディスクアレイコントローラ２００におけるステップＢ２３〜Ｂ２６、および本体装置１００におけるステップＡ１２〜Ａ１５の動作は、第１の実施形態における図２の同じ符号を付したステップの動作と同様であるので、重複する詳細な説明を省略する。
【００９９】
本体装置１００において、ステータス検出部５が、ステータス情報４１において、「復帰済み」ステータスを検知した（ステップＡ１５）後、ドライバ制御部１０２は、通常の処理を再開する前に、復帰処理を行う（ステップＡ３１）。具体的には、ドライバ制御部１０２は、ＩＯ停止制御部１２２およびＩＯキューイング部１２３を介して、ステップＡ３０で行ったリセット準備処理を解除する。ＩＯキューイング部１２３は、一時保存データ１１２に保存した未発行のＩＯ要求を、ディスクアレイコントローラ２００に対して発行する。また、ＩＯ停止制御部１２２は、ＩＯ制御部１３１に対して、停止したＩＯ要求の発行の再開を要求する。このようにして、本体装置１００は、ＲＡＩＤコントローラ２５０のＨＷリセットによって、ＩＯ制御部１３１から発行されるＩＯ要求ができるだけ損失しないようにすることができる。
【０１００】
これらの復帰処理が行われた後、ドライバ制御部１０２は、ベースアドレス情報１１１を使用して、ディスクアレイコントローラ２００との接続を再開する。ディスクアレイコントローラ２００では、ＩＯプロセッサ２２１（図示しないＦＷプログラム）が、ステップＢ２５で取得（を確認）したベースアドレス情報を、ベースアドレスレジスタ２４２から読み出して、接続の再開に応じることができる。
【０１０１】
このようにして、本体装置１００およびディスクアレイコントローラ２００は、ＨＷリセットに際して、ＩＯ要求のデータを保護しつつ、通常の処理を再開することができる。
【０１０２】
以上、説明したように、本実施形態には、上述した第１の実施形態と同様の効果に加えて、さらに、リセットの影響からＩＯ要求のデータを保護することができるという効果もある。
【０１０３】
その理由は、本体装置１００において、ＩＯ停止制御部１２２が、リセット要求の前後において、ＩＯ制御部１３１に対するＩＯ要求の発行を制御するからである。ＩＯキューイング部１２３が、リセット要求の前後において、未完了のＩＯ要求を一時保存データ１１２として保護するからである。また、ディスクアレイコントローラ２００において、復帰処理部２５３が、ＨＷリセットの前に保存されていた未完了のＩＯ要求のデータを、ＨＷリセット後に、物理デバイス２８０に対して出力するからである。
（第２の実施形態の変形例）
なお、本実施形態の変形例としては以下のようなものが考えられる。
【０１０４】
例えば、ディスクアレイコントローラ２００自身が、ＩＯプロセッサ２２１における処理の異常を検出してもよい。この場合、ステータス監視部２２または図示しない機能部が、ＩＯプロセッサ２２１の処理の異常の検知と、本体装置１００への通知を行ってもよい。本体装置１００では、例えば、ステータス検出部５または図示しない機能部が、状態監視部３に代わって、ＩＯプロセッサ２２１の異常の通知を検知してもよい。
【０１０５】
以下に、この変形例における動作を、図５を参照して説明する。図５は、第２の実施形態の変形例において、本体装置１００およびディスクアレイコントローラ２００が行う動作を示すフローチャートである。以下では、一例として、図５における「監視対象部」を、「ＩＯプロセッサ２２１」と読み替えて説明する。
【０１０６】
まず、ディスクアレイコントローラ２００において、ステータス監視部２２が、ＩＯプロセッサ２２１における処理の異常を検出する（ステップＢ６０）。ステータス監視部２２は、ＩＯプロセッサ２２１の処理に異常が発生したことを表す「異常」ステータスによって、ステータス情報４１を更新する（ステップＢ６１）。
【０１０７】
本体装置１００においては、ステータス検出部５が、通常の処理中にもステータス情報４１を監視する。そして、ステータス検出部５は、ステータス情報４１において、「異常」ステータスを検知する（ステップＡ５０）。この後の処理は、図４におけるステップＡ３０以降の処理と同様である。このようにして、ディスクアレイコントローラ２００が検知した自身の異常に対しても、ＨＷリセットによる復旧を図ることができる。
【０１０８】
この変形例によれば、ＲＡＩＤコントローラ２５０のＩＯプロセッサ２２１が動作できないほどではない異常に対しても、ＨＷリセットによる復旧が可能になるという効果がある。すなわち、この変形例は、復旧できる異常のタイプの増加と、ＨＷリセットという復旧の可能性の高さの両方が期待できる。
【０１０９】
なお、上述した各実施形態において図１および図３に示した各部は、それぞれ独立したハードウェア回路で構成されていてもよいし、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捕らえることができる。ただし、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。このような場合のハードウェア環境の一例を、図６を参照して説明する。
【０１１０】
図６は、本発明の各実施形態、および、その変形例に係る情報システムおよびディスクアレイシステムに適用可能なコンピュータ（情報処理装置）の構成を例示する図である。すなわち、図６は、上述した各実施形態における情報処理装置１および本体装置（情報処理装置）１００の少なくともどちらかを実現可能なコンピュータの構成であって、上述した各実施形態における各機能を実現可能なハードウェア環境を示す。
【０１１１】
図６に示したコンピュータ９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３、通信インタフェース（ＩＦ）９０４、ディスプレイ９０５、およびハードディスク装置（ＨＤＤ）９０６を備え、これらがバス９０７を介して接続された構成を有する。なお、図６に示したコンピュータが情報処理装置１および本体装置（情報処理装置）１００として機能する場合、ディスプレイ９０５は常時設けられる必要はない。
【０１１２】
また、通信インタフェース９０４は、上述した各実施形態において、当該各コンピュータ間における通信を実現する一般的な通信手段である。ハードディスク装置９０６には、プログラム群９０６Ａと、各種の記憶情報９０６Ｂとが格納されている。プログラム群９０６Ａは、例えば、上述した図１および図３に示した各ブロック（各部）に対応する機能を実現するためのコンピュータ・プログラムである。各種の記憶情報９０６Ｂは、例えば、図１または図３に示した接続情報１１、ベースアドレス情報１１１、および一時保存データ１１２などである。このようなハードウェア構成において、ＣＰＵ９０１は、コンピュータ９００の全体の動作を司る。
【０１１３】
そして、上述した各実施形態を例に説明した本発明は、各実施形態の説明において参照したブロック構成図（図１または図３）あるいはフローチャート（図２、図４、または図５）の機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、当該ハードウェアのＣＰＵ９０１に読み出して実行することによって達成される。また、このコンピュータ内に供給されたコンピュータ・プログラムは、読み書き可能な一時記憶メモリであるＲＡＭ９０３またはハードディスク装置９０６などの不揮発性の記憶デバイス（記憶媒体）に格納すれば良い。
【０１１４】
また、前記の場合において、当該各装置内へのコンピュータ・プログラムの供給方法は、フロッピーディスク（登録商標）やＣＤ−ＲＯＭ等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信ネットワーク１０００を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータ・プログラムを構成するコード、或いは係るコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【０１１５】
なお、上述した実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下の付記に限定されるものではない。
【０１１６】
（付記１）
自装置に接続されたデバイスに含まれる監視対象部の状態を監視し、前記監視対象部の異常を検知する状態監視手段と、
前記監視対象部の異常が検知されたとき、
前記デバイスに対してリセットを要求するリセット要求手段と、
前記リセットを要求した後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視し、
前記ステータス情報において、
前記デバイスが起動状態となったことを表す情報である起動ステータス、および、前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスをそれぞれ検知し、
復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知するステータス検出手段と、
前記起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新する接続情報設定手段と
を含む情報処理装置。
【０１１７】
（付記２）
自装置と前記デバイスとのデータの受け渡しを介在する共有メモリをさらに含み、
前記接続情報は、前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報である
付記１記載の情報処理装置。
【０１１８】
（付記３）
前記監視対象部の異常が検知された後、前記リセットを要求する前に前記デバイスに対して未発行の入出力（ＩＯ）要求の内容を一時保存データとして記憶し、前記復帰済みステータスが検知された後、前記一時保存データ前記ＩＯ要求の内容に基づいて入出力要求を前記デバイスに対して発行するＩＯキューイング手段をさらに含む
付記１または２記載の情報処理装置。
【０１１９】
（付記４）
前記監視対象部の異常が検知された後、前記リセットを要求する前にＩＯ要求の発行元に対して、それ以降のＩＯ要求の発行を停止することを要求し、前記復帰済みステータスが検知された後、停止した前記ＩＯ要求の発行の再開を要求するＩＯ停止制御手段をさらに含む
付記１乃至３のいずれか１つに記載の情報処理装置。
【０１２０】
（付記５）
自デバイスに含まれる所定の各部の電源を制御する電源制御手段と、
自デバイスが接続された情報処理装置からリセットが要求されたことを検知したとき、前記電源制御手段を介して、自デバイスに含まれる所定の各部をハードウェアリセット（ＨＷリセット）するリセット手段と、
自装置において、前記ＨＷリセット後における所定の起動処理が行われたことを検知し、自装置に含まれる、前記情報処理装置と自装置との双方から読み書き可能な記憶装置に記憶されるステータス情報を、起動状態であることを表す情報である起動ステータスによって更新するステータス監視手段と、
前記起動ステータスによる更新が行われた後、前記ステータス情報を監視し、前記情報処理装置との接続の再開に使用される情報である接続情報が、前記記憶装置に書き込まれたことを表す情報である接続情報設定済みステータスが検知されたとき、少なくとも前記接続情報が取得されたことを所定の方法で通知し、通常の処理に復帰できる状態になったことを表す情報である復帰済みステータスによって前記ステータス情報を更新する接続情報取得手段と
を含むデバイス。
【０１２１】
（付記６）
前記接続情報は、前記情報処理装置に含まれる記憶装置である共有メモリにおいて、前記情報処理装置と自デバイスとのデータの受け渡しに使用される前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報であり、
前記記憶装置における前記接続情報が書き込まれる部分は、レジスタの一つであるベースアドレスレジスタである
付記５記載のデバイス。
【０１２２】
（付記７）
前記起動処理が行われたことを検知した後、前記ステータス情報を前記起動ステータスによって更新する前に、入出力処理が未完了なデータが一時的に記憶されたデータである一時保存データに対して、前記入出力処理を完了する復帰処理手段をさらに含む
付記５または６記載のデバイス。
【０１２３】
（付記８）
自装置に接続されたデバイスに含まれる監視対象部の状態を監視し、
前記監視対象部の異常が検知されたとき、
前記デバイスに対してリセットを要求し、
前記リセットを要求した後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視し、
前記ステータス情報において、前記デバイスが起動状態となったことを表す情報である起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新し、
前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知する
復旧方法。
【０１２４】
（付記９）
前記接続情報は、自装置に含まれる記憶装置である共有メモリにおいて、自装置と前記デバイスとのデータの受け渡しに使用される前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報である
付記８記載の復旧方法。  （付記１０）
前記監視対象部の異常が検知された後、前記リセットを要求する前に前記デバイスに対して未発行の入出力（ＩＯ）要求の内容を一時保存データとして記憶し、
前記復帰済みステータスが検知された後、前記一時保存データ前記ＩＯ要求の内容に基づいて入出力要求を前記デバイスに対して発行する
付記８または９記載の復旧方法。
【０１２５】
（付記１１）
前記監視対象部の異常が検知された後、前記リセットを要求する前にＩＯ要求の発行元に対して、それ以降のＩＯ要求の発行を停止することを要求し、
前記復帰済みステータスが検知された後、停止した前記ＩＯ要求の発行の再開を要求する
付記８乃至１０のいずれか１つに記載の復旧方法。
【０１２６】
（付記１２）
自デバイスが接続された情報処理装置からリセットが要求されたことを検知したとき、
自デバイスに含まれる所定の各部の電源を制御する電源制御手段を介して、自デバイスに含まれる所定の各部をハードウェアリセット（ＨＷリセット）を実行し、
前記ＨＷリセット後、自装置において所定の起動処理が行われたことを検知したとき、
自装置に含まれる、前記情報処理装置と自装置との双方から読み書き可能な記憶装置に記憶されるステータス情報を、起動状態であることを表す情報である起動ステータスによって更新し、
前記ステータス情報を監視し、
前記情報処理装置との接続の再開に使用される情報である接続情報が、前記記憶装置に書き込まれたことを表す情報である接続情報設定済みステータスが検知されたとき、
少なくとも前記接続情報が取得されたことを所定の方法で通知し、
通常の処理に復帰できる状態になったことを表す情報である復帰済みステータスによって前記ステータス情報を更新する
デバイス復旧方法。
【０１２７】
（付記１３）
前記接続情報は、前記情報処理装置に含まれる記憶装置である共有メモリにおいて、前記情報処理装置と自デバイスとのデータの受け渡しに使用される前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報であり、
前記接続情報を前記記憶装置に書き込む際に、レジスタの一つであるベースアドレスレジスタに前記ベースアドレス情報を書き込む
付記１２記載のデバイス復旧方法。
【０１２８】
（付記１４）
前記起動処理が行われたことを検知した後、前記ステータス情報を前記起動ステータスによって更新する前に、入出力処理が未完了なデータが一時的に記憶されたデータである一時保存データに対して、前記入出力処理を完了する
付記１２または１３記載のデバイス復旧方法。
【０１２９】
（付記１５）
自装置に接続されたデバイスに含まれる監視対象部の状態を監視する状態監視処理と、
前記監視対象部の異常が検知されたとき、前記デバイスに対してリセットを要求するリセット要求処理と、
前記リセット要求処理後、前記デバイスに含まれる、前記デバイスと自装置との双方から読み書き可能な第２の記憶装置に記憶されるステータス情報を監視するステータス検出処理と、
前記ステータス検出処理において、前記デバイスが起動状態となったことを表す情報である起動ステータスが検知されたとき、自装置に含まれる第１の記憶装置に記憶された、前記デバイスにおいて自装置との接続再開に使用される情報である接続情報を、前記第２の記憶装置に書き込み、前記接続情報の書き込みを行ったことを表す情報である接続情報設定済みステータスによって、前記ステータス情報を更新する接続情報設定処理と、
前記ステータス検出処理において、前記デバイスが通常の処理へ復帰できる状態になったことを表す情報である復帰済みステータスが検知されたとき、通常の処理を再開可能であることを所定の方法によって通知する復帰通知処理と
をコンピュータに実行させる第１のコンピュータ・プログラム。
【０１３０】
（付記１６）
前記接続情報は、自装置に含まれる記憶装置である共有メモリにおいて、自装置と前記デバイスとのデータの受け渡しに使用される前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報である
付記１５記載の第１のコンピュータ・プログラム。
【０１３１】
（付記１７）
前記状態監視処理において、前記監視対象部の異常が検知された後、前記リセット要求処理の前に、前記デバイスに対して未発行の入出力（ＩＯ）要求の内容を一時保存データとして記憶し、
前記ステータス検出処理において、前記復帰済みステータスが検知された後、前記一時保存データ前記ＩＯ要求の内容に基づいて入出力要求を前記デバイスに対して発行するＩＯキューイング処理を
コンピュータに実行させる付記１５または１６記載の第１のコンピュータ・プログラム。
【０１３２】
（付記１８）
前記状態監視処理において、前記監視対象部の異常が検知された後、前記リセット要求処理の前に、ＩＯ要求の発行元に対して、それ以降のＩＯ要求の発行を停止することを要求し、
前記ステータス検出処理において、前記復帰済みステータスが検知された後、停止した前記ＩＯ要求の発行の再開を要求するＩＯ停止制御処理を
コンピュータに実行させる付記１５乃至１７のいずれか１つに記載の第１のコンピュータ・プログラム。
【０１３３】
（付記１９）
自デバイスが接続された情報処理装置からリセットが要求されたことを検知したとき、
自デバイスに含まれる所定の各部の電源を制御する電源制御手段を介して、自デバイスに含まれる所定の各部をハードウェアリセット（ＨＷリセット）するリセット処理と、
前記リセット処理後、自装置において所定の起動処理が行われたことを検知したとき、
自装置に含まれる、前記情報処理装置と自装置との双方から読み書き可能な記憶装置に記憶されるステータス情報を、起動状態であることを表す情報である起動ステータスによって更新するステータス監視処理と、
前記ステータス情報を監視し、前記情報処理装置との接続の再開に使用される情報である接続情報が、前記記憶装置に書き込まれたことを表す情報である接続情報設定済みステータスが検知されたとき、少なくとも前記接続情報が取得されたことを所定の方法で通知し、通常の処理に復帰できる状態になったことを表す情報である復帰済みステータスによって前記ステータス情報を更新する接続情報取得処理と
をコンピュータに実行させる第２のコンピュータ・プログラム。
【０１３４】
（付記２０）
前記接続情報は、前記情報処理装置に含まれる記憶装置である共有メモリにおいて、前記情報処理装置と自デバイスとのデータの受け渡しに使用される前記共有メモリの範囲を示すアドレスの情報を含むベースアドレス情報であり、
前記接続情報取得処理において、前記接続情報を前記記憶装置に書き込む際に、レジスタの一つであるベースアドレスレジスタに前記ベースアドレス情報を書き込む
付記１９記載の第２のコンピュータ・プログラム。
【０１３５】
（付記２１）
前記ステータス監視処理において、前記ステータス情報を前記起動ステータスによって更新する前に、入出力処理が未完了なデータが一時的に記憶されたデータである一時保存データに対して、前記入出力処理を完了する復旧処理を
コンピュータに実行させる付記１９または２０記載の第２のコンピュータ・プログラム。
【符号の説明】
【０１３６】
１    情報処理装置
２    制御部
３    状態監視部
４    リセット要求部
５    ステータス検出部
６    接続情報設定部
７、３２、２３２    電源制御部
１０    第１の記憶装置
１１、４２    接続情報
２０    デバイス
２１    監視対象部
２２    ステータス監視部
２３    接続情報取得部
３０    リセット部
３１    リセット制御部
４０    第２の記憶装置
４１    ステータス情報
１００    本体装置（情報処理装置）
１０２    ドライバ制御部
１０６    ベースアドレス設定部
１０７    装置電源制御部
１１０    装置メモリ
１１１    ベースアドレス情報
１１２、２６１    一時保存データ
１２０    ドライバ
１２１    本体装置メモリ制御部
１２２    ＩＯ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）停止制御部
１２３    ＩＯキューイング部
１３０    ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）
１３１    ＩＯ制御部
２００    ディスクアレイコントローラ
２２１    ＩＯプロセッサ
２２３    ベースアドレス取得部
２３０    リセット回路
２３１    ハードウェア（ＨＷ）リセット制御部
２３３    リセット検出部
２４０、２６０    記憶装置
２４２    ベースアドレスレジスタ
２５０    ＲＡＩＤコントローラ
２５１    メモリコントローラ
２５２    ＩＯコントローラ
２５３    復帰処理部
２７０    フラッシュメモリ
２７１    ファームウェア（ＦＷ）バイナリ
９００    情報処理装置（コンピュータ）
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    通信インタフェース（ＩＦ）
９０５    ディスプレイ
９０６    ハードディスク装置（ＨＤＤ）
９０６Ａ    プログラム群
９０６Ｂ    各種の記憶情報
９０７    バス
１０００    ネットワーク（通信ネットワーク）
【図１】
0006519266.tif 000002
【図２】
0006519266.tif 000003
【図３】
0006519266.tif 000004
【図４】
0006519266.tif 000005
【図５】
0006519266.tif 000006
【図６】
0006519266.tif 000007