(57)【要約】【課題】  エラーリカバリ能力を向上させる記憶データ処理装置、記憶装置、記憶データ処理プログラム及び方法を提供する。【解決手段】  ディスク媒体１５に書き込まれるデータに対して、第１ブロック毎に誤り訂正符号を付加するフォーマット制御部５と、フォーマット制御部５により付加された誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、演算の結果を演算データとして出力する冗長生成部１８と、冗長生成部１８により出力された演算データを更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込むＭＰＵ８とを備える。【選択図】  図２
2010061756.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理装置であって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加部と、
前記誤り訂正符号付加部により付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込み部と
を備える記憶データ処理装置。
【請求項２】
請求項１に記載の記憶データ処理装置において、
読み出し対象として指定される第２ブロックの読み出しにおいて、前記誤り訂正符号が付加された第１ブロックである誤り訂正符号付加ブロックから読み出されたデータがエラーデータである場合、エラーデータである誤り訂正符号付加ブロックをエラーブロックとし、前記読み出し対象として指定される第２ブロック中の前記エラーブロック以外の全ての誤り訂正符号付加ブロックの正常データを読み出し、前記読み出し対象として指定される第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を更に備え、
前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算結果を前記エラーブロックのデータとすることを特徴とする記憶データ処理装置。
【請求項３】
請求項２に記載の記憶データ処理装置において、
前記読み出し部により読み出されたエラーブロックと、前記演算部による演算結果とをビット位置毎に比較し、該比較による前記記憶媒体における相違箇所を、エラー位置として特定するエラー位置特定部を更に備える記憶データ処理装置。
【請求項４】
請求項３に記載の記憶データ処理装置において、
前記エラー位置特定部により特定されたエラー位置を記録するエラー位置記録部を更に備えるデータ処理装置。
【請求項５】
請求項１乃至請求項４のいずれかに記載の記憶データ処理装置において、
前記演算部による演算は、順次演算を行う順序を変えても演算結果が変わらない演算であることを特徴とする記憶データ処理装置。
【請求項６】
所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置であって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加部と、
前記誤り訂正符号付加部により付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込み部と
を備える記憶装置。
【請求項７】
所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理プログラムであって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加ステップと、
前記誤り訂正符号付加ステップにより付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、
前記演算ステップにより出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込みステップと
をコンピュータに実行させる記憶データ処理プログラム。
【請求項８】
所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理方法であって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加ステップと、
前記誤り訂正符号付加ステップにより付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、
前記演算ステップにより出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込みステップと
を備える記憶データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶装置におけるデータ訂正に関するものである。
【背景技術】
【０００２】
近年、記憶装置、とりわけディスク装置の記憶容量は増加の傾向にある。例えば、１台のディスク装置が１テラバイト以上の容量を保有するまでになっている。このようなディスク容量の増加にともない、ディスク装置内のデータ管理に関するディレクトリ情報が記録されているセクタが読み出しエラーとなった場合、このエラーにより被害を受けるデータは膨大である。また、データが受ける被害は、ディスク装置の容量が増すほど増えるものである。従来、このようなディスク装置における障害を避けるための手段として、例えば、ディスク装置をアレイシステムとして構築し、あるセクタが読み出しエラーとなったディスク装置が存在しても、冗長性を高めるために余分に配置されている他のディスク装置のデータを用いてリカバリを行うようなシステムが、主に大型システム向けに用意されている。また、ディスク装置単体により読み出しエラーへの耐久性を高めるために、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）コードがセクタに付加されている。このＥＣＣコードは、付加されたセクタに対してエラーチェック、データ訂正を行うためのコードであり、その訂正能力は緩やかに高まっている。
【０００３】
なお、本発明の関連ある従来技術として、エラーの発生したデータを特定し、ＥＣＣ訂正不可能なエラーを修正する磁気ディスク装置が知られている（例えば、特許文献１参照）。
【特許文献１】特開平５−１０９２０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、あるデータの読み出しにおいて、リトライによってもデータを復旧できず、また付加されたＥＣＣコードによるデータの訂正も不可能である場合、ディスク装置は、接続された上位装置に対してエラーを通知して終了していた。また、上述したように、ＥＣＣコードによるデータ訂正能力は緩やかに高まってはいるが、新しいデータ訂正技術は採用されておらず、近年は同じような技術が用いられ続けている。このことは、ディスク装置単体の記憶容量の増加傾向に対して、ＥＣＣコードの訂正能力は追い付いていないことによって、相対的にディスク装置におけるデータ喪失の可能性が増加していることを意味する。
【０００５】
本発明は、上述した問題点を解決するためになされたものであり、エラーリカバリ能力を向上させる記憶データ処理装置、記憶装置、記憶データ処理プログラム及び方法を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上述した課題を解決するため、記憶データ処理装置は、所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる装置であって、前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加部と、前記誤り訂正符号付加部により付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、前記演算部により出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込み部とを備える。
【０００７】
また、記憶装置は、所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う装置であって、前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加部と、前記誤り訂正符号付加部により付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、前記演算部により出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込み部とを備える。
【０００８】
また、記憶データ処理プログラムは、所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられるプログラムであって、前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加ステップと、前記誤り訂正符号付加ステップにより付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、前記演算ステップにより出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込みステップとをコンピュータに実行させる。
【０００９】
また、記憶データ処理方法は、所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる方法であって、前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加ステップと、前記誤り訂正符号付加ステップにより付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、前記演算ステップにより出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込みステップとを備える。
【発明の効果】
【００１０】
本発明によれば、エラーリカバリ能力を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図を用いて説明する。
【００１２】
まず、本実施の形態に係るＨＤＤの構成について説明する。図１は、本実施の形態に係る上位装置とＨＤＤを示すブロック図である。また、図２は、本実施の形態に係るＨＤＤの構成を示すブロック図である。
【００１３】
図１に示すように、上位装置２とＨＤＤ１はホストＩＦ１７を介して接続されている。上位装置２は、例えば、記憶装置としてＨＤＤ１を備えるパーソナルコンピュータであり、データの読み書きにおいて、ＨＤＤ１に対してコマンドを発行するものである。
【００１４】
また、ＨＤＤ１は、図２に示すように、ホストＩＦ制御部２、バッファ制御部３、バッファメモリ４、フォーマット制御部（訂正符号付加部）５、リードチャネル６、ヘッドＩＣ７、ＭＰＵ（書き込み部、読み出し部、エラー位置特定部、エラー位置記録部）８、メモリ９、不揮発メモリ１０、サーボ制御部１１、ＶＣＭ（Ｖｏｉｃｅ  Ｃｏｉｌ  Ｍｏｔｏｒ）１２、ＳＰＭ（Ｓｐｉｎｄｌｅ  Ｍｏｔｏｒ）１３、リードライトヘッド１４、ディスク媒体（記憶媒体）１５、コモンバス１６、ホストＩＦ１７、冗長生成部（演算部、エラー位置特定部）１８を備えるものである。
【００１５】
ディスク媒体１５は、データを格納するものである。また、リードライトヘッド１４は、ディスク媒体１５に対して、データとして信号の書き込み、読み出しを行うものである。また、ＳＰＭ１３は、ディスク媒体１５を回転させるモータである。また、ＶＣＭ１２は、リードライトヘッド１４を駆動させるモータである。また、サーボ制御部１１は、ＶＣＭ１２及びＳＰＭ１３を制御するものである。また、ヘッドＩＣ７は、リードライトヘッド１４によりディスク媒体１５に対して読み書きされる信号を増幅するものである。また、リードチャネル６は、ディスク媒体１５に読み書きするデータを信号に変換するものである。また、フォーマット制御部５は、ディスク媒体１５に記録するデータの記録フォーマットを生成するものである。また、バッファメモリ４は、ディスク媒体１５に読み書きされるデータを一時的に格納するメモリである。また、バッファ制御部３は、バッファメモリ４を制御するものである。また、メモリ９は揮発性のメモリである。また、不揮発メモリは、ＨＤＤを制御するためのプログラムを格納するものである。また、ホストＩＦ１７は、ディスク媒体１５に読み書きされるデータ、コマンドを上位装置２と通信するためのＩＦである。また、ＭＰＵ８は、ＨＤＤ１における制御及び処理を実行するものである。なお、冗長生成部１８については後述する。
【００１６】
一般的に、このようなＨＤＤ１においてディスクからデータが読み出される場合、データはリードライトヘッド１４によりディスク媒体１５から読み出され、ヘッドＩＣ７を経由してリードチャネル６に送られる。リードチャネル６に送られたデータは、フォーマット制御部５、バッファ制御部３を経由してバッファメモリ４に一時的に保持される。バッファメモリ４に保持されたデータは、ホストＩＦ制御部２、ホストＩＦ１７を経由して上位装置へ送られる。また、データが書き込まれる場合、上位装置２よりホストＩＦ１７、ホストＩＦ制御部２、バッファ制御部３を経由してバッファメモリ４に一時的に保持される。バッファメモリ４に保持されたデータは、書き込みをするのに適当なタイミングにおいて、フォーマット制御部５、リードチャネル６、ヘッドＩＣ７を経由してリードライトヘッド１４によりディスク媒体１５に書き込まれる。
【００１７】
次に、本実施の形態に係るＨＤＤのフォーマット制御部及び冗長生成部について説明する。図３は、フォーマット制御部の構成を示すブロック図である。また、図４は、冗長生成部の構成を示すブロック図である。
【００１８】
図３に示すように、フォーマット制御部５は、ＲＬＬ（Ｒｕｎ  Ｌｅｎｇｔ  Ｌｉｍｉｔｅｄ）部５１及びＥＣＣ部５２を備えるものである。ＲＬＬ部５１は、ディスク媒体に書き込まれるデータに対して、ＲＬＬ符号化を行うものである。また、ＥＣＣ部５２は、ディスク媒体１５に書き込まれるデータの各セクタに対してＥＣＣデータを付加するものである。また、フォーマット制御部５は、読み出されたデータに対して、付加されたＥＣＣデータにより訂正処理を施す機能を持つが、この訂正処理を施さずにデータをバッファメモリ４に転送することもできる。また、ＥＣＣ部５２は、ＥＣＣデータの代わりに誤り検出符号を付加しても良い。
【００１９】
また、図４に示すように、冗長生成部１８は、データメモリ１８１及びＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ：排他的論理和）計算回路１８２を備えるものである。データメモリ１８１は、セクタサイズの容量を持ち、ＸＯＲ計算回路１８２による１セクタ分の演算結果データを保持するものである。また、ＸＯＲ計算回路１８２は、外部から入力された１セクタ分の入力データと、データメモリ１８１に保持された１セクタ分の演算結果データにより、ビット位置毎のＸＯＲ演算を行うものである。このＸＯＲ演算による演算結果は、新たな演算結果データとしてデータメモリ１８１に保持される。なお、ＭＰＵ８は、データメモリ１８１に保持された演算結果データを、コモンバス１６を介して読み出し、冗長データとすることができる。
【００２０】
ＸＯＲ計算回路１８２は、この冗長データと、エラーセクタデータ以外のユーザデータの各セクタ（第１ブロック）とに対してＸＯＲ演算を行うことによりエラーセクタデータを復元することができる。また、ＸＯＲ計算回路１８２は、入力データの順序を変えても演算結果データが変わらないことから、ある区分について全てのセクタデータをいかなる順序に入力しても、最終的な演算結果データとして、冗長データを得ることができる。また、同様に、エラーセクタが存在する区分についてエラーセクタデータ以外のユーザデータと冗長データとをいかなる順序でＸＯＲ計算回路１８２に入力しても、最終的な演算結果データとして復元されたエラーセクタデータを得ることができる。また、ディスク媒体１５における最後の区分のような他の区分よりもセクタ数が少ない区分であっても、区分内のユーザデータにおける全てのセクタデータを用いることにより、他の区分と同様に冗長データの生成と、エラーセクタデータの復元を行うことができる。なお、本実施の形態において、冗長生成部１８はリードチャネル６とフォーマット制御部５との間にあるため、冗長生成部１８のデータメモリ１８１は、ＸＯＲ演算においてＥＣＣデータも含むユーザデータを格納することができる。また、演算結果データとしてデータメモリ１８１に格納されたデータはフォーマット制御部５を経由してバッファメモリ４に送られるため、バッファメモリ４は、ＥＣＣチェックを済ませたユーザデータを受け取ることができる。
【００２１】
次に、ディスク媒体上のユーザ領域におけるセクタ配置について説明する。図５は、トラック単位に冗長セクタが置かれる場合のセクタ配置の一例を示す図である。また、図６及び図７は、所定のセクタ数毎に冗長セクタが配置される場合のセクタ配置の一例を示す図である。
【００２２】
本実施の形態において、冗長セクタ（第３ブロック）は、トラックまたは所定のセクタ単位（第２ブロック）毎に置かれる。まず、トラック単位に冗長セクタが配置される場合について説明する。図５において、ＬＳＮは、トラック内において最も小さいＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）から割り振られる番号であるロジカルセクタナンバ（Ｌｏｇｉｃａｌ  Ｓｃｔｏｒ  Ｎｕｍｂｅｒ）を示す。また、図５は、最も小さいＬＢＡを０、最も大きなＬＢＡをＡ−１としてＬＳＮを割り振ったものであり、トラック番号Ｋのトラックには、ユーザデータを格納する領域として使用するセクタ（ユーザデータセクタ）ＬＳＮ０〜Ａ−１、これらのセクタに後続する冗長セクタＫと合わせて、セクタがＡ＋１個（ロジカルセクタナンバが０から始まるため）あることを示している。
【００２３】
また、トラック番号Ｋ＋１で示されるトラックＫと同じゾーンに属するトラックＫ＋１内のセクタ数は、同様にＡ＋１個である。また、トラックＫ及びトラックＫ＋１と異なるゾーンに属し、トラック番号Ｍで示されるトラックＭ内のセクタ数は、トラックＫ及びトラックＫ＋１と異なり、Ｃ−１個であり、冗長セクタＭは、ユーザデータセクタＬＳＮ  ０〜Ｃ−１に後続する。つまり、トラック単位に冗長セクタが置かれる場合、冗長セクタは、トラック内で最も大きいＬＳＮが割り振られたセクタに後続するセクタとなる。
【００２４】
次に、所定数のセクタ単位毎に冗長セクタが配置される場合について説明する。図６に示すように、先頭セクタがＬＢＡ＝０であるＫ＋１個からなる複数のセクタに対して冗長セクタを配置する場合、冗長セクタＶはユーザデータセクタＬＢＡ  ０〜Ｋ−１のセクタに後続する。また、同様に、先頭セクタがＬＢＡ＝Ｋである場合、冗長セクタＷはユーザデータセクタＬＢＡ  Ｋ〜２Ｋ−１のセクタに後続する。また、図７に示すように、同一トラック上にＬＢＡ  Ｋ−１とＬＢＡ  Ｋが位置する場合、冗長セクタＶはＬＢＡ  Ｋ−１とＬＢＡ  Ｋのセクタ間に配置される。また、ＬＢＡ  Ｋ−１があるトラックの最終セクタである場合、冗長セクタは、ＬＢＡ  Ｋが配置されているトラックにおいて、ＬＢＡ  Ｋの前に位置する。
【００２５】
次に、本実施の形態に係るＨＤＤの動作について説明する。図８は、冗長データ更新処理の動作を示すフローチャートである。この冗長データ更新処理は、上位装置２からのコマンドが来ていない間に冗長データを生成するための処理である。
【００２６】
まず、ＨＤＤ１のＭＰＵ８は、ＨＯＳＴとしての上位装置２からコマンドが来たかどうかを判断する（Ｓ１０１）。
【００２７】
上位装置２からコマンドが来ない場合（Ｓ１０１，ＮＯ）、ＭＰＵ８は、コマンド待ち時間（コマンドが来ない時間）が１秒より大きいかどうかを判断する（Ｓ１０２）。
【００２８】
コマンド待ち時間が１秒より大きい場合（Ｓ１０２，ＹＥＳ）、ＭＰＵ８は、ディスク媒体１５を参照し、冗長データ生成を要する区分（所定数のセクタまたはトラック単位）を選択し（Ｓ１０３）、後述する冗長データ生成処理を実行し（Ｓ１０４）、全ての区分において更新が終わったかどうかを判断する（Ｓ１０５）。なお、ここで更新とはディスク媒体１５におけるユーザデータに冗長データが作成されることを示す。
【００２９】
全ての区分において更新が終わった場合（Ｓ１０５，ＹＥＳ）、ＭＰＵ８は、冗長データ更新処理を実行する。
【００３０】
一方、更新が終わっていない区分がある場合（Ｓ１０５，ＮＯ）、ＭＰＵ８は、再度、上位装置２からコマンドが来たかどうかを判断する（Ｓ１０１）。
【００３１】
また、ステップＳ１０２において、コマンド待ち時間が１秒以下である場合（Ｓ１０２，ＮＯ）、ＭＰＵ８は、再度、上位装置２からコマンドが来たかどうかを判断する（Ｓ１０１）。
【００３２】
また、ステップＳ１０１において、上位装置２からコマンドが来た場合（Ｓ１０１）、ＭＰＵ８は、来たコマンドに従ってコマンド処理を実行する（Ｓ１０６）。
【００３３】
この冗長データ更新処理によれば、コマンド待機時間、つまり、ＨＤＤ１が処理を必要としていない間に冗長データを更新することができ、冗長データ生成によりコマンド処理に掛かる時間が増大することを防ぐことができる。
【００３４】
次に、冗長データ生成処理について説明する。図９は、冗長データ生成処理の動作を示すフローチャートである。この冗長データ生成処理は、図８におけるステップＳ１０４に相当する処理である。また、図１０〜１３は、冗長データ生成処理におけるデータ経路を示す図である。以下、図９のフローチャートに沿って、図１０〜１３を用いて冗長データ生成処理の動作を説明する。なお、図９において、ユーザデータの各セクタにはすでにＥＣＣが付加されているものとする（訂正符号付加ステップ）。
【００３５】
まず、ＭＰＵ８は、ディスク媒体１５に書き込まれたユーザデータを参照し、ユーザデータの各区分における冗長セクタのデータが有効かどうか、つまり冗長セクタにユーザデータに対応する冗長データが書き込まれているかどうかを判断する（Ｓ２０１）。
【００３６】
冗長セクタのデータが有効ではない場合（Ｓ２０１，ＮＯ）、ＭＰＵ８は、図１０に示すように、冗長セクタのデータが有効ではない区分におけるＥＣＣデータが各セクタに付加されたユーザデータをリードチャネル４に読み出させ、このユーザデータを、フォーマット制御部５を介して、バッファ制御部３にバッファメモリ４に取り込ませる（Ｓ２０２）。
【００３７】
次に、ＭＰＵ８は、バッファメモリ４上のユーザデータを、図１１に示すように、フォーマット制御部５を介して冗長生成部１８に転送させ（Ｓ２０３、演算ステップ）、図１２に示すように、データメモリ１８１上の演算結果データを冗長データとして、リードチャネル４に、冗長生成部１８への入力データであるユーザデータの区分における冗長セクタに書き込ませる（Ｓ２０４、書き込みステップ）。
【００３８】
また、ステップＳ２０１において、冗長セクタのデータが有効である場合（Ｓ２０１，ＹＥＳ）、ＭＰＵ８は、冗長生成処理を終了する。
【００３９】
このように冗長生成処理は、区分内のデータを全て読み出して冗長データを更新する。なお、区分内のデータがすべて更新（すなわち新たに上書き）される場合は、対応する冗長データが有効であるか否かを確認するまでもなく更新が必要である。このように、区分内の全セクタが上書きされる場合、図１３に示すように、ＭＰＵ８は、書き込みデータをリードチャネル４に入力するとともに、冗長生成部１８にも入力することにより、ディスク媒体１５からのデータ読み出しを省略して冗長データを生成することができる。
【００４０】
次に、エラーデータ復旧処理について説明する。図１４は、エラーデータ復旧処理の動作を示すフローチャートである。また、図１５〜１８は、エラーデータ復旧処理におけるデータ経路を示す図である。以下、図１４のフローチャートに沿って、図１５〜１８を用いて冗長データ生成処理の動作を説明する。
【００４１】
まず、ＭＰＵ８は、所定のセクタのデータを読み出し（Ｓ３０１）、読み出したデータがエラーセクタデータかどうかを判断する（Ｓ３０２）。
【００４２】
読み出したデータがエラーセクタデータである場合（Ｓ３０２，ＹＥＳ）、図１５に示すように、ＭＰＵ８は、エラーセクタデータが存在する区分におけるエラーセクタデータ以外のセクタデータをリードチャネル４にディスク媒体１５から読み込ませ、フォーマット制御部５を介してバッファメモリ４に格納する（Ｓ３０３、読み出しステップ）。
【００４３】
次に、ＭＰＵ８は、図１６に示すように、読み出した区分に対応する冗長セクタから冗長データをリードチャネル４にディスク媒体１５から読み出させて、データメモリ１８１に格納し（Ｓ３０４、演算ステップ）、この冗長データが有効かどうかを判断する（Ｓ３０５）。
【００４４】
冗長データが有効である場合（Ｓ３０５，ＹＥＳ）、ＭＰＵ８は、図１７に示すように、バッファメモリ４に格納されたエラーセクタデータ以外のセクタデータを冗長生成部１８へ転送する（Ｓ３０６、演算ステップ）。
【００４５】
セクタデータが冗長生成部１８に転送されることにより、ＸＯＲ計算回路１８２によりデータメモリ１８１に格納された冗長データとのＸＯＲ演算がなされ、演算結果データが算出される。ＭＰＵ８は、図１８に示すように、得られた演算結果データをエラーセクタデータの復旧データとして、フォーマット制御部５を介してバッファメモリ４に返送する（Ｓ３０７）。
【００４６】
また、ステップＳ３０５において、冗長データが有効ではない場合（Ｓ３０５，ＮＯ）、ＭＰＵ８は、エラーデータ復旧処理を終了する。
【００４７】
また、ステップＳ３０２において、読み出したデータがエラーセクタデータではない場合（Ｓ３０２，ＮＯ）、ＭＰＵ８は、エラーデータ復旧処理を終了する。
【００４８】
このように、エラーデータ復旧処理は、エラーセクタ以外のデータをバッファメモリ４に格納し、格納したデータと冗長データとのＸＯＲ演算によりエラーセクタデータを復旧する処理である。なお、このエラーデータ復旧処理は、以下に示すように、エラーセクタ以前のデータだけがバッファメモリ４に格納されるような処理であっても良い。図１９は、エラーセクタ以前のデータのみをデータバッファに格納する場合のエラーデータ復旧処理の動作を示すフローチャートである。また、図２０〜２３は、エラーデータ復旧処理におけるデータ経路を示す図である。以下、図１９のフローチャートに沿って、図１８及び図２０〜２２を用いてエラーセクタ以前のデータのみをデータバッファに格納する場合の冗長データ生成処理の動作を説明する。
【００４９】
まず、ＭＰＵ８は、所定のセクタのデータを読み出し（Ｓ４０１）、読み出したデータがエラーセクタデータかどうかを判断する（Ｓ４０２）。
【００５０】
読み出したデータがエラーセクタデータである場合（Ｓ４０２，ＹＥＳ）、図２０に示すように、ＭＰＵ８は、エラーセクタデータが存在する区分におけるエラーセクタ以前のセクタデータをリードチャネル４にディスク媒体１５から読み込ませ、フォーマット制御部５を介してバッファメモリ４に格納する（Ｓ４０３、読み出しステップ）。
【００５１】
次に、ＭＰＵ８は、図２１に示すように、エラーセクタ以後のセクタデータと冗長データとをリードチャネル４にディスク媒体１５から読み出させ、データメモリ１８１に格納し（Ｓ４０４、読み出しステップ、演算ステップ）、この冗長データが有効かどうかを判断する（Ｓ４０５）。
【００５２】
冗長データが有効である場合（Ｓ４０５，ＹＥＳ）、ＭＰＵ８は、図２２に示すように、バッファメモリ４に格納されたエラーセクタ以前のセクタデータを冗長生成部１８へ転送する（Ｓ４０６、演算ステップ）。
【００５３】
エラーセクタ以前のセクタデータが冗長生成部１８に転送されることにより、ＸＯＲ計算回路１８２によりデータメモリ１８１に格納されたエラーセクタ以後のセクタデータと冗長データによる演算結果とのＸＯＲ演算がなされ、演算結果データが算出される。ＭＰＵ８は、図１８に示すように、得られた演算結果データをエラーセクタデータの復旧データとして、フォーマット制御部５を介してバッファメモリ４に返送する（Ｓ４０７）。
【００５４】
また、ステップＳ４０５において、冗長データが有効ではない場合（Ｓ４０５，ＮＯ）、ＭＰＵ８は、エラーデータ復旧処理を終了する。
【００５５】
また、ステップＳ４０２において、読み出したデータがエラーセクタデータではない場合（Ｓ４０２，ＮＯ）、ＭＰＵ８は、エラーデータ復旧処理を終了する。
【００５６】
このように、エラーセクタ以前のセクタデータのみをバッファメモリ４に読み込んでエラーデータ復旧処理を実行することにより、エラーデータ復旧におけるバッファメモリ４の使用量を抑えることができる。
【００５７】
また、本実施の形態に係るＨＤＤ１は、エラーセクタデータと復旧データによるＸＯＲ演算を行うことにより、データの壊れ位置を特定することができる。図２３は、壊れ位置特定処理の動作を示すフローチャートである。また、図２４は、壊れ位置特定処理におけるデータ経路を示す図である。また、図２５は、壊れ位置情報を示す図である。以下、図２３のフローチャートに沿って、図２３及び２４を用いて壊れ位置特定処理の動作を説明する。
【００５８】
まず、ＭＰＵ８は、上述したエラーデータ復旧処理を実行し（Ｓ５０１）、エラーセクタデータを、フォーマット制御部５を介してバッファメモリ４に読み出す（Ｓ５０２）。この際、フォーマット制御部５は、エラーセクタデータに対してＥＣＣ訂正を施さない。
【００５９】
次に、ＭＰＵ８は、図２４に示すように、エラーデータ復旧処理により復旧されたエラーセクタデータである復旧データを冗長生成部１８へ転送し（Ｓ５０３、エラー位置特定ステップ）、エラーセクタデータを冗長生成部１８へ転送する（Ｓ５０４、エラー位置特定ステップ）。ＭＰＵ８は、これら復旧データとエラーセクタデータによるＸＯＲ演算の演算結果データに基づいて、データの壊れ位置を特定する（Ｓ５０５、エラー位置特定ステップ）。この演算結果データにおいて、二つのデータの相違箇所のビットは１となり、同一箇所のビットは０となるため、データが壊れている箇所の特定が可能となる。
【００６０】
次に、ＭＰＵ８は、図２５に示すように、特定したデータ壊れ位置を壊れ位置情報としてディスク媒体１５のシステム領域に記録する（Ｓ５０６、エラー位置記録ステップ）。この壊れ位置情報は、壊れたセクタのＬＢＡ、セクタにおける壊れ開始位置及び壊れ終了位置、壊れ総ビット数とを対応付けるものである。
【００６１】
上述したように、ＥＣＣデータも含めたユーザデータに対して冗長セクタデータを生成することによって、データが壊れた位置の統計データをＨＤＤ１内部のシステム領域に記録することができ、ＨＤＤ１の品質を管理するためのデータとして利用することができる。
【００６２】
なお、本実施の形態において、冗長セクタデータの生成及びこの冗長セクタデータを用いたエラーセクタデータの復元にＸＯＲ演算を用いたが、入力データとする複数のセクタの順序を変えても演算結果が同じである演算であれば、他の演算を用いても良い。また、本実施の形態において、入力データと演算結果データをセクタ単位としたが、バイト単位、ワード単位など、他のデータ長を単位としても良い。
【００６３】
本発明は、その要旨または主要な特徴から逸脱することなく、他の様々な形で実施することができる。そのため、前述の実施の形態は、あらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明の範囲は、特許請求の範囲によって示すものであって、明細書本文には、何ら拘束されない。更に、特許請求の範囲の均等範囲に属する全ての変形、様々な改良、代替および改質は、全て本発明の範囲内のものである。
【００６４】
なお、本発明は以下に示すような上位装置２としてのコンピュータシステムにおいて適用可能である。図２６は、本発明が適用されるコンピュータシステムの一例を示す図である。図２６に示すコンピュータシステム９００は、ＣＰＵやＨＤＤ１を内蔵した本体部９０１、本体部９０１からの指示により画像を表示するディスプレイ９０２、コンピュータシステム９００に種々の情報を入力するためのキーボード９０３、ディスプレイ９０２の表示画面９０２ａ上の任意の位置を指定するマウス９０４及び外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードする通信装置９０５を有する。通信装置９０５は、ネットワーク通信カード、モデムなどが考えられる。
【００６５】
上述したようなＨＤＤ１のＭＰＵ８またはコンピュータシステムにおいて上述した各ステップを実行させるプログラムを、記憶データ処理プログラムとして提供することができる。このプログラムは、コンピュータシステムにより読取り可能な記録媒体に記憶させることによって、コンピュータシステムに実行させることが可能となる。また、コンピュータシステムにより読み取られるこのプログラムは、コンピュータシステムを介してＨＤＤ１の不揮発性メモリ１０に格納可能である。上述した各ステップを実行するプログラムは、ディスク９１０等の可搬型記録媒体に格納されるか、通信装置９０５により他のコンピュータシステムの記録媒体９０６からダウンロードされる。また、コンピュータシステム９００に少なくともデータリカバリ機能を持たせる記憶データ処理プログラム（記憶データ処理ソフトウェア）は、コンピュータシステム９００に入力されてコンパイルされる。このプログラムは、コンピュータシステム９００をリカバリ機能を有するリカバリシステムとして動作させる。また、このプログラムは、例えばディスク９１０等のコンピュータ読み取り可能な記録媒体に格納されていても良い。ここで、コンピュータシステム９００により読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ディスク１１０やフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータシステム並びにそのデータベースや、通信装置１０５のような通信手段を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
【００６６】
以上、本実施の形態によれば、以下の付記で示す技術的思想が開示されている。
（付記１）  所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理装置であって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加部と、
前記誤り訂正符号付加部により付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込み部と
を備える記憶データ処理装置。
（付記２）  付記１に記載の記憶データ処理装置において、
読み出し対象として指定される第２ブロックの読み出しにおいて、前記誤り訂正符号が付加された第１ブロックである誤り訂正符号付加ブロックから読み出されたデータがエラーデータである場合、エラーデータである誤り訂正符号付加ブロックをエラーブロックとし、前記読み出し対象として指定される第２ブロック中の前記エラーブロック以外の全ての誤り訂正符号付加ブロックの正常データを読み出し、前記読み出し対象として指定される第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を更に備え、
前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算結果を前記エラーブロックのデータとすることを特徴とする記憶データ処理装置。
（付記３）  付記２に記載の記憶データ処理装置において、
前記読み出し部により読み出されたエラーブロックと、前記演算部による演算結果とをビット位置毎に比較し、該比較による前記記憶媒体における相違箇所を、エラー位置として特定するエラー位置特定部を更に備える記憶データ処理装置。
（付記４）  付記３に記載の記憶データ処理装置において、
前記エラー位置特定部により特定されたエラー位置を記録するエラー位置記録部を更に備えるデータ処理装置。
（付記５）  付記４に記載の記憶データ処理装置において、
前記誤り訂正符号付加ブロックはセクタであり、
前記エラー位置記録部は、前記エラー位置を、該エラー位置を含むセクタのアドレスとバイト位置により統計として記録することを特徴とする記憶データ処理装置。
（付記６）  付記１に記載の記憶データ処理装置において、
前記演算部による演算は、順次演算を行う順序を変えても演算結果が変わらない演算であることを特徴とする記憶データ処理装置。
（付記７）  付記５に記載の記憶データ処理装置において、
前記演算部による演算は、排他的論理和であることを特徴とする記憶データ処理装置。
（付記８）  所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置であって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加部と、
前記誤り訂正符号付加部により付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算部と、
前記演算部により出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込み部と
を備える記憶装置。
（付記９）  付記８に記載の記憶装置において、
読み出し対象として指定される第２ブロックの読み出しにおいて、前記誤り訂正符号が付加された第１ブロックである誤り訂正符号付加ブロックから読み出されたデータがエラーデータである場合、エラーデータである誤り訂正符号付加ブロックをエラーブロックとし、前記読み出し対象として指定される第２ブロック中の前記エラーブロック以外の全ての誤り訂正符号付加ブロックの正常データを読み出し、前記読み出し対象として指定される第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出し部を更に備え、
前記演算部は更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算結果を前記エラーブロックのデータとすることを特徴とする記憶装置。
（付記１０）  付記９に記載の記憶装置において、
前記読み出し部により読み出されたエラーブロックと、前記演算部による演算結果とをビット位置毎に比較し、該比較による前記記憶媒体における相違箇所を、エラー位置として特定するエラー位置特定部を更に備える記憶装置。
（付記１１）  付記１０に記載の記憶装置において、
前記エラー位置特定部により特定されたエラー位置を記録するエラー位置記録部を更に備える記憶装置。
（付記１２）  付記１１に記載の記憶装置において、
前記誤り訂正符号付加ブロックはセクタであり、
前記エラー位置記録部は、前記エラー位置を、該エラー位置を含むセクタのアドレスとバイト位置により統計として記録することを特徴とする記憶装置。
（付記１３）  所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理プログラムであって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加ステップと、
前記誤り訂正符号付加ステップにより付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、
前記演算ステップにより出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込みステップと
をコンピュータに実行させる記憶データ処理プログラム。
（付記１４）  付記１３に記載の記憶データ処理プログラムにおいて、
読み出し対象として指定される第２ブロックの読み出しにおいて、前記誤り訂正符号が付加された第１ブロックである誤り訂正符号付加ブロックから読み出されたデータがエラーデータである場合、エラーデータである誤り訂正符号付加ブロックをエラーブロックとし、前記読み出し対象として指定される第２ブロック中の前記エラーブロック以外の全ての誤り訂正符号付加ブロックの正常データを読み出し、前記読み出し対象として指定される第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出しステップを更にコンピュータに実行させ、
前記演算ステップは更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算結果を前記エラーブロックのデータとすることを特徴とする記憶データ処理プログラム。
（付記１５）  付記１４に記載の記憶データ処理プログラムにおいて、
前記読み出しステップにより読み出されたエラーブロックと、前記演算ステップによる演算結果とをビット位置毎に比較し、該比較による前記記憶媒体における相違箇所を、エラー位置として特定するエラー位置特定ステップを更にコンピュータに実行させる記憶データ処理プログラム。
（付記１６）  付記１５に記載の記憶データ処理プログラムにおいて、
前記エラー位置特定ステップにより特定されたエラー位置を記録するエラー位置記録ステップを更にコンピュータに実行させる記憶データ処理プログラム。
（付記１７）  所定のデータ長の第１ブロックを単位としてデータが配置される記憶媒体に対して少なくとも書き込み処理を行う記憶装置に用いられる記憶データ処理方法であって、
前記記憶媒体に書き込まれるデータに対して、前記第１ブロック毎に誤り訂正符号を付加する誤り訂正符号付加ステップと、
前記誤り訂正符号付加ステップにより付加された前記誤り訂正符号を含む複数の第１ブロックにより構成される第２ブロックであって、更新対象として指定される第２ブロックにおける全ての第１ブロックのデータについてビット位置毎の演算を行い、該演算の結果を演算データとして出力する演算ステップと、
前記演算ステップにより出力された演算データを前記更新対象として指定される第２ブロックに対応付けられた第３ブロックへ書き込む書き込みステップと
を備える記憶データ処理方法。
（付記１８）  付記１７に記載の記憶データ処理方法において、
読み出し対象として指定される第２ブロックの読み出しにおいて、前記誤り訂正符号が付加された第１ブロックである誤り訂正符号付加ブロックから読み出されたデータがエラーデータである場合、エラーデータである誤り訂正符号付加ブロックをエラーブロックとし、前記読み出し対象として指定される第２ブロック中の前記エラーブロック以外の全ての誤り訂正符号付加ブロックの正常データを読み出し、前記読み出し対象として指定される第２ブロックに対応する第３ブロックのデータである冗長データを読み出す読み出しステップを更に備え、
前記演算ステップは更に、前記正常データと前記冗長データについてビット位置毎の演算を行い、該演算結果を前記エラーブロックのデータとすることを特徴とする記憶データ処理方法。
（付記１９）  付記１８に記載の記憶データ処理方法において、
前記読み出しステップにより読み出されたエラーブロックと、前記演算ステップによる演算結果とをビット位置毎に比較し、該比較による前記記憶媒体における相違箇所を、エラー位置として特定するエラー位置特定ステップを更に備える記憶データ処理方法。
（付記２０）  付記１９に記載の記憶データ処理方法において、
前記エラー位置特定ステップにより特定されたエラー位置を記録するエラー位置記録ステップを更に備える記憶データ処理方法。
【図面の簡単な説明】
【００６７】
【図１】本実施の形態に係る上位装置とＨＤＤを示すブロック図である。
【図２】本実施の形態に係るＨＤＤの構成を示すブロック図である。
【図３】フォーマット制御部の構成を示すブロック図である。
【図４】冗長生成部の構成を示すブロック図である。
【図５】トラック単位に冗長セクタが置かれる場合のセクタ配置の一例を示す図である。
【図６】所定のセクタ数毎に冗長セクタが配置される場合のセクタ配置の一例を示す図である。
【図７】所定のセクタ数毎に冗長セクタが配置される場合のセクタ配置の一例を示す図である。
【図８】冗長データ更新処理の動作を示すフローチャートである。
【図９】冗長データ生成処理の動作を示すフローチャートである。
【図１０】冗長データ生成処理におけるデータ経路を示す図である。
【図１１】冗長データ生成処理におけるデータ経路を示す図である。
【図１２】冗長データ生成処理におけるデータ経路を示す図である。
【図１３】冗長データ生成処理におけるデータ経路を示す図である。
【図１４】エラーデータ復旧処理の動作を示すフローチャートである。
【図１５】エラーデータ復旧処理におけるデータ経路を示す図である。
【図１６】エラーデータ復旧処理におけるデータ経路を示す図である。
【図１７】エラーデータ復旧処理におけるデータ経路を示す図である。
【図１８】エラーデータ復旧処理におけるデータ経路を示す図である。
【図１９】エラーセクタ以前のデータのみをデータバッファに格納する場合のエラーデータ復旧処理の動作を示すフローチャートである。
【図２０】エラーデータ復旧処理におけるデータ経路を示す図である。
【図２１】エラーデータ復旧処理におけるデータ経路を示す図である。
【図２２】エラーデータ復旧処理におけるデータ経路を示す図である。
【図２３】壊れ位置特定処理の動作を示すフローチャートである。
【図２４】壊れ位置特定処理におけるデータ経路を示す図である。
【図２５】壊れ位置情報を示す図である。
【図２６】本発明が適用されるコンピュータシステムの一例を示す図である。
【符号の説明】
【００６８】
１  ＨＤＤ、２  上位装置、３  バッファ制御部、４  バッファメモリ、５  フォーマット制御部、６  リードチャネル、７  ヘッドＩＣ、８  ＭＰＵ、９  メモリ、１０  不揮発メモリ、１１  サーボ制御部、１２  ＶＣＭ、１３  ＳＰＭ、１４  リードライトヘッド、１５  ディスク媒体、１６  コモンバス、１７  ホストＩＦ、１８  冗長生成部、５１  ＲＬＬ部、５２  ＥＣＣ部、１８１  データメモリ、１８２  ＸＯＲ計算回路。
【図１】
2010061756.tif 000003
【図２】
2010061756.tif 000004
【図３】
2010061756.tif 000005
【図４】
2010061756.tif 000006
【図５】
2010061756.tif 000007
【図６】
2010061756.tif 000008
【図７】
2010061756.tif 000009
【図８】
2010061756.tif 000010
【図９】
2010061756.tif 000011
【図１０】
2010061756.tif 000012
【図１１】
2010061756.tif 000013
【図１２】
2010061756.tif 000014
【図１３】
2010061756.tif 000015
【図１４】
2010061756.tif 000016
【図１５】
2010061756.tif 000017
【図１６】
2010061756.tif 000018
【図１７】
2010061756.tif 000019
【図１８】
2010061756.tif 000020
【図１９】
2010061756.tif 000021
【図２０】
2010061756.tif 000022
【図２１】
2010061756.tif 000023
【図２２】
2010061756.tif 000024
【図２３】
2010061756.tif 000025
【図２４】
2010061756.tif 000026
【図２５】
2010061756.tif 000027
【図２６】
2010061756.tif 000028