(57)【特許請求の範囲】
【請求項１】
複数の物理ドライブで構成される論理ドライブグループを複数有するディスクドライブ装置と、前記ディスクドライブ装置と上位装置との間に介在し、両者間における情報の授受を制御するディスクドライブ制御装置とからなる記憶装置であって、
前記ディスクドライブ制御装置の一部に不揮発メモリを設け、前記ディスクドライブ装置に対して、複数のデータブロックに分割され、さらに冗長データを付加した形式で格納されている論理データを読み出して前記上位装置に転送する時、前記論理データを格納しているいずれかの前記物理ドライブの前記データブロックに障害が発生した時、前記論理データを構成する障害データブロック以外の残りのデータブロックと冗長データにより、当該障害データブロックを復元して前記上位装置に転送するとともに、復元データブロックを前記不揮発メモリに格納しておき、前記論理データに対する新たな読み出し要求時、当該論理データ内の障害データブロック以外の残りのデータブロックは前記各物理ドライブから読み出し、前記障害データブロックに対応するデータは、前記不揮発メモリに格納されている前記復元データブロックを用いて前記上位装置に転送することにより読み出し処理を行い、前記障害データブロックに対する交代ブロックの割り当てが完了した時、前記不揮発メモリに格納してある前記復元データブロックを、割り当てられた交代ブロックに書き込むことで前記物理ドライブのデータ回復を行い、
前記ディスクドライブ装置に対して、前記上位装置から転送されて来た論理データを複数のデータブロックに分割し、さらに冗長データを付加した形式で格納する場合、前記論理データを格納しているいずれかの前記物理ドライブのデータブロックに障害が発生した時、前記論理データから冗長データを生成し、論理データを構成するデータブロックのうち障害データブロックを除く残りの前記データブロックと前記冗長データを前記物理ドライブへ格納するとともに、障害データブロックに対する更新データブロックを前記不揮発メモリに格納した時点で前記上位装置に対して書き込み完了を報告し、前記論理データに対する新たな更新要求時には、障害データブロックの更新データブロックを不揮発メモリ上で更新し、当該論理データ内の他の更新データブロックは、格納対象の物理ドライブに書き込むことにより更新処理を行い、前記障害データブロックに対する交代ブロックの割り当てが完了した時、前記不揮発メモリに格納してある前記更新データブロックを割り当てられた前記交代ブロックに書き込むことにより、前記物理ドライブのデータ回復を行い、
アクセス範囲に前記障害データブロックが在ると判明した時には、当該障害データブロックが前記不揮発メモリ内に存在するか否かを判断し、
当該障害データブロックが前記不揮発メモリに存在する時、当該処理要求が更新処理か否かを判断し、更新処理ならば、当該障害データブロックに対する更新データブロックは、前記不揮発メモリにて更新し、更新処理ではないと判明した時には、前記障害データブロックが格納されている不揮発メモリアドレスを求め、当該アドレスが指し示すエリアの情報を読み込み、対象データブロックとして中央処理装置へ転送し、
また、目的のデータブロックが前記不揮発メモリに存在していないと判明した場合には、さらに更新処理か否かを判断し、更新処理でない場合には、前記障害データブロック以外の健全なデータブロックと冗長データブロックにより前記障害データブロックを復元し、中央処理装置へ転送するとともに、復元された障害データブロックを不揮発メモリへ格納し、更新処理であると判断された場合には、前記障害データブロック対応の更新データブロックを前記不揮発メモリへ格納することを特徴とする記憶装置。
【請求項２】
前記障害データブロックに対する前記更新データブロックまたは復元データブロックを前記不揮発メモリに格納するか否かの判断を、前記論理データ内における前記障害データブロックの数と、当該論理データ内の前記冗長データの数とを比較してデータ回復が可能な限界まで障害データブロックが発生したか否かに基づいて行い、データ回復が可能な限界まで障害データブロックが発生してしまい前記論理データの喪失の危険度が高いと判断された時、前記障害データブロックの前記更新データブロックまたは復元データブロックを前記不揮発メモリに格納することを特徴とする請求項１記載の記憶装置。
【請求項３】
前記障害データブロックに対する前記更新データブロックまたは復元データブロックの前記不揮発メモリに対する格納を行うか否かの判断を、前記上位装置にて稼働するユーザプログラムまたはオペレータの指示によって任意に設定可能にしたことを特徴とする請求項１または２記載の記憶装置。
【請求項４】
前記障害データブロックを含む前記論理データの喪失の危険度が低い時でも、障害データブロックの発生から、前記障害データブロック以外の残りのデータブロックと冗長データブロックにより前記障害データブロックに対応した復元データブロックを生成する回復までの間に当該論理データに対する前記上位装置からの新たなアクセスが発生した場合、更新要求時は、前記障害データブロックに対するデータブロックを前記不揮発メモリに残し、読み出し要求の場合には、前記障害データブロック以外の残りのデータブロックと冗長データブロックにより前記障害データブロックに対応した復元データブロックを生成し、当該復元データブロックを前記不揮発メモリに格納することを特徴とする請求項１または２記載の記憶装置。
【請求項５】
前記各物理ドライブグループ毎に、前記障害データブロックに対する交代ブロックの割り当て状況を記憶する管理テーブルを設け、前記障害データブロックに対する前記交代ブロックの割り当ての際、同一トラック内に割り当てた交代ブロック用の領域が全て他の障害データブロックの交代ブロックとして割り当て済みで、同一トラック内に割り当て領域が存在しない時、当該物理ドライブを自動的に閉塞状態とすることを特徴とする請求項１または２記載の記憶装置。
【請求項６】
請求項５における前記物理ドライブの閉塞実行の判断基準を、前記上位装置において稼働するユーザプログラムまたはオペレータの指示によって設定可能にしたことを特徴とする請求項１または２記載の記憶装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、記憶技術に関し、特に、複数台のディスクドライブに対して並列にデータの書き込みおよび読み出し処理を行うディスクアレイなどに適用して有効な技術に関する。
【０００２】
【従来の技術】
たとえば、情報処理技術の分野では、半導体技術に立脚した中央処理装置における処理速度の進歩は著しいものがあり、これに対して、磁気ディスク装置などの外部記憶装置は、機械的な動作を伴うという原理上の制約から単体としてのデータ転送速度などの動作性能の飛躍的な向上は困難である。
【０００３】
このため、たとえば、特開昭６２−２４４８１号公報などに開示されるディスクアレイ技術が提案されている。
【０００４】
すなわち、中央処理装置などの上位装置から到来する論理データを複数のデータブロックに分割するとともに、複数のパリティデータブロックを付加し、これらの各データブロックの各々を複数物理ドライブに並列に書き込み／読み出し処理を行うことにより、データ転送速度の向上を実現しようとするものである。
【０００５】
この場合、論理データを構成するデータブロックおよびパリティデータブロックに対するアクセスを高速化すべく、各物理ドライブには同期回転が掛けられていることが多い。論理データを構成しているデータブロックのいずれかに障害が発生した場合、障害データブロック以外のデータブロックとパリティブロックを同期回転により同時にアクセスし、オンザフライで障害データブロックを復元して転送し、高速なデータ転送を実現している。
【０００６】
なお、上記の従来技術では、障害データブロックのデータ回復方法については記載されていないが、一般的なＳＬＥＤ（Ｓｉｎｇｌｅ  Ｌａｒｇｅ  Ｅｘｔｅｎｓｉｖｅ  Ｄｉｓｋ）  型ディスク装置では、交代ブロックを交代ブロック専用トラック内に設けて信頼性を維持している。
【０００７】
【発明が解決しようとする課題】
上記従来技術によると、障害データブロックに対する回復処理は、
▲１▼．障害データブロックを、交代ブロック専用トラック、または同一トラック内交代エリアに割りつける。
【０００８】
▲２▼．障害データブロックを除くデータブロックと冗長データブロックを物理ドライブより読み出す。
【０００９】
▲３▼．障害データブロックを除くデータブロックと冗長データブロックより障害データブロックを復元する。
【００１０】
▲４▼．復元したデータブロックを交代ブロックに格納する。
【００１１】
ということにより実現されている。このような方法を用いる従来技術では次に示すような問題がある。
【００１２】
たとえば、障害データブロックを含む論理データの冗長度が１（論理データ内のパリティデータブロックが１個であり、障害データブロックを復元させる能力が１データブロック）の時、復元データブロックを生成し、交代ブロックを書き込むまでの間に、更に別のデータブロックに障害が起こると、データブロック２個の障害となり、冗長度が１の論理データではデータ回復が不可能となり、論理データの喪失となる。
【００１３】
また、障害データブロックを含む論理データの冗長度と、障害データブロック数によって判断されるデータ喪失の危険度に関係なくデータ回復処理は同一であり、論理データに対する信頼性にばらつきが生じ、サブシステムとしての信頼性の低下をもたらすこととなる。一方、データ回復処理と通常のデータ更新処理との競合について考えてみると、上記従来技術によれば、論理データに付加された冗長データブロックと障害データブロック以外のデータブロックを対応する物理ドライブに格納することで上位装置に対する更新処理は終了するが、その後に行われるデータ回復処理は障害データブロック以外のデータブロックと冗長データブロックを対応する物理ドライブから読み出し、データ復元後、当該データブロックを交代ブロックに格納する、といった動作が必要であり、当該回復処理のために複数の物理ドライブが占有されるため、通常のデータ転送がその間は行えなくなり、サブシステムとしての性能低下となる。
【００１４】
また、論理データを構成する複数のデータブロックをそれぞれの物理ドライブに同時にアクセスすることにより、高速転送を実現しているが、交代ブロックの割り当てにより論理データを構成するデータブロックの物理的な位置がずれるため、アクセス時間（ヘッドの位置付け時間）にばらつきが発生し、性能低下につながる。さらに、障害データブロックが発生する毎に交代ブロックを交代ブロックエリア分まで無制限に割り当てていると、別トラック，別シリンダへの割り当てとなり、アクセス時間のばらつきはますます増大し、サブシステムとしての性能低下の原因となる。
【００１５】
本発明の目的は、データ障害の回復処理中に起こる重複障害によるデータ喪失を確実に防止することが可能な記憶技術を提供することにある。
【００１６】
本発明の他の目的は、データ障害の回復処理に伴う、上位装置との間のデータ転送の性能低下を防止することが可能な記憶技術を提供することにある。
【００１７】
本発明のさらに他の目的は、交代ブロックの割り当てに起因するアクセス性能の低下を防止することが可能な記憶技術を提供することにある。
【００１８】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【００１９】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
【００２０】
すなわち、本発明の記憶装置は、ディスクドライブ装置と上位装置との間に介在するディスクドライブ制御装置の一部に不揮発メモリを設け、論理データをディスクドライブに書き込む更新時に発生した障害データブロックに対する更新データブロックを不揮発メモリに格納し、当該更新データブロックの物理ドライブに対する回復処理以前の当該論理データに対する更新処理は、障害データブロックに対応する更新データについては不揮発メモリ上で更新し、不揮発メモリ上にない時は、本処理中に更新データを不揮発メモリへ格納する、という動作を行うものである。
【００２１】
また、論理データをディスクドライブから読み出す時に発生した障害データブロックは、他のデータブロックと冗長データブロックとによって復元して不揮発メモリに格納し、不揮発メモリ上の復元データブロックを物理ドライブに格納するデータ回復処理の前に、当該論理データに対する読み出し要求が発生した時は、不揮発メモリに格納されている障害データブロックの復元データブロックと、物理ドライブから読み出された他の健全なデータブロックおよび冗長データブロックとを上位装置に転送し、不揮発メモリ上に障害データブロックの復元データブロックが無い時は、本読み出し処理中に復元されたデータブロックを不揮発メモリに格納する、という動作を行うものである。
【００２２】
また、障害データブロックの発生時に、当該障害データブロックを不揮発メモリに格納するか否かの判断は、当該論理データの冗長度と障害データブロックの発生数を比較するか、ユーザの指示によって行うようにしたものである。
【００２３】
また、物理ドライブにおける交代ブロックの割り当てが完了した時点で、不揮発メモリ内の復元データブロックを当該交代ブロックに書き出す、という動作を行うものである。
【００２４】
また、障害データブロックに対する交代ブロックの割り当てを、ユーザの指示または自動的に制限し、それ以上の障害データブロックが発生した場合には、当該物理ドライブを閉塞状態として、ドライブ交換を促すものである。
【００２５】
【作用】
上位装置からのデータ転送中に論理データの一部に障害データブロックが発生した時、当該障害データブロックの復元データブロックを不揮発メモリに格納しておくことにより、当該障害データブロックのデータが物理ドライブに格納されるデータ回復までの間に当該論理データの他のデータブロックに障害が発生した時、たとえば当該論理データの冗長度が１だとしても、不揮発メモリに復元データブロックが存在しているため、障害データブロック数は１となり、論理データの復元が可能となり、多重障害の発生時におけるデータ喪失が確実に防止される。
【００２６】
また、たとえば、不揮発メモリへの格納を、当該論理データの冗長度と障害データブロックの数を比較し、両者が等しい時、すなわち、これ以上同一論理データ内に障害データブロックが発生するとデータ喪失となる状態の時に、実行するという判定論理を持つことにより、データ喪失の危険度が記憶装置において均一化され、信頼性が向上する。
【００２７】
また、ユーザからの指示によって、論理データファイルに対する信頼性を高く要求された時に不揮発メモリへの格納を行うことにより、各論理データファイル毎に、要求された信頼性を提供することができる。
【００２８】
また、交代ブロック割り当て後の物理ドライブに対するデータ格納処理に際して、不揮発メモリ内の復元データブロックを対応する一つの物理ドライブに書き込むだけでよく、他の物理ドライブは復元処理のために占有されること無く、上位装置に対するサービスを行うことができ、記憶装置の性能が向上する。
【００２９】
また、上記判断条件により、障害発生時に、障害データブロックを不揮発メモリへ格納しなかった論理データに対して、新たなアクセス要求が発生した時は、当該障害データブロックに対する更新データ、または読み出し後の復元データブロックを不揮発メモリに格納することにより、交代ブロックの割り当て後の物理ドライブに対するデータ格納処理が、同様に１台の物理ドライブへの書き込みによって完結するので、通常の入出力処理と競合することがなく、性能向上となる。
【００３０】
また、物理ドライブにおける交代ブロックの割り当てを制限することにより、各物理ドライブの論理データに対するアクセス所要時間が、一定値以上長くなることが回避され、アクセス所要時間の増大による性能低下を防止できる。
【００３１】
また、上記制限をユーザからの指示にて随意に設定可能にすることにより、各論理データファイルに要求された限界性能を下回らないようなデータ回復処理を実現することができる。
【００３２】
【実施例】
以下、本発明の一実施例である記憶装置について、図面を参照しながら詳細に説明する。なお、本実施例では、記憶装置の一例として、計算機システムに外部記憶装置として組み込まれたディスクアレイ装置を例に説明する。
【００３３】
図２は、本実施例の記憶装置を含む計算機システムの構成の一例を示すブロック図であり、図１は、本実施例の記憶装置の一部をより詳細に示す概念図である。
【００３４】
図２に例示したように、本実施例の計算機システムは、中央処理装置（ＣＰＵ）１００と、ディスクアレイ装置３００と、この両者間における情報の授受を制御するディスクアレイ制御装置２００とを含んでいる。
【００３５】
ディスクアレイ制御装置２００の内部構成の一例を示したものが図１である。
【００３６】
同図において、マイクロプロセッサユニット（ＭＰＵ）２４０は、ランダムアクセスメモリ（ＲＡＭ）２５０に格納された制御プログラムを逐次デコードしながら実行し、ディスクアレイ制御装置２００の全体を制御している。また、ランダムアクセスメモリ２５０内には、後述する、冗長度テーブル４００，物理ドライブ構成テーブル４１０，不揮発メモリ管理テーブル４２０，交代ブロック管理テーブル４３０，障害ブロック管理テーブル４４０，ユーザ指示情報４５０も格納されている。
【００３７】
チャネル制御回路２１０は、中央処理装置１００との間のデータ転送を制御している。ドライブ制御回路２２０は、ディスクアレイ制御装置２００を構成する各物理ドライブとの間のデータ転送を制御している。データバッファ２３０は、チャネル制御回路２１０と、ドライブ制御回路２２０との間に介在し、両者間で授受されるデータを一時的に保持する動作を行う。ＥＣＣ作成回路２６０は、中央処理装置１００から到来する論理データに対して冗長データブロックを付加し、また、障害データブロックの復元を行う。
【００３８】
この場合、ディスクアレイ制御装置２００の一部には、不揮発メモリ２７０が設けられており、たとえば、中央処理装置１００からディスクアレイ制御装置２００に対する書き込みおよび読み出しに際して、論理データを構成する複数のデータブロックのうち、障害によってディスクアレイ制御装置２００に書き込めなかった更新データブロック、およびディスクアレイ制御装置２００から読み出せなかった障害データブロックをＥＣＣ作成回路２６０で復元した復元データブロックが、後述のような判定論理に基づいて格納される。
【００３９】
アドレス変換機構２８０は、中央処理装置１００から指示された論理ドライブ番号および論理データアドレスを、ディスクアレイ装置３００へのアクセスに際して、物理ドライブ番号，物理データアドレスに変換するためのものである。
【００４０】
図３は、ディスクアレイ装置３００におけるドライブ構成の一例を示した概念図である。
【００４１】
データ転送制御回路３１０〜３６０は、ディスクアレイ制御装置２００におけるドライブ制御回路２２０の各々との間でデータ転送を行う。各データ転送制御回路３１０〜３６０には、それぞれ、４台の物理ドライブ３１０ａ〜３１０ｄ，物理ドライブ３２０ａ〜３２０ｄ，物理ドライブ３３０ａ〜３３０ｄ，物理ドライブ３４０ａ〜３４０ｄ，物理ドライブ３５０ａ〜３５０ｄ，物理ドライブ３６０ａ〜３６０ｄが接続されている。本実施例においてはデータ転送制御回路３１０，３２０，３３０，３４０の配下のドライブ群は、データ格納用ドライブとして、また、データ転送制御回路３５０，３６０の配下のドライブ群は冗長データ用ドライブとして割り当てるものとする。また、このドライブ群は、物理ドライブ３１０ａ〜３６０ａ，物理ドライブ３１０ｂ〜３６０ｂ，物理ドライブ３１０ｃ〜３６０ｃ，物理ドライブ３１０ｄ〜３６０ｄの４組の論理ドライブグループ（以下論理ドライブと記す）を構成し、データ回復グループ（冗長データを付加する単位）もこれと同様の構成をとっている。なお、これ以降、論理ドライブを、データ転送制御回路３１０〜３６０に近いほうから順に、論理ドライブＬａ，論理ドライブＬｂ，論理ドライブＬｃ，論理ドライブＬｄという。
【００４２】
次に、本実施例においてランダムアクセスメモリ２５０に構築される前述のテーブル群について、図４〜図９を参照しながら説明する。
【００４３】
図４の冗長度テーブル４００は、各論理ドライブ毎の冗長ドライブ数を示しており、論理ドライブ番号４０１と当該論理ドライブ内の冗長度４０２とを対応付けて構成される。
【００４４】
図５の物理ドライブ構成テーブル４１０は、各論理ドライブがどの物理ドライブによって構成されているかを示しており、論理ドライブアドレス情報４１１と、当該論理ドライブを構成している物理ドライブ番号群４１２とを対応つけて格納している。各物理ドライブ毎に、当該物理ドライブが使用可能なオンライン状態か、使用不能の閉塞状態かを示す情報も格納されている。
【００４５】
図６の不揮発メモリ管理テーブル４２０は、不揮発メモリ２７０に格納されているデータブロックのアドレス情報と、当該データブロックが格納されている不揮発メモリ２７０での格納位置情報とを対応つけて格納するものであり、論理ドライブアドレス情報４２１，物理ドライブアドレス情報４２２，不揮発メモリポインタ４２３より構成されている。
【００４６】
図７の交代ブロック管理テーブル４３０は、各物理ドライブのシリンダ，トラック単位に存在する交代ブロック数と当該交代ブロックアドレス情報を示しており、物理ドライブのシリンダ，トラック番号単位に、残交代ブロック数４３１，残交代ブロックアドレス情報４３２を持っている。
【００４７】
図８の障害ブロック管理テーブル４４０は、各論理データ内で障害となっているデータブロック数を示しており、論理ドライブアドレス情報４４１と、当該論理データ内における論理データ内障害回数４４２より構成されている。
【００４８】
図９のユーザ指示情報４５０は、各論理ドライブに対してユーザから要求されている性能および信頼性の程度を示すものであり、論理ドライブ毎に、性能情報４５１と信頼性情報４５２により構成されている。
【００４９】
本実施例では、ディスクアレイ制御装置２００内のマイクロプロセッサユニット２４０が、ランダムアクセスメモリ２５０に格納されている上述のような構成の、冗長度テーブル４００，物理ドライブ構成テーブル４１０，不揮発メモリ管理テーブル４２０，交代ブロック管理テーブル４３０，障害ブロック管理テーブル４４０，ユーザ指示情報４５０などを参照しながら、障害データブロックに対する最適なデータ回復方法を実行する。
【００５０】
図１０は、本実施例において用いられる論理データのデータ形式の一例を示す概念図である。
【００５１】
一つの論理データ４６０は、４つの物理データブロック（以下、単にデータブロックと記す）４６１〜４６４に分割され、さらに、二つの冗長データブロック４６５，４６６が付加され、各論理ドライブを構成する６つの物理ドライブの各々に対して並列にデータ転送される。
【００５２】
次に、図１１のフローチャートを参照しながら、中央処理装置１００からのデータ転送要求が発生した時の動作の一例を説明する。
【００５３】
まず、ステップ５００でアクセス範囲に既に障害データブロックが存在するか否かを調べる。これは、アクセス対象の論理ドライブ番号とアドレスをキーに障害ブロック管理テーブル４４０内の論理ドライブアドレス情報４４１を検索し、同一論理ドライブ番号の論理ドライブアドレスが存在すれば、アクセス範囲内に障害データブロックが存在する判断される。その結果、障害データブロックが有ればステップ５１０へ、無ければステップ５０１へ進む。ここでは、先にステップ５０１以降を説明する。
【００５４】
ステップ５０１では、まず、アドレス変換機構２８０にて論理ドライブアドレスを物理ドライブアドレスに変換し、実際に中央処理装置１００からのデータ転送を実行する。この時、アドレス変換機構２８０は、物理ドライブ構成テーブル４１０を参照する。
【００５５】
次に、障害データブロックが発生したか否かをステップ５０２で判断し、障害が発生していない場合には、ステップ５０３に進み、正常終了となる。
【００５６】
一方、ステップ５０２で障害データブロックが発生したと判明した場合には、ステップ５０４へ進み、障害ブロック管理テーブル４４０へ障害情報を登録する。この処理は、当該障害が発生した論理ドライブ番号およびデータアドレスを、論理ドライブアドレス情報４４１に存在しなければ新たに登録し、対応する論理データ内障害回数４４２を＋１することにより行われる。これは、例えば、論理データ４６０内のデータブロック４６１が既に障害データブロックとして登録されており、今回新たにデータブロック４６２に障害が発生した時の動作に対応する。
【００５７】
次に、ステップ５０５にて、不揮発メモリ２７０に当該障害データブロックを格納するか否か判断する。これは、無条件に不揮発メモリ２７０に格納してもよいし、ユーザの指示、またはデータ喪失の危険度により判断してもよい。本実施例では、データ喪失の危険度が高い時はユーザの指示に関係なく、不揮発メモリ２７０に対する格納動作を行い、危険度が低い時は、ユーザの指示により信頼性が高く要求されている論理ドライブの障害データブロックについては、不揮発メモリ２７０に格納する動作を行う。本判断は、まず、障害ブロック管理テーブル４４０にて、当該障害データブロックを含む論理ドライブ番号，論理データアドレスを論理ドライブアドレス情報４４１から求め、当該論理データ内の障害データブロック数を、論理データ内障害回数４４２から求める。さらに、当該論理ドライブの冗長度を、冗長度テーブル４００内の論理ドライブ番号４０１を検索し、対応する冗長度４０２から求める。この二つの情報を比較し、両者が等しい時、つまり、データ回復が可能な限界まで障害データブロックが発生してしまった時、データ喪失の危険度が高いと判断される。また、論理データ内障害回数が冗長度よりも小さい時、つまり、さらに同一論理データ内に障害データブロックが発生してもデータ回復が可能な時、データ喪失の危険度が低いと判断される。この時、当該論理ドライブに対するユーザの指示を、ユーザ指示情報４５０の信頼性情報４５２を参照して判断する。当該信頼性情報により、当該論理ドライブの信頼性を高くすることがユーザから指示されている場合、不揮発メモリ２７０への格納を実行する。
【００５８】
このように、ステップ５０５の判断の結果、不揮発メモリ２７０に格納する場合にはステップ５０６に進む。格納しない時は、以上で中央処理装置１００からのデータ転送処理は終了する。ステップ５０６では当該障害データブロックを、更新時では当該更新データブロックを、読み出し時では冗長データブロックと残りの健全なデータブロックとによって復元されたデータブロックを不揮発メモリ２７０に格納する。また、不揮発メモリ管理テーブル４２０に当該障害データブロックの論理アドレスを論理ドライブアドレス情報４２１へ、物理アドレス情報を物理ドライブアドレス情報４２２へ、格納した不揮発メモリ２７０のアドレス情報を不揮発メモリポインタ４２３に設定する。このステップ５０６の終了後、中央処理装置１００からのデータ転送処理は終了する。
【００５９】
次に、前記ステップ５００においてアクセス範囲に障害データブロックが在ると判明した時の処理について説明する。
【００６０】
まず、ステップ５１０で当該障害データブロックが不揮発メモリ２７０内に存在するか否かを判断する。この判断は、当該障害データブロックの論理ドライブ番号，論理データアドレスをキーに、不揮発メモリ管理テーブル４２０内の論理ドライブアドレス情報４２１を検索することによって行われる。
【００６１】
不揮発メモリ２７０に存在する時、ステップ５１１に進む。ステップ５１１にて、当該処理要求が更新処理か否かを判断し、更新処理ならばステップ５１２へ進む。ステップ５１２にて当該障害データブロックに対する更新データブロックは、不揮発メモリ２７０にて更新する。この動作は、不揮発メモリ管理テーブル４２０内の物理ドライブアドレス情報４２２にて不揮発メモリポインタ４２３を探し、当該障害データブロックが格納されている不揮発メモリアドレスを求め、当該アドレスが指し示す不揮発メモリ２７０内のエリアに当該更新データブロックを書き込むことにより実現される。
【００６２】
ステップ５１１において更新処理ではないと判明した時には、ステップ５１３に進み、ステップ５１２と同様の手法にて障害データブロックが格納されている不揮発メモリアドレスを求め、当該アドレスが指し示すエリアの情報を読み込み、対象データブロックとして中央処理装置１００へ転送する。
【００６３】
また、ステップ５１０において目的のデータブロックが不揮発メモリ２７０に存在していないと判明した場合には、さらにステップ５１４にて、更新処理か否かを判断し、更新処理でない場合には、ステップ５１５に進み、障害データブロック以外の健全なデータブロックと冗長データブロックにより障害データブロックを復元し、中央処理装置１００へ転送するとともに、復元された障害データブロックを不揮発メモリ２７０へ格納する。ステップ５１４において更新処理であると判断された場合には、ステップ５１６にて障害データブロック対応の更新データブロックを不揮発メモリ２７０へ格納する。ステップ５１５，５１６における不揮発メモリ２７０への格納手順はステップ５０６と同様である。
【００６４】
次に、図１２のフローチャートにより、交代ブロックを割り当て、データ回復を行う処理の一例について説明する。
【００６５】
まず、ステップ６００にて同一トラック内に交代ブロックが存在するか否かを判断する。この判断は、交代ブロック管理テーブル４３０で、当該障害データブロックの物理ドライブ番号，シリンダ番号，トラック番号を用いて、同一トラック内の残交代ブロック数４３１を求め、その値が０でなければ同一トラック内に交代ブロックが在るとすることにより行われる。交代ブロックが在ると判明した場合、ステップ６０１に進み、無ければステップ６０２に進む。
【００６６】
ステップ６０１では、交代ブロックの割り付けを行う。この動作は、交代ブロック管理テーブル４３０の残交代ブロックアドレス情報４３２の中の一つを当該障害データブロック用の交代ブロックとして割りつけるためにアドレス情報を削除し、残交代ブロック数４３１を−１することにより行われる。また、こうして得られた交代ブロック割り付け情報は、当該物理ドライブへ指示を出し、各物理ドライブ内で記憶させてもよいし、データ転送制御回路内で記憶しておいてもよい。本実施例の場合には、物理ドライブにて記憶するものとする。
【００６７】
次に、ステップ６０３にて、不揮発メモリ２７０上に障害データブロック（に対応した更新データブロックまたは復元データブロック）があるか否かを判断する。その結果、不揮発メモリ２７０上に存在すると判明した場合には、ステップ６０４へ進む。ステップ６０４では、不揮発メモリ２７０内の当該障害データブロックに対する復元データブロックまたは更新データブロックを物理ドライブの交代ブロックへ書き込む。当該書き込み対象の物理ドライブが、たとえば、図３の３２０ａだとすると、データ転送制御回路３２０の配下の他の物理ドライブ３２０ｂ〜３２０ｄにはアクセス不可能だが、他のデータ転送制御回路３１０，３３０，３４０，３５０，３６０の配下の物理ドライブにたいしてはアクセスが可能である。
【００６８】
ステップ６０３に戻り、不揮発メモリ２７０上に存在しないと判明した場合には、ステップ６０５に進む。このステップ６０５では当該障害データブロック以外の残りのデータを、データバッファ２３０へ読み込む処理を行う。例えば、論理データ４６０の各データブロック４６１〜４６４および冗長データブロック４６５，４６６が論理ドライブＬａを構成する物理ドライブ３１０ａ〜３６０ａの各々に格納されており、データブロック４６２が障害データブロックとなった時、各物理ドライブ３１０ａ，３３０ａ，３４０ａ，３５０ａ，３６０ａの各々から、データブロック４６１，４６３，４６４および冗長データブロック４６５，４６６をそれぞれ読み出し、データバッファ２３０へ格納する。その後、ステップ６０６にて、障害データブロックの復元を行う。この復元動作は、データバッファ２３０に格納されているデータブロック４６１，４６３，４６４および冗長データブロック４６５，４６６を基に、ＥＣＣ作成回路２６０がデータブロック４６２を生成し、データバッファ２３０に格納することで行われる。さらに、ステップ６０７にて、復元されたデータブロック４６２を物理ドライブ３２０ａの交代ブロックへ格納し、データ回復処理が終了する。
【００６９】
ステップ６０５，６０６，６０７は従来の技術であり、当該ステップの処理を実行する時には、前述の例で示せば、障害のデータブロック４６２に対応したデータ転送制御回路３２０の配下の物理ドライブに関しては中央処理装置１００からのアクセスは可能だが、データ転送制御回路３１０，３３０，３４０，３５０，３６０の配下の物理ドライブ群はデータ復元処理のためのデータ転送処理のために占有され、アクセスできない。
【００７０】
これに対して、本実施例の場合には、障害データブロックの復元データブロックが不揮発メモリ２７０に保持されているため、ステップ６０４のように、当該復元データブロックの書き込みのために、格納対象である物理ドライブ（この例では物理ドライブ３２０ａ）のみが占有されるだけであり、他の物理ドライブは通常の入出力処理要求に対応することが可能となる。すなわち、データ回復処理と通常の入出力処理の競合が減少し、通常の入出力処理の性能劣化を防ぐことができる。また、ステップ６０４を実現するために、ステップ５０６，５１６，５１７にてデータを不揮発メモリ２７０へ格納する論理が必要となる。これらの処理は、性能向上だけでなく、データ喪失の危険性を下げるとともにファイルに要求される信頼性に基づいたデータ回復処理が実現でき、システムとしての信頼性の向上にもつながっている。
【００７１】
次に、ステップ６００に戻り、同一トラック内に交代ブロックエリアがないと判明した場合には、ステップ６０２へ進む。この時、無条件に当該物理ドライブを自動閉塞してもよいし、ユーザからの指示に従ってもよい。本実施例では、ユーザからの指示に従って動作するものとする。予めユーザから各論理ドライブ毎に性能に対する要求が設定されていた時、ステップ６０２では、自動閉塞するか否かを判断する。そして、当該物理ドライブを含む論理ドライブに対するユーザ指示情報４５０の性能情報４５１にて、性能を高く要求されている時は、ステップ６０８へ進み、そうでない時はステップ６０９へ進む。
【００７２】
ステップ６０８では、当該物理ドライブを自動閉塞する。この閉塞動作は、物理ドライブ構成テーブル４１０の物理ドライブ番号群４１２から当該物理ドライブを削除するとともに、冗長度テーブル４００にて当該物理ドライブの冗長度４０２を−１することにより実現される。自動閉塞後は、障害ドライブの交換を行い、論理ドライブ内の交換した物理ドライブ以外の他の物理ドライブから各論理データを構成する健全なデータブロックおよび冗長データブロックを読み込み、交換した物理ドライブに格納されるべきデータブロックを復元して逐次当該物理ドライブに書き込むことにより、交換した物理ドライブのデータ回復を行う。この交換した物理ドライブにおけるデータ回復処理は、ユーザからの指示により随時実行してもよいし、通常のデータ入出力処理の合間に実行してもよい。回復後は、交代ブロックを用いていないので当該物理ドライブに格納されているデータブロックを含む論理データは全て物理的な位置が揃うため、論理ドライブを構成する物理ドライブ群の同期動作を生かした高速なデータ転送を実現できる。また、ステップ６０２にて、ユーザからの当該論理ドライブに対する要求性能が高く設定されていない場合には、ステップ６０９にて、交代ブロック管理テーブル４３０を参照して他のトラック内の交代ブロックエリアを割り当てる。この時、割り当てるトラックの残交代ブロック数４３１から−１し、残交代ブロックアドレス情報４３２から削除する。
【００７３】
このように、ステップ６０２，６０８により、交代ブロックを、自動的に、またはユーザ指示により、他のトラックに割り当てないことにより、同一論理データを構成するデータブロックや冗長データブロックのうちの障害データブロックが、他のデータブロックと物理的に隔たった位置に格納されることに起因するアクセス時間の増大を防ぐことができ、物理ドライブにおけるデータアクセス速度、すなわちデータ転送速度などの性能を所定のレベルに維持することができる。
【００７４】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００７５】
【発明の効果】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００７６】
すなわち、本発明の記憶装置によれば、復元された障害データブロックを不揮発メモリへ格納することにより、たとえばデータ回復処理中における重複障害によるデータ喪失を防止することができる、という効果が得られる。
【００７７】
また、不揮発メモリに格納されている復元された障害データブロックのみを特定の物理ドライブに格納するという操作だけで障害データブロックの回復処理が可能であり、他の物理ドライブの健全なデータブロックの読み出しなどを行う必要がなく、回復処理に伴う通常の入出力処理の性能低下を最小限に止めることができる、という効果が得られる。
【００７８】
また、交代ブロックの割り当てを、各論理ドライブに設定されている要求性能に応じて制限することにより、各論理ドライブにおけるデータ転送速度などの性能を所定のレベルに維持できる、という効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施例である記憶装置の一部をより詳細に示す概念図である。
【図２】本発明の一実施例である記憶装置を含む計算機システムの構成の一例を示すブロック図である。
【図３】本発明の一実施例である記憶装置を構成するディスクアレイ装置におけるドライブ構成の一例を示した概念図である。
【図４】本発明の一実施例である記憶装置において用いられる冗長度テーブルの一例を示す概念図である。
【図５】本発明の一実施例である記憶装置において用いられる物理ドライブ構成テーブルの一例を示す概念図である。
【図６】本発明の一実施例である記憶装置において用いられる不揮発メモリ管理テーブルの一例を示す概念図である。
【図７】本発明の一実施例である記憶装置において用いられる交代ブロック管理テーブルの一例を示す概念図である。
【図８】本発明の一実施例である記憶装置において用いられる障害ブロック管理テーブルの一例を示す概念図である。
【図９】本発明の一実施例である記憶装置において用いられるユーザ指示情報の一例を示す概念図である。
【図１０】本発明の一実施例である記憶装置において用いられる論理データのデータ形式の一例を示す概念図である。
【図１１】本発明の一実施例である記憶装置の作用の一例を示すフローチャートである。
【図１２】本発明の一実施例である記憶装置の作用の一例を示すフローチャートである。
【符号の説明】
１００    中央処理装置（ＣＰＵ）
２００    ディスクアレイ制御装置
２１０    チャネル制御回路
２２０    ドライブ制御回路
２３０    データバッファ
２４０    マイクロプロセッサユニット（ＭＰＵ）
２５０    ランダムアクセスメモリ（ＲＡＭ）
２６０    ＥＣＣ作成回路
２７０    不揮発メモリ
２８０    アドレス変換機構
３００    ディスクアレイ装置
３１０〜３６０    データ転送制御回路
３１０ａ〜３１０ｄ    物理ドライブ
３２０ａ〜３２０ｄ    物理ドライブ
３３０ａ〜３３０ｄ    物理ドライブ
３４０ａ〜３４０ｄ    物理ドライブ
３５０ａ〜３５０ｄ    物理ドライブ
３６０ａ〜３６０ｄ    物理ドライブ
４００    冗長度テーブル
４０１    論理ドライブ番号
４０２    冗長度
４１０    物理ドライブ構成テーブル
４１１    論理ドライブアドレス情報
４１２    物理ドライブ番号群
４２０    不揮発メモリ管理テーブル
４２１    論理ドライブアドレス情報
４２２    物理ドライブアドレス情報
４２３    不揮発メモリポインタ
４３０    交代ブロック管理テーブル
４３１    残交代ブロック数
４３２    残交代ブロックアドレス情報
４４０    障害ブロック管理テーブル
４４１    論理ドライブアドレス情報
４４２    論理データ内障害回数
４５０    ユーザ指示情報
４５１    性能情報
４５２    信頼性情報
４６０    論理データ
４６１〜４６４    データブロック
４６５〜４６６    冗長データブロック
Ｌａ〜Ｌｄ    論理ドライブ
【図１】
0003575811.tif 000002
【図２】
0003575811.tif 000003
【図３】
0003575811.tif 000004
【図４】
0003575811.tif 000005
【図５】
0003575811.tif 000006
【図６】
0003575811.tif 000007
【図７】
0003575811.tif 000008
【図８】
0003575811.tif 000009
【図９】
0003575811.tif 000010
【図１０】
0003575811.tif 000011
【図１１】
0003575811.tif 000012
【図１２】
0003575811.tif 000013