(57)【要約】 （課題）  本発明は、複数のディスクから構成される記憶装置において、複数のディスクに障害が発生した場合であっても、起動に伴うデータの書込みを禁止し、障害の発生したディスクに記録されたデータを確実に取得することを目的とする。（解決手段）  本実施例に係る記憶装置は、複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置において、休止した記録媒体が複数であるか否かを判別する判別手段と、複数の記録媒体の休止を判別した該記憶装置を再起動する起動手段と、該記憶装置の起動に伴う初期データを格納する格納手段と、休止した記録媒体のいずれか一つを稼動する稼動手段と、該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手段と、該判別手段において、稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込み手段とからなることを特徴とする。【選択図】  図１
2008090620.tif 000002
【特許請求の範囲】
【請求項１】
複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置において、
休止した記録媒体が複数であるか否かを判別する判別手段と、
複数の記録媒体の休止を判別した該記憶装置を再起動する起動手段と、
該記憶装置の起動に伴う初期データを格納する格納手段と、
休止した記録媒体のいずれか一つを稼動する稼動手段と、
該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手段と、
該特定手段において、稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込み手段と、
からなることを特徴とする記憶装置。
【請求項２】
請求項１に記載の記憶装置において、
該特定手段は、稼動した記録媒体に記録される履歴情報を参照して該稼動順序を特定することを特徴とする記憶装置。
【請求項３】
請求項１に記載の記憶装置において、
該特定手段は、該記憶装置の動作設定を参照して該稼動順序を特定することを特徴とする記憶装置。
【請求項４】
請求項１に記載の記憶装置において、
該特定手段は、該記憶装置が有するオペレーションシステムの動作状態を参照して該稼動順序を特定することを特徴とする記憶装置。
【請求項５】
請求項１に記載の記憶装置において、
該複数の記録媒体に同一のデータを格納することを特徴とする記憶装置。
【請求項６】
請求項１に記載の記憶装置において、
該複数の記録媒体にデータを分散して記録し、さらに分散した分散データの排他的論理和を格納することを特徴とする記憶装置。
【請求項７】
請求項１に記載の記憶装置において、
該格納手段は、該記憶装置の動作を効率化するキャッシュメモリであることを特徴とする記憶装置。
【請求項８】
請求項１に記載の記憶装置において、
該格納手段は、該記録媒体に書き込むデータを一時的に格納するデータバッファであることを特徴とする記憶装置。
【請求項９】
請求項１に記載の記憶装置において、
該書込み手段は、該稼動した記録媒体が有するフラグを変更して該初期データを記録することを特徴とする記憶装置。
【請求項１０】
複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置が記録するデータを復旧する記録復旧方法において、
休止した記録媒体が複数であるか否かを判別する判別手順と、
複数の記録媒体の休止を判別した該記憶装置を再起動する起動手段と、
該記憶装置の起動に伴う初期データを格納する格納手順と、
休止した記録媒体のいずれか一つを稼動する稼動手順と、
該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手順と、
稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込み手順と、
からなることを特徴とする記録復旧方法。
【請求項１１】
複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置が記録するデータを復旧する記録復旧プログラムにおいて、
休止した記録媒体が複数であるか否かを判別する判別ステップと、
複数の記録媒体の休止を判別した該記憶装置を再起動する起動ステップと、
該記憶装置の起動に伴う初期データを格納する格納ステップと、
休止した記録媒体のいずれか一つを稼動する稼動ステップと、
該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定ステップと、
稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込みステップと、
をコンピュータに実行させることを特徴とする記録復旧プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
冗長構成の記憶装置において、記録されたデータの復旧を行う記憶装置に関する。
【背景技術】
【０００２】
複数のディスクから構成されるＲＡＩＤ装置などの冗長化された記憶装置は、ディスクに障害が発生すると、障害の発生したディスクを切り離す。ここでディスクの障害としては例えば、サーマル・オフトラックやコンタミネーション、ノイズ、接触不良などがある。【０００３】
記憶装置は、障害の発生したディスクを切り離し、正常なディスクのみを用いてデータの記録更新を行う。さらに他のディスクに障害が発生すると記憶装置は、新たに障害の発生したディスクを切り離す。複数のディスクに障害が発生し、冗長が無くなった状態から更にディスクを切り離した状態を以下、マルチデッド状態と呼ぶ。ここで、障害発生して切り離されたディスクは、ハードリセットや電源の再投入を行と一時的に正常なディスクとして動作することができる。これはディスクの切り離し要因として、一時的なノイズや、サーマル・オフトラックやディスク内媒体上の微小ゴミ（コンタミネーション）などの場合が多く、電源切断後の投入や、ハードリセットなどによって回復することが多い。このため、マルチデッド状態から冗長化を失った直前の状態に記憶装置を復旧するために、一度切り離されたディスクに対してハードリセットや電源の再投入を行う。そして、切り離されたディスクを稼動して冗長化を失った直前の状態にする。しかし、記憶装置を再起動する場合、複数のディスクに対して冗長化を失った直前の状態を確実に判断できない場合、ディスクへの誤書込みが発生し、システムが起動しなくなったり、誤動作する可能性があった。つまり、一度切り離された複数のディスクを復旧するために、再接続すべきディスクの順番を特定できない場合、冗長化を失った直前の状態を確実に判断できないといった問題がある。【０００４】
またディスク装置の復旧可能なディスクアレイ制御装置に関して以下の特許文献がある。
【特許文献１】特開平１０−２８９０６５号公報
【発明の開示】
【０００５】
（発明が解決しようとする課題）
複数のディスクから構成される記憶装置において、複数のディスクに障害が発生し、冗長化を失った直前の状態を確実に判断できない場合でも、ディスクへの誤書込みをせず、冗長化を失った直前の状態まで該記憶装置を復旧し、正常に起動することを目的とする。
（課題を解決するための手段）
本発明の一観点によれば、本発明の記憶装置は、複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置において、休止した記録媒体が複数であるか否かを判別する判別手段と、複数の記録媒体の休止を判別した該記憶装置を再起動する起動手段と、該記憶装置の起動に伴う初期データを格納する格納手段と、休止した記録媒体のいずれか一つを稼動する稼動手段と、該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手段と、該特定手段において、稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込み手段とからなることを特徴とする。
【０００６】
また本発明の他の観点によれば、本発明の記憶装置は、該特定手段が稼動した記録媒体に記録される履歴情報を参照して該稼動順序を特定することを特徴とする。
【０００７】
また本発明の他の観点によれば、本発明の記憶装置は、該特定手段が該記憶装置の動作設定を参照して該稼動順序を特定することを特徴とする。
【０００８】
また本発明の他の観点によれば、本発明の記憶装置は、該特定手段が該記憶装置が有するオペレーションシステムの動作状態を参照して該稼動順序を特定することを特徴とする。
【０００９】
また本発明の他の観点によれば、本発明の記憶装置は、該複数の記録媒体に同一のデータを格納することを特徴とする。
【００１０】
また本発明の他の観点によれば、本発明の記憶装置は、該複数の記録媒体にデータを分散して記録し、さらに分散した分散データの排他的論理和を格納することを特徴とする。
【００１１】
また本発明の他の観点によれば、本発明の記録復旧方法は、複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置が記録するデータを復旧する記録復旧方法において、休止した記録媒体が複数であるか否かを判別する判別手順と、複数の記録媒体の休止を判別した該記憶装置を再起動する起動手段と、該記憶装置の起動に伴う初期データを格納する格納手順と、休止した記録媒体のいずれか一つを稼動する稼動手順と、該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手順と、稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込み手順とからなることを特徴とする。
【００１２】
また本発明の他の観点によれば、本発明の記録復旧プログラムは、複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置が記録するデータを復旧する記録復旧プログラムにおいて、休止した記録媒体が複数であるか否かを判別する判別ステップと、複数の記録媒体の休止を判別した該記憶装置を再起動する起動ステップと、該記憶装置の起動に伴う初期データを格納する格納ステップと、休止した記録媒体のいずれか一つを稼動する稼動ステップと、該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定ステップと、稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込みステップとをコンピュータに実行させることを特徴とする。
（発明の効果）
本実施例によれば、複数のディスクから構成される記憶装置において、再起動時の書き込みデータをバッファに保存して、障害の発生したハードディスクへの書込みを禁止することによって、複数のディスクに障害が発生した場合であっても、障害の発生したハードディスクの順序を特定し、該記憶装置を正常に起動することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施例に係るＲＡＩＤ装置１００のハードブロック図である。
【図２】本実施例に係る記録処理のフローチャートである。
【図３】本実施例に係る記録復旧のフローチャートである。
【図４】本実施例に係るシステム領域１１４、１１７に格納されるデータ４０１、４０２である。
【図５】本実施例に係るシステム領域１１４、１１７に格納されるデータ５０１、５０２である。
【図６】本実施例に係るＲＡＩＤ管理領域１１６、１１９に格納されるデータ６０１、６０２である。
【図７】本実施例に係るＲＡＩＤ管理領域１１６、１１９に格納されるデータ７０１、７０２である。
【図８】本実施例に係るＲＡＩＤ管理領域１１６、１１９に格納されるデータ８０１、８０２である。
【図９】本実施例に係るＲＡＩＤ装置９００のハードブロック図である。
【図１０】本実施例に係る記録処理のフローチャートである。
【図１１】本実施例に係る記録復旧のフローチャートである。
【図１２】本実施例に係るシステム領域９１５、９１８に格納されるストライプデータ１２０１、１２０２である。
【図１３】本実施例に係るシステム領域９２１に格納されるパリティデータ１３０１である。
【図１４】本実施例に係るＲＡＩＤ管理領域９１７、９２０に格納される管理データ１４０１、１４０２、１４０７である。
【図１５】本実施例に係るＲＡＩＤ管理領域９１７、９２０に格納される管理データ１６０１、１６０２、１６０７である。
【図１６】本実施例に係るＲＡＩＤ管理領域９１７、９２０に格納される管理データ１７０１、１７０２、１７０７である。
【図１７】本実施例に係るメモリ１０７に格納される設定テーブル１８０１である。
【図１８】本実施例に係るメモリ１０７に格納される設定テーブル１９０１である。
【図１９】本実施例に係るメモリ９０７に格納される設定テーブル２００１である。
【符号の説明】
【００１４】
１００…ＲＡＩＤ装置
１０１…ＣＰＵモジュール
１０２…ディスプレイコントローラ
１０３…ディスプレイ
１０４…ＬＡＮコントローラ
１０５…ＲＡＩＤコントローラ
１０６…プロセッサ
１０７…メモリ
１０８…バスコントローラ
１０９…データキャッシュ
１１０…データバッファ
１１１…ＨＤＤコントローラ
１１２…ハードディスク
１１３…ハードディスク
１１４…システム領域
１１５…データ領域
１１６…ＲＡＩＤ管理領域
１１７…システム領域
１１８…データ領域
１１９…ＲＡＩＤ領域
４０１…データ
４０２…データ
４０３…設定テーブル
４０４…設定テーブル
６０１…データ
６０２…データ
６０３…管理情報
６０４…管理情報
【発明を実施するための最良の形態】
【００１５】
（実施例１）
本実施例は記憶装置１００がミラーリング構成の場合を説明する。ミラーリング構成とは、２以上の記録媒体が共に同一のデータを記録する構成である。【００１６】
［システム構成］
図１は本実施例に係る記憶装置１００のハードブロック図である。記憶装置１００は例えば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置などの記憶装置である。本実施例では、以下記憶装置１００をＲＡＩＤ装置１００と呼ぶ。【００１７】
＜ＲＡＩＤ装置１００＞
ＲＡＩＤ装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）モジュール１０１、ディスプレイコントローラ（Ｄｉｓｐｌａｙ  Ｃｏｎｔｒｏｌｌｅｒ）１０２、ディスプレイ１０３、ＬＡＮコントローラ（ＬＡＮ  Ｃｏｎｔｒｏｌｌｅｒ）１０４、ＲＡＩＤコントローラ（ＲＡＩＤ  Ｃｏｎｔｒｏｌｌｅｒ）１０５、ハードディスク（ＨＤＤ）１１２、１１３から構成される。ＣＰＵモジュール１０１は、ＲＡＩＤ装置１００を統括的に制御し、ディスプレイコントローラ１０２、ＬＡＮコントローラ１０４、ＲＡＩＤコントローラ１０５を統括的に制御する。またＣＰＵモジュール１０１はメモリなどの記録媒体を含む構成であり、ＲＡＩＤ装置１００のＯＳをメモリ上に展開してＯＳを起動するものである。ディスプレイコントローラ１０２は、ディスプレイ１０３における表示制御を行う。ＬＡＮコントローラ１０４はＲＡＩＤ装置１００が接続するネットワークの通信制御を行う。ＲＡＩＤ装置１００は、ＬＡＮコントローラ１０４を介してＲＡＩＤ装置１００の外部のネットワークにより、所望のデータを取得する。【００１８】
＜ＲＡＩＤコントローラ１０５＞
ＲＡＩＤコントローラ１０５は、プロセッサ１０６、メモリ１０７、バスコントローラ１０８、データキャッシュ１０９、データバッファ１１０、ＨＤＤコントローラ１１１から構成されている。プロセッサ１０６は、ＨＤＤコントローラ１１１経由でハードディスク１１２またはハードディスク１１３にデータを書き込む／読み出す制御を行う。プロセッサ１０６はメモリ１０７に格納されているプログラムを実行する。バスコントローラ１０８は、ＲＡＩＤコントローラ１０５とＣＰＵモジュール１０１でのデータのやりとりを制御する。さらにプロセッサ１０６はＨＤＤコントローラ１１１経由でハードディスク１１２、１１３との接続制御を行う。ＲＡＩＤコントローラ１０５とハードディスク１１２、１１３を接続することを「オンライン」、ＲＡＩＤコントローラ１０５とハードディスク１１２、１１３を切断することを「オフライン」と呼ぶ。ただしオフライン、オンラインに限らず、プロセッサ１０６はＨＤＤコントローラ１１１経由でハードディスク１１２、１１３から管理情報を読み出すことが可能である。データキャッシュ１０９はハードディスク１１２、１１３のアクセスを補助し、一度ハードディスク１１２、１１３にアクセスするデータを一時的に保管し、保管された情報は、ディスクに直接アクセスせずに高速化する。またデータバッファ１１１は、ハードディスク１１２、１１３に書き込むデータを一旦、格納する記憶部である。ハードディスク１１２、１１３は一定時間に一定のデータ量を書き込む必要があるために、データバッファ１１０は設けられている。換言すれば、データキャッシュ１０９とデータバッファ１１０は、ＣＰＵモジュール１０１またはプロセッサ１０６が書き込みを指示するデータをハードディスク１１２、１１３に格納する前に格納する。そしてデータ量が所定の容量よりも大きくなった後、ＨＤＤコントローラ１１１は、データキャッシュ１０９経由でデータバッファ１１０からデータを読み出し、ハードディスク１１２、１１３に格納する。データキャッシュ１０９とデータバッファ１１０があることによって、プロセッサ１０６はデータの転送をハンドリングすることができる。【００１９】
ハードディスク１１２はシステム領域１１４、データ領域１１５、ＲＡＩＤ管理領域１１６より構成されており、ハードディスク１１３はシステム領域１１７、データ領域１１８、ＲＡＩＤ管理領域１１９より構成されている。システム領域１１４、データ領域１１５、ＲＡＩＤ管理領域１１６は、ハードディスク１１２を分割した領域である。同様にしてシステム領域１１７、データ領域１１８、ＲＡＩＤ管理領域１１９は、ハードディスク１１３を分割した領域である。そしてシステム領域１１４、１１７、データ領域１１５、１１８、ＲＡＩＤ管理領域１１６、１１９の容量は可変な量であって、ハードディスク１１２、１１３のデータ容量の範囲内で可変である。【００２０】
システム領域１１４、１１７にはＲＡＩＤ装置１００におけるＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）、アプリケーションプログラムなどが格納されている。データ領域１１５、１１８にはＲＡＩＤ装置１００のデータが格納されている。ＲＡＩＤ管理領域１１６、１１９にはＲＡＩＤ装置１００の管理情報が格納されている。ここでデータとはユーザの個人情報などであって、ＲＡＩＤ装置１００を制御するプログラムなどとは異なる情報である。管理情報とは、ハードディスク１１２、１１３が正常か否かを示す情報であり、プロセッサ１０６がＨＤＤコントローラ１１１経由で更新を行う。
図４（ａ）は、本実施例に係るシステム領域１１４に格納されているデータ４０１である。データ４０１は、ＲＡＩＤ装置１００において起動するＯＳ４０４、アプリケーションプログラム４０６から構成されている。同様にして図４（ｂ）は、本実施例に係るシステム領域１１７に格納されているデータである。データ４０２は、ＲＡＩＤ装置１００において起動するＯＳ４０５、アプリケーションプログラム４０７から構成されている。
また図１７に記載の設定テーブル１８０１はハードディスク１１２、１１３、データキャッシュ１０９、データバッファ１１０へのデータの書込み／読み出しを決定する書き込みフラグのオン／オフを示すテーブルである。初期設定では設定テーブル４０３の書込みフラグはすべてオンになっている。設定テーブル１８０１は、メモリ１０７に格納されている。
本実施例において、ＲＡＩＤ装置１００はミラーリング構成であるため、データ４０１を構成するＯＳ４０４とデータ４０２を構成するＯＳ４０５、データ４０１を構成するアプリケーションプログラム４０６とデータ４０２を構成するアプリケーションプログラム４０７は同一のＯＳ及びアプリケーションプログラムである。
本実施例においてＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）設定などにおいて、ユーザはデータキャッシュ１０９、データバッファ１１０、ハードディスク１１２、１１３の書込みを有効/無効にするフラグのオン／オフを設定する。
またハードディスク１１２、１１３への書き込みを無効にした場合、プロセッサ１０６はデータをデータキャッシュ１０９またはデータバッファ１１０から直接読み出しが可能とする。プロセッサ１０６は設定テーブル１８０１を図１８に記載の設定テーブル１９０１に更新する。ハードディスク１１２、１１３へデータの書き込みフラグをオフにする。そしてデータキャッシュ１０９へデータの書込みを許可する書き込みフラグをオンのままにして変更せず（１にする。書き込みフラグを立てる。）、データバッファ１１０への書き込みを許可する書き込みフラグもオンのままにする。
図６（ａ）は、ＲＡＩＤ管理領域１１６に格納されているデータ６０１である。データ６０１は、管理情報６０３とシステムの起動時間から構成されている。管理情報６０３は、ハードディスク１１２、１１３に障害が発生していない場合の管理情報であり、ハードディスク１１２、１１３が正常に動作していることを示す。同様にして図６（ｂ）は、ＲＡＩＤ管理領域１１９に格納されているデータ６０２である。データ６０２は、管理情報６０４とシステムの起動時間から構成されている。管理情報６０４は、ハードディスク１１２、１１３に障害が発生していない場合の管理情報であり、ハードディスク１１２、１１３が正常に動作していることを示す。【００２１】
ハードディスク１１２に障害が発生した場合、ＨＤＤコントローラ１１１は管理情報６０３を図７（ａ）に示す管理情報７０３に更新する。管理情報６０３は、ハードディスク１１２のＲＡＩＤ管理領域１１６に格納されているため、障害により更新することができる場合もあるし更新できない場合もある。図７（ａ）に示す管理情報７０３に記載のハードディスク１１２の動作状態は「（異常）」と記載してあるは、ＨＤＤコントローラ１１１が管理情報６０３を更新できた場合には、ハードディスク１１２の動作状態が「異常」と記載されることを意味している。そのため、ＨＤＤコントローラ１１１が管理情報７０３を更新することができない場合には、ハードディスク１１２の動作状態は「正常」のままである（管理情報６０３と同じ）。ＨＤＤコントローラ１１１はＲＡＩＤ管理領域１１９に格納される管理情報６０４を図７（ｂ）に示す管理情報７０４に更新する。ＨＤＤコントローラ１１１は、管理情報７０４に記載のハードディスク１１２の状態を「異常」と更新し、ハードディスク１１３の状態を「正常」のままとする。【００２２】
さらにハードディスク１１３に障害が発生した場合、ＨＤＤコントローラ１１１は管理情報７０３、７０４を図８（ａ）、図８（ｂ）に示す管理情報８０３、８０４に更新する。図８（ａ）に示す管理情報８０３に記載のハードディスク１１２、１１３の動作状態は「（異常）」である。ＨＤＤコントローラ１１１が管理情報７０３を更新できた場合には、ハードディスク１１２、１１３の動作状態が「異常」と記載されることを意味している。そのため、ＨＤＤコントローラ１１１が管理情報７０３を更新することができない場合には、ハードディスク１１２、１１３の動作状態は「正常」のままである（管理情報７０３と同じ）。図８（ｂ）に示す管理情報８０３に記載のハードディスク１１２の動作状態は「異常」であり、ハードディスク１１３の動作状態は「（異常）」である。
管理情報６０３、６０４、７０３、７０４、８０３、８０４は、ハードディスク１１２、１１３が正常に動作しているか否かを示す情報である。ＨＤＤコントローラ１１１は管理情報を随時更新する。【００２３】
またＨＤＤコントローラ１１１は、ハードディスク１１２、１１３の異常を検出する機能を有している。異常の検出の機構は具体的には例えば、診断コマンドなどをハードディスク１１２、１１３に送信し、それに対する応答信号がハードディスク１１２、１１３から正常応答信号が所定時間内に返信されるか否かを監視している。そしてＨＤＤコントローラ１１１が所定時間内に正常応答信号を受信しない場合には、ハードディスク１１２、１１３に異常が発生したと判別する。そしてＨＤＤコントローラ１１１が所定時間内に正常応答信号を受信した場合には、ハードディスク１１２、１１３に異常は発生していないと判別する。またデータの書込み又はデータの読み出しが正常に行われたか否かを監視しており、正常にデータの書込み又はデータの読み出しが行われない場合には、異常が発生したと決定する。【００２４】
図２は本実施例に係るデータの記録処理のフローチャートである。【００２５】
本実施例では、ハードディスク１１２に障害が発生してハードディスク１１２をオフラインにし、その後ハードディスク１１３に障害が発生してハードディスク１１３をオフラインにして、ＲＡＩＤ装置１００がマルチデッド状態になる場合を説明する。ハードディスクを１１２、１１３をオフラインにする順序は、ハードディスク１１３に障害が発生しハードディスク１１３をオフラインにし、その後ハードディスク１１２に障害が発生してハードディスク１１２をオフラインにする場合であってもよい。【００２６】
本実施例では、ＲＡＩＤ装置１００はミラーリング構成になっている。そのためハードディスク１１２、１１３には同一のデータが格納される。換言すれば、ＲＡＩＤ装置１００において、ハードディスク１１２、１１３が冗長構成となっている。【００２７】
まずユーザはＲＡＩＤ装置１００の電源を投入する（ステップＳ２０１）。プロセッサ１０６は、ＲＡＩＤ管理領域１１６、１１９に格納されている管理情報を参照する（ステップＳ２０２）。プロセッサ１０６は、管理情報よりディスク１１２、１１３が正常か否かを判別する（ステップＳ２０３）。【００２８】
プロセッサ１０６がハードディスク１１２、１１３共にオンラインでないと判別した場合には、ＲＡＩＤ装置１００はデータの記録処理を終了する（ステップＳ２０４）。プロセッサ１０６がハードディスク１１２又は、１１３のどちらかがオンラインであると判別した場合には、ＣＰＵモジュール１０１はハードディスク１１２のシステム領域１１４、又はハードディスク１１３のシステム領域１１７からＯＳをメモリ１０７に読み出しシステムを起動する（ステップＳ２０５）。そしてＨＤＤコントローラ１１１はＲＡＩＤ管理領域１１６、１１９にシステムの起動時刻とシステムの管理情報を書き込む（ステップＳ２０６）。ＲＡＩＤ装置１００は、ＲＡＩＤ装置１００の外部から入力されるデータをデータ領域１１５、１１８に記録しデータの更新を行う（ステップＳ２０７）。【００２９】
そしてハードディスク１１２に障害が発生する（ステップＳ２０８）。プロセッサ１０６は、ハードディスク１１２をオフラインにする（ステップＳ２０９）。そしてＲＡＩＤ装置１００は、ＲＡＩＤ装置１００の外部から入力されるデータをデータ領域１１８に記録しデータの更新を行う（ステップＳ２１０）。ハードディスク１１２はオフラインのため、データ領域１１５はデータの更新を行うことができない（ステップＳ２１１）。【００３０】
ハードディスク１１３に障害が発生する（ステップＳ２１２）。ＨＤＤコントローラ１１１は、ハードディスク１１３をオフラインにする（ステップＳ２１３）。ハードディスク１１２、１１３をオフラインにしたため、ＲＡＩＤ装置１００はシステムダウンする（ステップＳ２１４）。【００３１】
図３は本実施例に係るデータの記録復旧のフローチャートである。【００３２】
ＲＡＩＤ装置１００は、ハードディスク１１２、１１３の両方をオフラインにしてシステムダウンすると、ユーザもしくは、ＣＰＵモジュール１０１がシステムをリセットする（ステップＳ３０１）。そしてプロセッサ１０６は、ＲＡＩＤ管理領域１１６、１１９に格納されている管理情報の参照を試みる（ステップＳ３０２）。プロセッサ１０６はＲＡＩＤ管理領域１１６、１１９の管理情報を読み出し可能か否かを判別する（ステップＳ３０３）。【００３３】
ＲＡＩＤ管理領域１１６、１１９の管理情報を読み出し可能な場合には、プロセッサ１０６はＲＡＩＤ管理領域１１６、１１９の管理情報を参照する。【００３４】
そしてプロセッサ１０６は、ＲＡＩＤ管理領域１１６、１１９の管理情報にお互いのハードディスク状態が異常として記録されるなどの矛盾があるか否か判別する（ステップＳ３０４）。【００３５】
プロセッサ１０６は、ＲＡＩＤ管理領域１１６、１１９の管理情報に矛盾がないと判別した場合には、ＲＡＩＤ管理領域１１６に格納されている管理情報とＲＡＩＤ管理領域１１９に格納されている管理情報を比較し冗長構成喪失直後の状態を解析する。【００３６】
プロセッサ１０６はハードディスク１１２がＲＡＩＤ装置１００から切り離された後、ハードディスク１１３が切り離されたことを判別する。そしてプロセッサ１０６はハードディスク１１３のみオンラインにして冗長構成喪失直後の状態にした後にＣＰＵモジュール１０１はシステムを起動する（ステップＳ３０５）。【００３７】
ＲＡＩＤ管理領域１１６の管理情報には、ＨＤＤコントローラ１１１がハードディスク１１２へアクセスしたアクセス時刻などのログが記録されている。同様にＲＡＩＤ管理領域１１９の管理情報には、ＨＤＤコントローラ１１１がハードディスク１１３へアクセスしたアクセス時刻などのログが記録されている。プロセッサ１０６はこのハードディスク１１２、１１３へのアクセス時刻を比較して、ハードディスク１１２、ハードディスク１１３が切り離された順序を判別して冗長構成喪失直後の状態を解析する。またプロセッサ１０６はシステム領域１１４、１１７に記録されている起動時刻も参照することも可能であり、起動時刻よりハードディスク１１２、ハードディスク１１３が切り離された順序を判別して冗長構成喪失直後の状態を解析してもよい。【００３８】
ＲＡＩＤ管理領域１１６、１１９の管理情報を読み出し不可能な場合（ステップＳ３０３  ＮＯ）や、ＲＡＩＤ管理領域１１６、１１９の管理情報にお互いのハードディスク状態が異常として記録されるなどの矛盾があり、冗長構成喪失直後の状態を解らない場合には（ステップＳ３０４  ＹＥＳ）、プロセッサ１０６は、冗長構成喪失直後の状態を示す情報がメモリ１０７にある場合かを確認する。プロセッサ１０６はＨＤＤコントローラ１１１にハードディスク１１２への書込み禁止の設定を行う。またプロセッサ１０６は、ハードディクをオンラインにした情報がメモリ１０７に記憶されているかを確認すると、記憶されていないため、メモリ１０７にディスク１１２をオンラインにした事を記憶し、ハードディスク１１２をオンラインにする。（ステップＳ３０６）。これによりハードディスク１１２をオンラインにした場合であっても、ＨＤＤコントローラ１１１はハードディスク１１２への書込みを行わない。ＨＤＤコントローラ１１１はハードディスク１１２の全ての書き込み内容（システムの起動時刻と起動状態などを含む）をデータキャッシュ１０９に記録する。ＨＤＤコントローラ１１１はシステムの起動時刻と起動状態をデータバッファ１１０に記録する構成であってもよい。起動状態とは、ハードディスク１１２がオンラインかオフラインかを示す状態である。【００３９】
ＣＰＵモジュール１０１はＯＳがパニックや、ハングアップしシステムが正常に起動しないことを判別する（ステップＳ３０７）。ユーザもしくは、ＣＰＵモジュール１０１がシステムをリセットする（ステップＳ３０８）。プロセッサ１０６は、冗長構成喪失直後の状態を示す情報がメモリ１０７にあるかを確認する。プロセッサ１０６はＨＤＤコントローラ１１１にハードディスク１１３の書込み禁止の設定を行う。プロセッサ１０６は直前にハードディク１１２をオンラインにした情報がメモリ１０７に記憶されているかを確認し、ハードディスク１１２がオンラインになっていることを確認するため、プロセッサ１０６はハードディスク１１２をオフラインにする（ステップＳ３０９）。そしてプロセッサ１０６はハードディスク１１３をオンラインにし、メモリ１０７にディスク１１２をオフライン、ディスク１１３をオンラインにした事を記憶しておく。（ステップＳ３１０）。【００４０】
ＣＰＵモジュール１０１は、ＯＳが正常に立ち上がると、プロセッサ１０６に対してシステムが正常に動作した事を通知する。そしてメモリ１０７に格納される設定テーブルに示す書き込みフラグをすべてＯＮにしてＯＳを再起動する。プロセッサ１０６は、冗長構成喪失直後の状態を示す情報（ＲＡＩＤ装置１００が、ハードディスク１１２がオフラインで、ハードディスク１１３がオンラインの状態であることを示す情報）をメモリ１０７より参照する。【００４１】
そしてプロセッサ１０６は、ハードディク１１２をオフライン、ハードディスク１１３をオンラインにして正常に起動する（ステップＳ３１１）。【００４２】
その後、ハードディスク１１２は、障害の可能性が高いため新しいハードディスクに交換し、ハードディスク１１３からリビルドを実施する。リビルドが完了後、同様にハードディスク１１３を新しいディスクに交換し最初のミラー構成にし、システムを完全に復旧する。
デイジーチェイン接続のハードディスクにおいてバス系に異常がある場合などは、ＲＡＩＤ装置が不揮発性メモリなどに記録するログからだけでは、ログを記録する周期の間隔内に複数のハードディスクの切り離しが発生する事がある。これによりログからだけではハードディスクの切り離しの順序を特定することができず、適切にＲＡＩＤ装置を復旧することができない。本願発明によればハードディスクをオンラインにしても起動時刻などを書き込まずに起動するため、正常に起動するか否かを判別して立ち上げの順序を特定することができる。  （実施例２）
本実施例は記憶装置９００がデータ領域を複数のハードディスクに分割（ストライピングという）してデータのパリティを固定されたディスクに冗長化したＲＡＩＤ３の場合を例に説明する。また記憶装置９００は、ＲＡＩＤ３に限定されることはなく、ＲＡＩＤ５のようなパリティが複数のハードディスクに分散してもあってもよい。【００４３】
図９は、本実施例に係るＲＡＩＤ装置９００のハードブロック図である。【００４４】
＜ＲＡＩＤ装置９００＞
ＲＡＩＤ装置９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）モジュール９０１、ディスプレイコントローラ（Ｄｉｓｐｌａｙ  Ｃｏｎｔｒｏｌｌｅｒ）９０２、ディスプレイ９０３、ＬＡＮコントローラ（ＬＡＮ  Ｃｏｎｔｒｏｌｌｅｒ）９０４、ＲＡＩＤコントローラ（ＲＡＩＤ  Ｃｏｎｔｒｏｌｌｅｒ）９０５、ハードディスク（ＨＤＤ）９１２、９１３、９１４から構成される。ＣＰＵモジュール９０１は、ＲＡＩＤ装置９００を統括的に制御し、ディスプレイコントローラ９０２、ＬＡＮコントローラ９０４、ＲＡＩＤコントローラ９０５を統括的に制御する。またＣＰＵモジュール９０１はメモリなどの記録媒体を含む構成であり、ＲＡＩＤ装置９００のＯＳをメモリ上に展開してＯＳを起動するものである。ディスプレイコントローラ９０２は、ディスプレイ９０３における表示制御を行う。ＬＡＮコントローラ９０４はＲＡＩＤ装置９００が接続するネットワークの通信制御を行う。ＲＡＩＤ装置９００は、ＬＡＮコントローラ９０４を介してＲＡＩＤ装置９００の外部のネットワークより、所望のデータを取得する。【００４５】
＜ＲＡＩＤコントローラ９０５＞
ＲＡＩＤコントローラ９０５は、プロセッサ９０６、メモリ９０７、バスコントローラ９０８、データキャッシュ９０９、データバッファ９１０、ＨＤＤコントローラ９１１から構成されている。プロセッサ９０６は、ＨＤＤコントローラ９１１経由でハードディスク９１２またはハードディスク９１３にデータを書き込む／読み出す制御を行う。プロセッサ９０６はメモリ９０７に格納されている所定のプログラムを実行する。バスコントローラ９０８は、ＲＡＩＤコントローラ９０５とＣＰＵモジュール９０１でのデータのやりとりを制御する。さらにプロセッサ９０６はＨＤＤコントローラ９１１経由でハードディスク９１２、９１３、９１４との接続制御を行う。ＲＡＩＤコントローラ１０５とハードディスク９１２、９１３、９１４を接続することを「オンライン」、ＲＡＩＤコントローラ１０５とハードディスク９１２、９１３、９１４を切断することを「オフライン」と呼ぶ。ただしオフライン、オンラインに限らず、プロセッサ９０６はＨＤＤコントローラ９１１経由でハードディスク９１２、９１３から管理情報を読み出すことが可能である。データキャッシュ９０９はハードディスク９１２、９１３、９１４のアクセスを補助し、一度ハードディスク９１２、９１３、９１４にアクセスするデータを一時的に保管し、保管された情報は、ディスクに直接アクセスせずに高速化する。そまたデータバッファ９１１は、ハードディスク９１２、９１３、９１４に書き込むデータを一旦、格納する記憶部である。ハードディスク９１２、９１３、９１４は一定時間に一定のデータ量を書き込む必要があるために、データバッファ９１０は設けられている。換言すれば、データキャッシュ９０９とデータバッファ９１０は、ＣＰＵモジュール９０１またはプロセッサ９０６が書き込みを指示するデータをハードディスク９１２、９１３、９１４に格納する前に格納する。そしてデータ量が所定の容量よりも大きくなった後、ＨＤＤコントローラ９１１は、データキャッシュ９０９経由でデータバッファ９１０からデータを読み出し、ハードディスク９１２、９１３、９１４に格納する。データキャッシュ１０９と、データバッファ９１０があることによって、ＲＡＩＤ装置９００はデータの転送をハンドリングすることができる。【００４６】
ハードディスク９１２はシステム領域９１５、データ領域９１６、ＲＡＩＤ管理領域９１７より構成されている。同様にしてハードディスク９１３はシステム領域９１８、データ領域９１９、ＲＡＩＤ管理領域９２０より構成されている。ハードディスク９１４はシステム領域９２１、データ領域９２２、ＲＡＩＤ管理領域９２３より構成されている。【００４７】
システム領域９１５、データ領域９１６、ＲＡＩＤ管理領域９１７は、ハードディスク９１２を分割した領域である。同様にしてシステム領域９１８、データ領域９１９、ＲＡＩＤ管理領域９２０は、ハードディスク９１３を分割した領域であり、システム領域９２１、データ領域９２２、ＲＡＩＤ管理領域９２３は、ハードディスク９１４をパーティション分割した領域である。そしてシステム領域９１５、９１８、９２１、データ領域９１６、９１９、９２２、ＲＡＩＤ管理領域９１７、９２０、９２３の容量は可変な量であって、ハードディスク９１２、９１３、９１４のデータ容量の範囲内で可変である。【００４８】
ＲＡＩＤ３は、データのパリティ情報を格納するハードディスクをストライプアレイに付加した構成である。これによりハードディスクに障害が発生した場合、ＲＡＩＤ３はパリティ情報よりデータの再構築を行うことができる。本実施例において、ストライピングアレイはハードディスク９１２、９１３である。パリティ情報を格納するハードディスクはハードディスク９１４である。【００４９】
システム領域９１５には、ＲＡＩＤ装置９００におけるＯＳ、アプリケーションプログラムなどのストライプデータ１２０１が格納されている。同様にしてシステム領域９１８には、ＲＡＩＤ装置９００におけるＯＳ、アプリケーションプログラムなどのストライプデータ１２０２が格納されている。ストライプデータ１２０１、１２０２は、ＲＡＩＤ装置９００におけるＯＳ、アプリケーションプログラムなどのデータを分散したデータである。ストライプデータ１２０１、１２０２の分散比率等は、ユーザが設定することができる。そしてシステム領域９２１には、ストライプデータ１２０１とストライプデータ１２０２の排他的論理和であるパリティデータ９２１１が格納されている。【００５０】
データ領域９１６、９１９にはＲＡＩＤ装置９００のデータが分散され、それぞれにストライプデータ９１６１、９１９１格納されている。そしてデータ領域９２１にはデータ領域９１６に格納されるストライプデータ９１６１とデータ領域９１９に格納されるストライプデータ９１９１との排他的論理和であるパリティデータ９２２１が格納されている。ここでデータとはユーザの個人情報などであって、ＲＡＩＤ装置１００を制御するプログラムなどとは異なる情報である。【００５１】
ＲＡＩＤ管理領域９１７、９２０、９２３にはＲＡＩＤ装置９００の管理情報が分散されずそれぞれに独立して管理データ９１７、９２０、９２３に格納されている。管理情報とは、ハードディスク９１２、９１３、９１４が正常か否かを示す情報であり、プロセッサ９０６がＨＤＤコントローラ９１１経由で更新を行う。【００５２】
図１２（ａ）は、本実施例に係るシステム領域９１５に格納されているストライプデータ１２０１である。ストライプデータ１２０１は、ＲＡＩＤ装置９００において起動するＯＳ１２０５から構成されている。ストライプデータ１２０１は、ＲＡＩＤ装置９００におけるＯＳ、アプリケーションプログラムから構成されるデータを分散したデータであるため、ＯＳ１２０５、アプリケーションプログラム１２０７は、これらＯＳ、アプリケーションプログラム、設定テーブルの一部分である。同様にして図１２（ｂ）は、本実施例に係るシステム領域９１８に格納されているストライプデータ１２０２である。ストライプデータ１２０２は、ＲＡＩＤ装置９００において起動するＯＳ１２０６、アプリケーションプログラム１２０８から構成されている。ＯＳ１２０５とＯＳ１２０６の和がＲＡＩＤ装置９００のＯＳである。同様にしてアプリケーションプログラム１２０７とアプリケーションプログラム１２０８の和がＲＡＩＤ装置９００のアプリケーションプログラムである。本実施例において、ストライプデータ１２０１、１２０２は共に、ＯＳ、アプリケーションプログラムの一部分を有するが、分散の仕方はこれに限定されることはない。例えばシステム領域９１５にはＲＡＩＤ装置９００のＯＳを格納し、システム領域９１８はＲＡＩＤ装置９００のアプリケーションプログラムを格納する構成であってもよい。【００５３】
図１９に記載の設定テーブル２００１はハードディスク９１２、ハードディスク９１３、ハードディスク９１４、データキャッシュ９０９、データバッファ１１０へのデータの書込み／読み出しを決定する書き込みフラグのオン／オフの一部を示すテーブルである。初期設定では設定テーブル２００１の書込みフラグはすべてオンになっている。設定テーブル２００１はメモリ９０７に格納されている。【００５４】
本実施例において、ＲＡＩＤ装置９００はパラレルアクセスアレイ構成になっているため、ＯＳ１２０５とＯＳ１２０６は異なる内容を示すデータである。同様にして、アプリケーションプログラム１２０７と１２０８も異なる内容を示すデータである。【００５５】
さらにパリティデータ１３０１はストライプデータ１２０１とストライプデータ１２０２の排他的論理和のデータである。プロセッサ９０６は、パリティデータ１３０１を算出する。パリティデータ１３０１は、そのため例えばハードディスク９１２に障害が発生し、ストライプデータ１２０１を読み出すことができない場合、パリティデータ１３０１とストライプデータ１２０２からストライプデータ１２０１を復元することができる。同様にしてハードディスク９１３に障害が発生し、ストライプデータ１２０２を読み出すことができない場合、パリティデータ１３０１とストライプデータ１２０１からストライプデータ１２０２を復元することができる。【００５６】
本実施例において、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）設定などにおいて、ユーザはデータキャッシュ１０９、データバッファ１１０、ハードディスク９１２、９１３、９１４の書込みを有効/無効にするフラグのオン／オフを設定する。ハードディスク９１２、９１３、９１４への書込みフラグをオフにすると、設定テーブル２００１が更新される。データキャッシュ９０９へデータの書込みを許可する書き込みフラグをオンのままにして変更せず、データバッファ１１０への書き込みを許可する書き込みフラグもオンのままにする。ユーザ若しくはＣＰＵモジュール９０１がＲＡＩＤ装置９００をリブートしたとき、ハードディスク９１２、９１３、９１４の書込みフラグをオフに設定することによって、ハードディスク９１２、９１３、９１４へ起動に伴う初期データの書き込みを禁止することができる。初期データはＯＳの起動時刻、起動状態などを含み、システムの起動に伴う設定データやログデータである。【００５７】
図１４（ａ）は、ＲＡＩＤ管理領域９１７に格納されている管理データ１４０１である。管理データ１４０１は、管理情報１４０３とシステムの起動時間１４０５から構成されている。管理情報１４０３は、ハードディスク９１２、９１３、９１４に障害が発生していない場合の管理情報であり、ハードディスク９１２、９１３、９１４が正常に動作していることを示す。同様にして図１４（ｂ）は、ＲＡＩＤ管理領域９２０に格納されている管理データ１４０２である。管理データ１４０２は、管理情報１４０４とシステムの起動時間１４０６から構成されている。管理情報１４０４は、ハードディスク９１２、９１３、９１４に障害が発生していない場合の管理情報であり、ハードディスク９１２、９１３、９１４が正常に動作していることを示す。同様にして図１４（ｃ）は、ＲＡＩＤ管理領域９２３に格納されている管理データ１４０７である。管理データ１４０７は、管理情報１４０８とシステムの起動時間１４０９から構成されている。管理情報１４０８は、ハードディスク９１２、９１３、９１４に障害が発生していない場合の管理情報であり、ハードディスク９１２、９１３、９１４が正常に動作していることを示す。【００５８】
ハードディスク９１２に障害が発生した場合、プロセッサ９０６は、ＨＤＤコントローラ９１１経由で、管理情報１４０３を図１５（ａ）に示す管理情報１６０３に更新する。管理情報１６０３は、ハードディスク９１２のＲＡＩＤ管理領域９１７に格納されているため、障害により更新することができる場合もあるし更新できない場合もある。図１５（ａ）に示す管理情報１６０３に記載のハードディスク９１２の動作状態は「（異常）」と記載してあるは、ＨＤＤコントローラ９１１が管理情報１４０３を更新できた場合には、ハードディスク９１２の動作状態が「異常」と記載されることを意味している。プロセッサ９０６は、ハードディスク９１３、９１４の状態を「正常」のままとする。そのため、プロセッサ９０６は、ＨＤＤコントローラ９１１経由で、管理情報１４０３を更新することができない場合には、ハードディスク９１２の動作状態は「正常」のままである。プロセッサ９０６はＲＡＩＤ管理領域９２０に格納される管理情報１４０４を図１５（ｂ）に示す管理情報１６０４に更新する。プロセッサ９０６は、管理情報１４０４に記載のハードディスク９１２の状態を「異常」と更新し、ハードディスク９１３、９１４の状態を「正常」のままとする。プロセッサ９０６はＲＡＩＤ管理領域９２３に格納される管理情報１４０７を図１５（ｃ）に示す管理情報１６０７に更新する。プロセッサ９０６は、管理情報１４０７に記載のハードディスク９１２の状態を「異常」と更新し、ハードディスク９１３、９１４の状態を「正常」のままとする。【００５９】
さらにハードディスク９１３に障害が発生した場合、プロセッサ９０６は管理情報１６０３、１６０４、１６０７を図１６（ａ）、図１６（ｂ）、図１６（ｃ）に示す管理情報１７０３、１７０４、１７０８に更新する。図１６（ａ）に示す管理情報１６０３に記載のハードディスク９１２、９１３の動作状態は「（異常）」である。プロセッサ９０６が管理情報１６０３を更新できた場合には、ハードディスク１１２、１１３の動作状態が「異常」と記載されることを意味している。そのため、プロセッサ９０６が管理情報１６０３を更新することができない場合には、ハードディスク９１２、９１３の動作状態は「正常」のままである（管理情報１６０３と同じ）。図１６（ｂ）に示す管理情報１７０３に記載のハードディスク９１２の動作状態は「異常」であり、ハードディスク９１３の動作状態は「（異常）」であり、ハードディスク９１４の動作状態は「正常」のままである。図１６（ｃ）に示す管理情報１７０７に記載のハードディスク９１２、９１３の動作状態は「異常」であり、ハードディスク９１４の動作状態は「正常」のままである。【００６０】
管理情報１４０３、１４０４、１４０７、１６０３、１６０４、１４０７、１７０３、１７０４、１４０７は、ハードディスク９１２、９１３、９１４が正常に動作しているか否かを示す情報である。プロセッサ９０６は、管理情報を随時更新する。また管理情報を比較して矛盾がある場合あり、矛盾とは、管理情報に記載されているハードディスク９１２、９１３、９１４の「正常」、「異常」の一致が取れないことである。
またＨＤＤコントローラ９１１は、ハードディスク９１２、９１３、９１４の異常を検出する機能を有している。異常の検出の機構は例えば、ＨＤＤコントローラ９１１が診断コマンドなどの信号をハードディスク９１２、９１３、９１４に送信し、それに対する正常応答信号がハードディスク９１２、９１３、９１４から所定時間内に返信されるか否かを監視している。そしてＨＤＤコントローラ９１１が所定時間内に正常応答信号を受信しない場合には、ハードディスク９１２、９１３、９１４に異常が発生したと判別する。そしてＨＤＤコントローラ９１１が所定時間内に応答信号を受信した場合には、ハードディスク９１２、９１３、９１４に異常は発生していないと判別する。またデータの書込み又はデータの読み出しが正常に行われたか否かを監視しており、正常にデータの書込み又はデータの読み出しが行われない場合には、異常が発生したと決定する。  図１０は本実施例に係るデータの記録処理のフローチャートである。【００６１】
本実施例では、ハードディスク９１２に障害が発生しハードディスク９１２をオフラインにし、その後ハードディスク９１３に障害が発生してハードディスク９１３をオフラインにして、ＲＡＩＤ装置９００がマルチデッド状態になる場合を説明する。ハードディスク９１２、９１３をオフラインにする順序は、ハードディスク９１３をオフラインにし、その後ハードディスク９１２をオフラインにする場合であってもよい。【００６２】
まずユーザはＲＡＩＤ装置９００の電源を投入する（ステップＳ１００１）。プロセッサ９０６は、ＲＡＩＤ管理領域９１７、９２０、９２３に格納されている管理情報を参照する（ステップＳ１００２）。【００６３】
ＣＰＵモジュール９０１はシステム領域９１５、９１８、９２１からＯＳをメモリ９０７に読み出し、システムを起動する（ステップＳ１００３）。そしてプロセッサ９０６は、ＨＤＤコントローラ９１１経由で、ＲＡＩＤ管理領域９１７、９２０、９２３にシステムの起動時刻とシステムの管理情報を書き込み、管理データを更新する（ステップＳ１００４）。ＲＡＩＤ装置９００は、ＲＡＩＤ装置９００の外部から入力されるデータをデータ領域９１６、９１８、９２２に記録しデータの更新を行う（ステップＳ１００５）。プロセッサ９０６は、データ領域９１６のストライプデータとデータ領域９１９のストライプデータの排他的論理和を計算し、パリティデータを算出する（ステップＳ１００６）。そしてプロセッサ９０６は、ＨＤＤコントローラ９１１経由で、パリティデータをデータ領域９２２に格納する（ステップＳ１００７）。【００６４】
そしてハードディスク９１２に障害が発生する（ステップＳ１００８）。プロセッサ９０６は、ＨＤＤコントローラ９１１経由で、ハードディスク９１２をオフラインにする（ステップＳ１００９）。そしてＲＡＩＤ装置９００は、ＲＡＩＤ装置９００の外部から入力されるデータをデータ領域９１９に記録しデータの更新を行う（ステップＳ１０１０）。プロセッサ９０６は、ＨＤＤコントローラ９１１経由で、データ領域９２２のパリティデータの更新を行う（ステップＳ１０１１）ハードディスク９１２はオフラインのため、データ領域９１６はデータの更新を行うことができない（ステップＳ１０１２）。【００６５】
ハードディスク９１３に障害が発生する（ステップＳ１０１３）。プロセッサ９０６は、ＨＤＤコントローラ９１１経由で、ハードディスク９１３をオフラインにする（ステップＳ１０１４）。ハードディスク９１２、９１３をオフラインにしたため、ＲＡＩＤ装置９００はシステムダウンする（ステップＳ１０１５）。【００６６】
図１１は本実施例に係るデータの記録復旧のフローチャートである。【００６７】
ＲＡＩＤ装置９００は、ハードディスク９１２、９１３の両方を切り離してシステムダウンすると、ユーザもしくは、ＣＰＵモジュール１０１がシステムをリセットする（ステップＳ１１０１）。そしてプロセッサ９０６は、ＲＡＩＤ管理領域９１７、９２０、９２３に格納されている管理情報の参照を試みる（ステップＳ１１０２）。プロセッサ９０６はＲＡＩＤ管理領域９１７、９２０、９２３の管理情報を読み出し可能か否かを判別する（ステップＳ１１０３）。【００６８】
ＲＡＩＤ管理領域９１７、９２０、９２３の管理情報を読み出し可能な場合には、プロセッサ９０６はＲＡＩＤ管理領域９１７、９２０、９２３の管理情報を参照する。【００６９】
そしてプロセッサ９０６は、ＲＡＩＤ管理領域９１７、９２０、９２３の管理情報にハードディスク状態が異常として記録されるなどの矛盾があるか否か判別する（ステップＳ１１０４）。【００７０】
プロセッサ９０６は、ＲＡＩＤ管理領域９１７、９２０、９２３の管理情報に矛盾がないと判別した場合には、ＲＡＩＤ管理領域９１７、９２０、９２３に格納されている管理情報を比較し、冗長構成喪失直後の状態を解析する。【００７１】
プロセッサ９０６はハードディスク９１２をオフラインにした後に、ハードディスク９１３をオフラインにしたことを判別する。そしてプロセッサ９０６はハードディスク９１３のみオンラインにして（クリティカル状態にして）、ユーザ若しくは、ＣＰＵモジュール９０１はシステムを起動する（ステップＳ１１０５）。【００７２】
ＲＡＩＤ管理領域９１７には、ＨＤＤコントローラ９１１がハードディスク９１２へアクセスしたアクセス時刻などのログが記録されている。同様にＲＡＩＤ管理領域９２０には、ＨＤＤコントローラ９１１がハードディスク９１３へアクセスしたアクセス時刻などのログが記録されている。同様にＲＡＩＤ管理領域９２３には、ＨＤＤコントローラ９１１がハードディスク９１４へアクセスしたアクセス時刻などのログが記録されている。プロセッサ９０６はこのＨＤＤコントローラ９１１がハードディスク９１２、９１３、９１４へアクセスしたアクセス時刻を比較して、ハードディスク９１２、ハードディスク９１３をオフラインにした順序を判別し、冗長構成喪失直後の状態を解析する。【００７３】
またプロセッサ９０６はシステム領域９１５、９１８に記録されている起動時刻、及びシステム領域９２１のパリティデータを参照することも可能である。起動時刻よりハードディスク９１２、ハードディスク９１３がオフラインになった順序を判別する構成であってもよい。【００７４】
ＲＡＩＤ管理領域９１７、９２０、９２３の管理情報を読み出し不可能な場合（ステップＳ１１０３  ＮＯ）や、ＲＡＩＤ管理領域９１７、９２０、９２３の管理情報にハードディスク状態が異常として記録されるなどの矛盾があり、冗長構成喪失直後の状態を解らない場合には（ステップＳ１１０４  ＹＥＳ）、プロセッサ９０６は、冗長構成喪失直後の状態を示す情報がメモリ９０７にある場合かを確認する。プロセッサ９０６はＨＤＤコントローラ９１１にハードディスク９１２への書込み禁止の設定を行う。またプロセッサ９０６は、ハードディク１１２をオンラインにした情報がメモリ９０７に記憶されているかを確認すると、記憶されていないため、メモリ９０７にディスク９１２をオンラインにした事を記憶し、ハードディスク９１２をオンラインにする（ステップＳ１１０６）。ＨＤＤコントローラ９１１がハードディスク９１２への書込みは行わないように、ユーザは予めメモリ９０７に格納されている設定テーブルのハードディスク９１２、９１３、９１４の書き込みフラグをオフにしておく。そのためハードディスク９１２をオンラインにした場合であっても、ＨＤＤコントローラ９１１はハードディスク９１２への書込みを行わない。ＨＤＤコントローラ９１１はハードディスク９１２、９１４の全ての書き込み内容（システムの起動時刻と起動状態などを含む）をデータキャッシュ９０９に記録する。ＨＤＤコントローラ９１１は９１２、９１４の全ての書き込み内容をデータバッファ９１０に記録する構成であってもよい。ハードディスク９１２の起動状態とは、ハードディスク９１２がオンラインかオフラインかを示す状態である。【００７５】
ＣＰＵモジュール９０１はＯＳがパニックや、ハングアップしシステムが正常に起動しないことを判別する（ステップＳ１１０７）。ユーザもしくは、ＣＰＵモジュール９０１がシステムをリセットする（ステップＳ１１０８）。プロセッサ９０６はハードディスク９１２をオフラインにする（ステップＳ１１０９）。そしてプロセッサ９０６はハードディスク９１３をオンラインにし、メモリ９０７にディスク９１２をオフライン、ディスク９１３、９１４をオンラインにした事を記憶しておく。（ステップＳ１１１０）。【００７６】
ＣＰＵモジュール９０１は、ＯＳが正常に立ち上がると、プロセッサ９０６に対してシステムが正常に動作した事を通知する。そしてメモリ９０７に格納される設定テーブルに示す書き込みフラグをすべてＯＮにしてＯＳを再起動する。プロセッサ９０６は、冗長構成喪失直後の状態を示す情報（ＲＡＩＤ装置９００が、ハードディスク９１２がオフラインで、ハードディスク９１３、９１４がオンラインの状態であることを示す情報）をメモリ９０７より参照する。【００７７】
そしてプロセッサ９０６は、ハードディク９１２をオフライン、ハードディスク９１３、９１４をオンラインにして正常に起動する（ステップＳ１１１１）。またこのとき、ＲＡＩＤ管理領域９２０、９２３に格納されている管理情報に示すハードディスク９１３の動作状態を「正常」に更新する。【００７８】
その後、ハードディスク９１２は、障害の可能性が高いため新しいハードディスクに交換し、ハードディスク９１３、９１４からリビルドを実施する。リビルドが完了後、同様にハードディスク９１３を新しいディスクに交換し最初のＲＡＩＤ３構成にし、システムを完全に復旧する。
本実施例におけるＲＡＩＤ装置９００では、ハードディスク９１２、９１３、９１４のうち複数のハードディスクに障害が発生した場合であっても、正しい順序でハードディスクをオンラインにしてシステムを正常に起動することができる。ハードディスクのオンラインにする順序を特定して、ハードディスク９１２、９１３、９１４へのデータの誤書込みを防止できるため、ＲＡＩＤ装置９００はハードディスク９１２、９１３、９１４のデータを救済することができる。
本発明に係る判別手段が行う処理は、プロセッサが行う処理に含まれる。本発明における起動手段が行う処理は、ＣＰＵモジュールが行う処理に含まれる。本発明における格納手段が行う処理は、データキャッシュ、データバッファが行う処理に含まれる。本発明に係る稼動手段、特定手段が行う処理は、ＣＰＵ、プロセッサが行う処理に含まれる。本発明に係る書込み手段が行う処理は、ＨＤＤコントローラが行う処理に含まれる。  また本実施例において、データを記録する記録媒体はハードディスク９１２、９１３、９１４であるが、これに限られることはなく、揮発性記録媒体であるメモリや不揮発性記録媒体のフラッシュメモリなどであってもよい。
【産業上の利用可能性】
【００７９】
本発明による記憶装置は、記録されたデータの復旧を行うものである。したがって、本発明による記憶装置は、障害の発生したディスクに記録されたデータを取得するうえで極めて有用である。
【図１】
2008090620.tif 000003
【図２】
2008090620.tif 000004
【図３】
2008090620.tif 000005
【図４】
2008090620.tif 000006
【図５】
2008090620.tif 000007
【図６】
2008090620.tif 000008
【図７】
2008090620.tif 000009
【図８】
2008090620.tif 000010
【図９】
2008090620.tif 000011
【図１０】
2008090620.tif 000012
【図１１】
2008090620.tif 000013
【図１２】
2008090620.tif 000014
【図１３】
2008090620.tif 000015
【図１４】
2008090620.tif 000016
【図１５】
2008090620.tif 000017
【図１６】
2008090620.tif 000018
【図１７】
2008090620.tif 000019
【図１８】
2008090620.tif 000020
【図１９】
2008090620.tif 000021
【手続補正書】
【提出日】平成21年7月23日(2009.7.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置において、
休止した記録媒体が複数であるか否かを判別する判別手段と、
複数の記録媒体の休止を判別した該記憶装置を再起動する起動手段と、
該記憶装置の起動に伴う初期データを格納する格納手段と、
休止した記録媒体のいずれか一つを稼動する稼動手段と、
該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手段と、
該特定手段において、稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込み手段と、
からなることを特徴とする記憶装置。
【請求項２】
請求項１に記載の記憶装置において、
該特定手段は、稼動した記録媒体に記録される履歴情報を参照して該稼動順序を特定することを特徴とする記憶装置。
【請求項３】
請求項１に記載の記憶装置において、
該特定手段は、該記憶装置の動作設定を参照して該稼動順序を特定することを特徴とする記憶装置。
【請求項４】
請求項１に記載の記憶装置において、
該特定手段は、該記憶装置が有するオペレーションシステムの動作状態を参照して該稼動順序を特定することを特徴とする記憶装置。
【請求項５】
請求項１に記載の記憶装置において、
該複数の記録媒体に同一のデータを格納することを特徴とする記憶装置。
【請求項６】
請求項１に記載の記憶装置において、
該複数の記録媒体にデータを分散して記録し、さらに分散した分散データの排他的論理和を格納することを特徴とする記憶装置。
【請求項７】
複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置が記録するデータを復旧する記録復旧方法において、
休止した記録媒体が複数であるか否かを判別する判別手順と、
複数の記録媒体の休止を判別した該記憶装置を再起動する起動手順と、
該記憶装置の起動に伴う初期データを格納する格納手順と、
休止した記録媒体のいずれか一つを稼動する稼動手順と、
該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定手順と、
稼動順序が正しいと判別した記録媒体に対して、該格納手順に格納した該初期データを記録する書込み手順と、
からなることを特徴とする記録復旧方法。
【請求項８】
複数の記録媒体を有し、障害を検出した記録媒体を休止する記憶装置が記録するデータを復旧する記録復旧プログラムにおいて、
休止した記録媒体が複数であるか否かを判別する判別ステップと、
複数の記録媒体の休止を判別した該記憶装置を再起動する起動ステップと、
該記憶装置の起動に伴う初期データを格納する格納ステップと、
休止した記録媒体のいずれか一つを稼動する稼動ステップと、
該稼動した記録媒体に該初期データの書込みを禁止し、稼動する記憶装置の稼動順序を特定する特定ステップと、
稼動順序が正しいと判別した記録媒体に対して、該格納手段に格納した該初期データを記録する書込みステップと、
をコンピュータに実行させることを特徴とする記録復旧プログラム。
【国際調査報告】
2008090620.tif 000022
2008090620.tif 000023
2008090620.tif 000024
2008090620.tif 000025