説明

記憶装置、制御装置および制御プログラム

【課題】磁気ディスク装置のデッドコピー等で生成する擬似アンコレクタブルエラーセクタ識別情報を適切に記憶できるようにする。
【解決手段】記憶装置は、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を擬似アンコレクタブルエラーセクタ内に記憶する。また、記憶装置は、セクタ内に記憶された識別情報を用いて、セクタについてのデータ処理を行う。また、記憶装置は、擬似アンコレクタブルエラーセクタ内に擬似的に含まれると扱われるアンコレクタブルエラーに関するエラー処理において、エラーログを登録するか否かを示すログ処理情報を擬似アンコレクタブルエラーセクタ内に記憶する。また、記憶装置は、ログ処理情報と識別情報とを用いて、データ処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、記憶装置、制御装置および制御プログラムに関する。
【背景技術】
【0002】
磁気ディスクなどの記憶媒体上に、ECC(Error Correction Code)情報によって訂正することができないアンコレクタブルエラーを作成する手法が知られている。例えば、修理対象とする古い磁気ディスク内にあるセクタにアンコレクタブルエラーが含まれている場合、修理は、修理対象の磁気ディスク内にあるデータをそのまま新しい磁気ディスク内にコピーするなどして行われる。このような場合に、上記手法では、新しい磁気ディスク内のセクタの内、修理対象の磁気ディスク内でアンコレクタブルエラーが含まれていたセクタと同一のセクタに、アンコレクタブルエラーを意図的に作成する。
【0003】
また、従来より、セクタ内にアンコレクタブルエラーを実際に作成するのではなく、アンコレクタブルエラーを擬似的に作成する手法も知られている。具体的には、磁気ディスクは、記憶媒体とは別にメモリを備え、アンコレクタブルエラーが含まれるセクタである旨の識別情報をメモリに記憶させる。そして、記憶媒体を制御する制御装置は、メモリを参照し、メモリに記憶されている識別情報によって指定されるセクタについて、アンコレクタブルエラーが含まれるセクタであるものとして擬似的に扱う。なお、セクタに含まれるECC内に、著作権を管理する情報を格納する手法が開示されている。
【0004】
【特許文献1】特開2001−110136号公報(第1−3頁、第1図)
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところで、上記した従来の技術では、識別情報を適切に記憶することができないという課題があった。すなわち、例えば、上記した従来の技術を実行する場合には、記憶媒体とは別に、識別情報すべてを記憶する容量を備えるメモリを用意しなければならなかった。
【0006】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、識別情報を適切に記憶することが可能である記憶装置、制御装置および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するため、記憶装置は、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を当該擬似アンコレクタブルエラーセクタ内に記憶する記憶制御部を備える。また、記憶装置は、前記記憶手段によってセクタ内に記憶された識別情報を用いて、当該セクタについてのデータ処理を行うデータ処理制御部を備える。
【発明の効果】
【0008】
識別情報を適切に記憶することが可能である。
【発明を実施するための最良の形態】
【0009】
以下に添付図面を参照して、この発明に係る記憶装置、制御装置および制御プログラムの実施例を詳細に説明する。なお、以下では、実施例1に係る記憶装置の概要、記憶装置の構成、動作モード、実施例1に係る記憶装置の処理の流れを順に説明し、その後、その他の実施例について説明する。
【実施例1】
【0010】
[記憶装置の概要]
まず最初に、図1を用いて、実施例1に係る記憶装置の概要を説明する。図1は、実施例1に係る記憶装置の概要を説明するための図である。
【0011】
実施例1に係る記憶装置では、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を当該擬似アンコレクタブルエラーセクタ内に記憶する。すなわち、図1に示すように、記憶装置は、記憶装置が備える記憶媒体(メディア)上に設けられるセクタ内の領域に、当該セクタについての識別情報を記憶する。
【0012】
そして、実施例1に係る記憶装置は、セクタ内に記憶された識別情報を用いて、当該セクタについてのデータ処理を行う。例えば、記憶装置は、擬似アンコレクタブルエラーセクタであることを示す識別情報を読み出した場合には、当該識別情報を読み出したセクタに対して、アンコレクタブルエラーを含むセクタとしてのデータ処理を行う。
【0013】
このようなことから、実施例1に係る記憶装置は、識別情報を適切に記憶することが可能である。例えば、識別情報を記憶するメモリに識別情報を記憶して用いる手法とは異なり、すべてのセクタについて識別情報を記憶する場合であっても記憶することが可能である。
【0014】
[記憶装置の構成]
次に、図2を用いて、図1に示した記憶装置200の構成を説明する。図2は、実施例1に係る記憶装置の構成を説明するためのブロック図である。同図に示すように、この記憶装置200は、ホスト100と接続され、ドライブ210と記憶部220と制御部230とを備える。
【0015】
なお、以下では、擬似アンコレクタブルエラーセクタに関する処理について重点的に説明し、その他の処理については簡潔に説明する。なお、以下では、説明の便宜上、擬似アンコレクタブルエラーセクタ内に含まれると扱われるアンコレクタブルエラーを「擬似アンコレクタブルエラー」と記載する。
【0016】
ホスト100は、記憶装置200と接続され、記憶装置200と情報の送受信を行うコンピュータなどが該当する。例えば、ホスト100は、利用者からの要求により、ドライブ210に情報を書き込む要求であるライトコマンドを発行し、ドライブ210から情報を読み出す要求であるリードコマンドを発行し、記憶装置200に送る。また、ホスト100は、情報を記憶装置200から受信し、利用者に出力する。
【0017】
記憶装置200の説明に戻る。ドライブ210は、制御部230と接続され、メディアを備える。また、ドライブ210は、ホスト100から送られたライトコマンドによって指定される情報を記憶する。なお、ドライブ210は、制御部230によってコマンドが入力され、入力されたコマンドに基づいて処理を実行する。具体的には、ドライブ210は、入力されたコマンドを記憶する記憶部(図2には示していない)を備え、当該記憶部に制御部230から入力されたコマンド各々をコマンド列として記憶する。そして、ドライブ210は、当該コマンド列に含まれるコマンド各々を実行する。なお、ドライブ210が行う処理の詳細については、後述する。
【0018】
また、ドライブ210は、メディアに設けられたセクタ各々に情報を記憶する。例えば、ドライブ210では、図3に示すような一般的なセクタフォーマットが用いられる。なお、図3は、セクタフォーマットの一例を説明するための図である。図3に示す一般的なセクタフォーマットでは、「PAD」は、データを再生する際に発生する遅延時間を吸収する緩衝領域であり、「SB」は、データ領域が開始する位置を示す情報を記憶する領域である。また、「DATA」は、ホスト100から送られたライトコマンドによって指定される情報が入力される領域である。
【0019】
また、「ECC」は、セクタから情報を読み出す際に、当該情報に含まれるエラーを訂正する際に用いられるECC情報を記憶する領域である。図3に示す一般的なセクタフォーマットでは、「ECC」によるエラー訂正の対象となる領域は、「DATA」と「ECC」とが該当する。また、ライトコマンドやリードコマンドによって指定される情報を記憶する領域は、「DATA」が該当する。なお、アンコレクタブルエラーとは、ECC情報によって訂正することができないエラーである。
【0020】
また、ドライブ210は、アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を、擬似アンコレクタブルエラーセクタ内に記憶する。図4に示す例では、ドライブ210は、「DATA」と「ECC」との間に識別情報を入力する専用の「情報」領域を設けて、「情報」領域に識別情報を記憶する。なお、図4に示すセクタフォーマットでは、「ECC」によるエラー訂正の対象となる領域は、「DATA」と「情報」と「ECC」とが該当する。なお、図4は、セクタフォーマット内において管理情報を入力する領域の一例を説明するための図である。
【0021】
また、ドライブ210は、擬似アンコレクタブルエラーセクタ内に擬似的に含まれると扱われるアンコレクタブルエラーに関するエラー処理において、SMARTログを登録するか否かを示すログ処理情報を擬似アンコレクタブルエラーセクタ内に記憶する。なお、SMARTとは、(Self-Monitoring, Analysis and Reporting Technology)を示す。例えば、図4の「情報」に示すように、ドライブ210は、「DATA」と「ECC」との間の領域にログ処理情報を記憶する。なお、SMARTログとは、例えば、メディアの健康状態に関して記憶装置200が発行する情報であり、例えば、不良セクタの数や、エラーが発生した回数などが該当する。
【0022】
また、実施例1では、識別情報とログ処理情報とをあわせて、管理情報として扱う場合について説明する。すなわち、管理情報とは、作成するエラーの種別がアンコレクタブルエラーか擬似アンコレクタブルエラーかを示し、また、当該セクタに関するSMARTログ登録の有無を示す。
【0023】
以下では、図5に示すように、管理情報を記憶する際に、2ビットの情報を用いる手法を用いて説明する。なお、図5は、実施例1にて用いられる管理情報の一例を説明するための図である。つまり、エラーの種別に関するビットについては、擬似アンコレクタブルエラーセクタとしない場合には、つまり、アンコレクタブルエラーを含むセクタとする場合に実際にアンコレクタブルエラーを作成する場合には、「0」とする。また、エラーの種別に関するビットについては、擬似アンコレクタブルエラーとする場合には、つまり、擬似アンコレクタブルエラーセクタとする場合には、「1」とする。また、ログ処理情報に関するビットについては、SMARTログ登録を行う場合には「1」、SMARTログ登録を行わない場合には「0」とする。つまり、擬似アンコレクタブルエラーセクタであって、SMARTログ登録を行うことを示す管理情報は、「11」となる。
【0024】
なお、ドライブ210が記憶する情報は、制御部230によって入力され、制御部230によって用いられる。すなわち、後述するように、ホスト100からのライトコマンドに基づいて、制御部230によってライト処理され、また、ホスト100からのリードコマンドに基づいて、制御部230によってリード処理される。
【0025】
記憶部220は、制御部230と接続され、制御部230による制御処理に用いるデータを格納し、例えば、ドライブ210についてのSMARTログや、制御部230がドライブ210から情報をリード処理する際やライト処理する際に用いる設定情報を記憶する。例えば、記憶部220は、ROM(Read Only Memory)やFLASH MEMORYなどが該当する。
【0026】
なお、以下では特に言及しないが、制御部230内の各部は、ライト処理やリード処理などを実行する際に、当該処理に対応する設定情報を記憶部220から読み出し、当該設定情報を用いて処理を実行する。記憶部220は、利用者によって予め設定情報が入力され、また、制御部230によってSMARTログが入力される。
【0027】
制御部230は、各種の制御処理手順などを規定したプログラムを格納するための内部メモリを有し、種々の制御処理を実行する。また、制御部230は、ホスト100とドライブ210と記憶部220と接続され、フォーマッタ部231とファーム部232とを備える。
【0028】
なお、フォーマッタ部231は、記憶制御部やログ処理情報記憶制御部としての機能を実現し、また、フォーマッタ部231とファーム部232とは、協働することで、データ処理制御部としての機能を実現する。
【0029】
なお、フォーマッタ部231とファーム部232との説明では、説明の便宜上、ドライブ210に対してコマンドを入力する点については記載を省略する。
【0030】
[フォーマッタ部]
フォーマッタ部231は、ホスト100とドライブ210と記憶部220とファーム部232と接続される。また、フォーマッタ部231は、ホスト100からライトコマンドやリードコマンドを受け付けると、記憶部220によって記憶された設定情報を用いて、当該コマンドに対応する処理をドライブ210に対して行う。すなわち、以下に説明するように、フォーマッタ部231は、ドライブ210に対するライト処理を行い、また、ドライブ210に対するリード処理をファーム部232とともに行う。なお、以下では特に言及しないが、フォーマッタ部231は、ライトコマンドやリードコマンドに対応する処理をドライブ210に行う際には、ドライブ210に備えられた記憶部にコマンド各々をコマンド列として入力する。
【0031】
[フォーマッタ部によるライト処理]
フォーマッタ部231は、ホスト100から受け付けたライトコマンドに基づいて、通常のライト処理を行い、アンコレクタブルエラーを作成するライト処理を行い、また、擬似アンコレクタブルエラーを作成するライト処理を行う。
【0032】
なお、アンコレクタブルエラーを作成するライト処理とは、実際にアンコレクタブルエラーを含むアンコレクタブルエラーセクタを作成する処理である。また、擬似アンコレクタブルエラーを作成するライト処理とは、つまり、擬似アンコレクタブルエラーセクタを作成するライト処理である。
【0033】
[通常のライト処理]
通常のライト処理について説明する。具体的には、後述する動作モード「0」が該当する。フォーマッタ部231は、通常のライト処理を行うライトコマンドをホスト100から受け付ける。具体的には、フォーマッタ部231は、ライトコマンドとして、通常のライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを受け付ける。なお、動作モードについての詳細については、後述する。
【0034】
また、フォーマッタ部231は、ライトコマンドとして受け付けたセクタ情報によって識別されるセクタに、通常のライト処理を行う指示によって指定される情報を書き込む。なお、フォーマッタ部231は、通常のライト処理を行う際には、アンコレクタブルエラーを作成するライト処理や擬似アンコレクタブルエラーを作成するライト処理などを行わない。
【0035】
なお、例えば、フォーマッタ部231は、セクタ情報によって識別されるセクタについてのライト処理を行う際に、エラーが発生した場合には、所定の回数リトライを実行する。また、フォーマッタ部231は、所定の回数リトライを実行したにもかかわらず、ライト処理が成功しなかった場合には、エラー処理を行い、例えば、ライト処理が失敗した旨の情報をホスト100に送る。
【0036】
なお、リトライを実行する際には、例えば、フォーマッタ部231は、エラーが発生した記憶領域を示すアドレスを算出し、エラーが発生した旨の情報を記憶部220に登録する。そして、フォーマッタ部231は、リトライを行う際に用いる設定情報を記憶部220から読み出し、ライト処理を再度実行する。
【0037】
[擬似アンコレクタブルエラーなどを作成するライト処理]
アンコレクタブルエラーを作成するライト処理や擬似アンコレクタブルエラーを作成するライト処理について説明する。具体的には、後述する動作モード「1」〜「3」が該当する。フォーマッタ部231は、動作モード「1」〜「3」各々に対応するライトコマンドを受け付ける。
【0038】
また、以下では、動作モード「1」は、アンコレクタブルエラーを作成すライトコマンドであり、動作モード「2」と「3」とは、擬似アンコレクタブルエラーを作成するライトコマンドとして説明する。
【0039】
具体的には、フォーマッタ部231は、ライトコマンドとして、動作モード「1」〜「3」各々に対応するライトコマンドを受け付ける。例えば、フォーマッタ部231は、動作モード「1」に対応するライトコマンドとして、アンコレクタブルエラーを作成するライト処理を行う指示と、ライト対象とするセクタを識別するセクタ情報とを受け付ける。また、例えば、フォーマッタ部231は、動作モード「2」や「3」に対応するライトコマンドとして、動作モード「2」や「3」にて、擬似アンコレクタブルエラーを作成するライト処理を行う指示と、ライト対象とするセクタを識別するセクタ情報とを受け付ける。
【0040】
また、具体的には、フォーマッタ部231は、ライトコマンドを受け付けると、ライトコマンドとして受け付けたセクタ情報によって識別されるセクタについて、リード処理を行う。つまり、フォーマッタ部231は、アンコレクタブルエラーや擬似アンコレクタブルエラーを作成する対象となるセクタについて、実際にリード処理できるセクタであり、壊れているセクタでないかを確認する。
【0041】
なお、例えば、フォーマッタ部231は、セクタ情報によって識別されるセクタについてのリード処理を行う際に、エラーが発生した場合には、所定の回数リトライを実行する。また、フォーマッタ部231は、所定の回数リトライを実行したにもかかわらず、リード処理が成功しなかった場合には、エラー処理を行い、例えば、ライト処理が失敗した旨の情報をホスト100に送る。
【0042】
また、フォーマッタ部231は、セクタ情報によって識別されるセクタについてのリード処理が終了すると、ホスト100から受け付けたライトコマンドに対応する設定情報を記憶部220から読み出す。そして、当該設定情報を用いてライト処理を行う。
【0043】
具体的には、フォーマッタ部231は、ライト処理として、アンコレクタブルエラーを作成する際には、つまり、後述する動作モード「1」である場合には、セクタ情報によって識別されるセクタ内の「DATA」領域に、アンコレクタブルエラーを作成する。
【0044】
また、フォーマッタ部231は、擬似アンコレクタブルエラーを作成する際には、つまり、動作モード「2」または「3」である場合には、セクタ内にある「DATA」領域には何ら変更を加えることなく、「DATA」以外の領域に管理情報を入力する。すなわち、フォーマッタ部231は、エラーの種別に関するビットが「1」である管理情報を入力する。図4に示す例を用いて説明すると、フォーマッタ部231は、管理情報を「情報」領域に入力し、例えば、エラーの種別に関するビットが「1」である管理情報を入力する。
【0045】
なお、例えば、フォーマッタ部231は、ライト処理としてアンコレクタブルエラーを作成する処理などを行う際にエラーが発生した場合には、リトライ処理を実行する。ここで、フォーマッタ部231は、所定の回数リトライ処理を実行したにもかかわらず、ライト処理が成功しなかった場合には、エラー処理を行い、例えば、ライト処理が失敗した旨の情報をホスト100に送る。
【0046】
[フォーマッタ部によるリード処理]
フォーマッタ部231によるリード処理について説明する。フォーマッタ部231は、リード処理を行うリードコマンドをホスト100から受け付ける。具体的には、フォーマッタ部231は、リードコマンドとして、通常のリード処理を行うリードコマンドや、動作モード「4」にてリード処理を行うリードコマンドを受け付ける。なお、動作モード「4」とは、管理情報を用いずにリード処理を行う旨の指示である。
【0047】
例えば、フォーマッタ部231は、通常のリード処理を行うリードコマンドとして、通常のリード処理を実行する指示と、リード対象とするセクタを識別するセクタ情報とを受け付ける。また、例えば、フォーマッタ部231は、動作モード「4」にてリード処理を行うリードコマンドとして、動作モード「4」にてリードコマンドを実行する指示と、リード対象とするセクタを識別するセクタ情報とを受け付ける。そして、フォーマッタ部231は、リード処理によりドライブ210から読み出した情報をホスト100に送る。
【0048】
ここで、フォーマッタ部231は、動作モード「4」にてリード処理を行うリードコマンドである場合には、受け付けたセクタ情報にて識別されるセクタについて、リード対象とするセクタ内に記憶されている管理情報に関係なくリード処理を行う。すなわち、フォーマッタ部231は、動作モード「4」にてリード処理を行うリードコマンドである場合には、擬似アンコレクタブルエラーセクタであることを示す管理情報がセクタ内に記憶されている場合であっても、擬似アンコレクタブルエラーを含むセクタとしての処理を行わない。
【0049】
図4に示すセクタフォーマットを用いて説明すると、フォーマッタ部231は、リード対象とするセクタについて、「DATA」から「ECC」までの領域を読み出す。ここで、フォーマッタ部231は、読み出したセクタについてエラーを読み出さなかった場合には、リードした情報をホスト100に送り、当該セクタについての処理を終了する。また、フォーマッタ部231は、読み出したセクタについてエラーを読み出した場合には、処理を停止し、ファーム部232にエラーを検出した旨の情報を送る。その後、フォーマッタ部231は、ファーム部232からエラー処理が終了した旨の情報を受信すると、リードした情報をホストに送り、当該セクタについての処理を終了する。
【0050】
また、フォーマッタ部231は、受け付けたセクタ情報にて識別されるセクタが複数ある場合には、次のセクタについて同様にリード処理を行い、すべてのセクタについてリード処理を行う。
【0051】
また、フォーマッタ部231は、動作モード「4」にてリード処理を行うリードコマンドでない場合には、受け付けたセクタ情報にて識別されるセクタについて、管理情報に基づいたリード処理を行う。つまり、図4に示すセクタフォーマットを用いて説明すると、フォーマッタ部231は、リード対象とするセクタについて、「DATA」から「ECC」までの領域を読み出す。
【0052】
また、フォーマッタ部231は、読み出したセクタについてエラーを読み出した場合には、処理を停止し、ファーム部232にエラーを検出した旨の情報を送る。また、フォーマッタ部231は、読み出した「情報」に記憶されている管理情報について、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「1」である場合に、処理を停止し、ファーム部232に管理情報を送る。
【0053】
図6を用いて、セクタ「N」とセクタ「N+1」とがセクタ情報によって指定され、また、セクタ「N」とセクタ「N+1」内からフォーマッタ部231がエラーを読み出さなかった場合について説明する。すなわち、セクタ「N」とセクタ「N+1」内には、アンコレクタブルエラーが含まれなかったものとして説明する。なお、図6は、実施例1におけるフォーマッタ部を説明するための図である。
【0054】
図6の(A)に示すように、フォーマッタ部231は、セクタ「N」について、管理情報が「00」であり、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「1」ではないので、処理を停止せずにセクタ「N+1」についてのリード処理を行う。
【0055】
また、図6の(B)に示すように、フォーマッタ部231は、セクタ「N」について、管理情報が「10」であり、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「1」であるので、処理を停止する。その後、後述するように、ファーム部232による処理が行われた後に、フォーマッタ部231は、セクタ「N+1」についてのリード処理を行う。
【0056】
また、フォーマッタ部231は、エラーを検出した旨の情報や管理情報をファーム部232に送った後に、ファーム部232から処理が終了した旨の情報を受信すると、当該セクタについての処理を終了する。その後、フォーマッタ部231は、すべてのセクタについて処理を行う。
【0057】
[ファーム部]
ファーム部232は、ホスト100と記憶部220とフォーマッタ部231と接続され、フォーマッタ部231から情報を受け取ると、エラー処理や、SMARTログ登録処理、ホストへのエラー報告処理などを行う。
【0058】
ファーム部232は、エラーを検出した旨の情報をフォーマッタ部231から受信すると、リトライ処理を実行する。ここで、所定の回数リトライ処理を実行したにもかかわらず、エラーが解消しなかった場合には、エラー後処理を行い、例えば、エラーが発生した旨の情報をホスト100に送り、また、SMARTログを記憶部220に登録する。また、ファーム部232は、エラーが解消した場合には、フォーマッタ部231がリードした情報の内エラーに対応する情報を修正する。
【0059】
また、ファーム部232は、管理情報をフォーマッタ部231から受信すると、管理情報を用いてセクタについてのデータ処理を行う。まず、ファーム部232は、管理情報の内容を確認する。ここで、管理情報が「11」となっている場合には、つまり、エラーの種別が擬似アンコレクタブルエラーであり、SMARTログ登録が有りとなっている場合には、ファーム部232は、動作モード「2」に関するリード処理を行う。動作モード「2」に関するリード処理とは、セクタに擬似アンコレクタブルエラーがある旨の情報をホスト100に送り、また、擬似アンコレクタブルエラーに関するSMARTログを記憶部220に登録する。そして、ファーム部232は、処理が終了した旨の情報をフォーマッタ部231に送る。
【0060】
また、ファーム部232は、管理情報が「10」となっている場合には、つまり、エラーの種別が擬似アンコレクタブルエラーであり、SMARTログ登録がなしとなっている場合には、ファーム部232は、動作モード「3」に関するリード処理を行う。動作モード「3」に関するリード処理とは、当該セクタに擬似アンコレクタブルエラーがある旨の情報をホスト100に送り、また、擬似アンコレクタブルエラーに関するSMARTログを記憶部220に登録しない。そして、ファーム部232は、処理が終了した旨の情報をフォーマッタ部231に送る。
【0061】
[動作モードと管理情報]
次に、図7を用いて、実施例1における動作モードについてさらに説明する。なお、図7は、実施例1における動作モードについて説明するための図である。図7においては、動作モード各々に対応づけて、ライト処理に関する設定と、フォーマッタ部231に関するリード処理設定と、ファーム部232に関するリード処理設定とを示した。
【0062】
ここで、ライト処理に関する設定内における「媒体アンコレ(意図したECCエラー)」とは、アンコレクタブルエラーの作成の有無を示す。具体的には、媒体アンコレ(意図したECCエラー)「あり」では、フォーマッタ部231は、ライト処理時に、アンコレクタブルエラーを作成する。また、媒体アンコレ(意図したECCエラー)「なし」では、フォーマッタ部231は、ライト処理時に、アンコレクタブルエラーを作成しない。
【0063】
また、ライト処理に関する設定内における「擬似アンコレ作成」とは、擬似アンコレクタブルエラー作成の有無を示す。具体的には、擬似アンコレ作成「あり」では、フォーマッタ部231は、ライト処理時に、擬似アンコレクタブルエラーを作成する。つまり、フォーマッタ部231は、セクタ内に、エラーの種別に関するビット「1」を管理情報として書き込む。また、擬似アンコレ作成「なし」では、フォーマッタ部231は、ライト処理時に、擬似アンコレクタブルエラーを作成しない。
【0064】
また、ライト処理に関する設定内における「SMARTログ登録」とは、SMARTログ登録の有無を示す。具体的には、SMARTログ登録「あり」では、フォーマッタ部231は、ライト処理時に、SMARTログを登録することを示す管理情報をセクタに書き込む。つまり、フォーマッタ部231は、セクタ内に、SMARTログ登録の有無を指定するビット「1」を管理情報として書き込む。また、SMARTログ登録「なし」では、フォーマッタ部231は、ライト処理時に、SMARTログを登録しないことを示す管理情報をセクタに書き込む。つまり、フォーマッタ部231は、セクタ内に、SMARTログ登録の有無を指定するビット「0」を管理情報として書き込む。
【0065】
また、フォーマッタ部231に関するリード処理設定内における「リード停止モード」と「フォーマッタ部の停止」とは、擬似アンコレクタブルエラーを示す管理情報を読み出した際にフォーマッタ部231が処理を停止するかを示す。具体的には、リード停止モード「許可」と、フォーマッタ部の停止「する」とでは、フォーマッタ部231は、処理を停止する。また、リード停止モード「禁止」では、フォーマッタ部231は、処理を停止せず、また、擬似アンコレクタブルエラーに対応する処理を行わない。なお、フォーマッタ部に関するリード処理設定内における「×」は、擬似アンコレクタブルエラーを想定していない動作モードであることを示す。
【0066】
また、ファーム部232に関するリード処理設定内にある「ホストへのアンコレ報告」とは、アンコレクタブルエラーや擬似アンコレクタブルエラーを読み出した際に、ホスト100に対して報告するかを示す。具体的には、ホストへのアンコレ報告「あり」では、ファーム部232は、リード処理時に、ホスト100に報告する。また、ホストへのアンコレ報告「なし」では、ファーム部232は、リード処理時に、ホスト100に報告しない。
【0067】
また、ファーム処理内にある「SMARTログ登録」とは、SMARTログ登録の有無を示す。具体的には、SMARTログ登録「あり」では、ファーム部232は、リード処理時に、SMARTログを登録することを示す。また、SMARTログ登録「なし」では、ファーム部232は、リード処理時に、SMARTログを登録しない。
【0068】
[動作モード0]
動作モード「0」では、通常のライト処理を行うため、説明を省略する。
【0069】
[動作モード1]
ここで、動作モード「1」について説明する。動作モード「1」とは、Write Longコマンドにおいて、意図的にアンコレクタブルエラーを作成するのと同様である。動作モード「1」では、フォーマッタ部231は、実際にアンコレクタブルエラーを作成する。また、フォーマッタ部231やファーム部232は、リード処理時においては、リード停止モード設定に関係なく、通常のリトライ処理を行い、その後、エラー処理を行う。
【0070】
なお、実際にアンコレクタブルエラーを作成する手法としては、例えば、ライト処理時に通常と異なるSeed値を設定し、リード処理時には通常値のSeed値を用いることにより、アンコレクタブルエラーを作成する。
【0071】
動作モード「1」では、アンコレクタブルエラーが作成されたセクタリード処理すると、ドライブの劣化等によって発生した通常のアンコレクタブルエラーと同様に、フォーマッタ部231やファーム部232によってホスト100にエラーが報告され、また、SMARTログが蓄積されていくことになる。言い換えると、ドライブ210の属性情報が悪化する。
【0072】
動作モード「1」は、ホスト100が、動作モード「2」〜「4」に切り替えることなく、任意のセクタにアンコレクタブルエラーを作成したい場合に使用される。なお、Write Longコマンドとは、ATA spec上は、すでに「Obsolete.」定義された28bit LBA(Logical Block Addressing)コマンドで、Read Longコマンドと組み合わせて使用する。また、Write Longコマンドとは、元々は、ECCエラーのテスト目的で使用されていた。
【0073】
[動作モード1の活用法]
動作モード「1」は、例えば、HDD(Hard Disk Drive)を修理する際に用いられる。すなわち、エンドユーザーから修理などで返却されたPC内にあるHDDである元HDDに不具合などがある場合には、一般的に、元HDD修理の際にデータが消去される。しかし、元HDD内に重要なデータがあり不具合のある部分以外のデータは、回復したいとの依頼があることも珍しくない。この様な場合、元HDDにある正常にリード可能なセクタついては、新しいHDDに複製することが可能であるが、アンコレクタブルエラーとなっている部分については複製出来ない。同時に、新しいHDD上には元々アンコレクタブルエラーがないので複製の対象外となったセクタから、元HDDと違うデータが読み出される可能性が残る。この状態で元のPCなどに接続すると「あたかも全てのデータが回復できた」様になるが、実際にファイルの内容が化けるなどして二次的な不具合や損失を発生させる可能性が考えられる。従って、この様な故障した元HDDのデータリカバリーを行なう際は、新しいHDDにも意図的に同一番号のセクタエラーを作り、エンドユーザーに返却するのが一般的である。なお、新しいHDDには、故障はないので「データ消去ソフトウェア」などにより、装置のデータを上書きすれば正常なドライブとして復活は可能だが、アクセスした回数に応じて、SMARTログが蓄積されていくことになる。
【0074】
[動作モード2]
動作モード「2」について説明する。動作モード「2」では、ライトコマンドが発行されると、フォーマッタ部231は、対象となるセクタに対して一度リード処理を行う。そして、フォーマッタ部231は、「擬似アンコレクタブルエラー+SMARTログ登録あり」を示す管理情報を対象となるセクタ内に書き込む。
【0075】
ここで、動作モード「2」にて作成された擬似アンコレクタブルエラーセクタでは、管理情報を用いたリード処理を行う場合には、つまり、動作モード「4」でない場合には、リード停止モード「許可」となる。この結果、フォーマッタ部231は、リード処理を実行すると、処理を停止する。その後、ファーム部232は、フォーマッタ部231が読み出した管理情報などに基づいてSMARTログ登録処理や、ホストへの報告を行い、SMARTログが蓄積されていくことになる。なお、フォーマッタ部231が停止している際に、擬似アンコレクタブルエラー以外の停止要因となるエラーが発生している場合には、リトライ動作を行なう。
【0076】
なお、「擬似アンコレクタブルエラー+SMARTログ登録あり」を示す管理情報が書き込まれたセクタは、動作モード「4」を用いてリード処理を行うことによりエラーのない正常なセクタとしてリード処理を行うことが可能である。
【0077】
[動作モード2の活用法]
動作モード「2」は、ホスト100から見た場合、結果的に、「アンコレクタブルエラー+SMARTログ登録有り」は動作モード「1」と同じであるが、擬似アンコレクタブルエラーによる即時エラー扱いとすることにより、リトライアウトとなるまでの時間を短縮可能である。なお、通常にリトライアウトするまでには、数秒の時間が必要である。
【0078】
また、動作モード「2」では、システム(サーバー)などの環境下で、HDD障害時におけるホスト100側の動作検証を行なう場合に、エラー箇所へのリード処理を何度も実施することがあるが、当該リード処理に要する時間を短縮することが可能となる。
【0079】
[動作モード3]
動作モード「3」では、動作モード「2」とほぼ同様であるが、ファーム部232が、SMARTログ登録を行わない点が異なる。
【0080】
すなわち、動作モード「3」では、動作モード「3」にて作成されたセクタについてリード処理を行うと、ホスト100に対して擬似アンコレクタブルエラーがある旨の情報が報告されるが、SMARTログが新たに蓄積されることはない。SMARTログなどの属性情報が悪化しない。この結果、動作モード「3」にて擬似アンコレクタブルエラーが作成されたセクタであれば、SMARTログなどの属性情報が悪化することがないので、擬似アンコレクタブルエラーを示す管理情報を削除した後に、SMARTログが蓄積されていくことを回避できる。
【0081】
[動作モード3の活用法]
動作モード「1」にあるデータリカバリーなどを行なった際でも、元々のエラーセクタ番号にアクセスした場合はエラーとなるが、何度セクタ対してリード処理を実行したとしても、SMARTログが新たに蓄積されることはない。すなわち、データリカバリー作業によるSMARTログが新たに蓄積された状態となることなく、再度HDDを使用することが可能である。
【0082】
[動作モード4]
動作モード「4」は、動作モード「2」や「3」にて擬似アンコレクタブルエラーをセクタに作成した後に、当該セクタを読み出したい場合や一時的に機能off(擬似アンコレクタブルエラーをなくしたい)場合に使用する。例えば、ホスト100によって、動作モード「4」への切り替えコマンドが発行された後に、フォーマッタ部231が、動作モード「4」にてリード処理を行う。
【0083】
[動作モード4の活用法]
テストの目的によっては、データを復元するためにOS(Operation System)などの再インストール作業が必要になる場合があるが、動作モード「4」を使用することにより、擬似アンコレクタブルエラーを作成したセクタにあるデータを簡単に読み出すことが可能である。また、読み出したデータを用いて、当該セクタの回復が容易となる。
【0084】
テスト対象となるセクタ内にあるデータを予めバックアップしておく方法もあるが、装置容量や確認台数が増えるに比例して膨大化してしまう。擬似アンコレクタブルエラーを作成する際には、元々のデータを保持した状態で、擬似的なエラーとしているだけなので、動作モード「4」を用いることにより、データのバックアップを不要とすることが可能である。
【0085】
[記憶装置に関する処理]
次に、実施例1に係る記憶装置に関する処理について説明する。以下では、図8〜図15を用いて、ホストによるリードコマンド発行処理、記憶装置による通常のライト処理、記憶装置によるエラーを作成するライト処理、記憶装置によるリード処理、ドライブによる処理について順に説明する。
【0086】
[ホストによるライトコマンド発行処理]
図8を用いて、実施例1におけるホスト100によるライトコマンド発行処理を説明する。図8は、実施例1におけるホストによるライトコマンド発行処理の流れを説明するためのフローチャートである。
【0087】
同図に示すように、ホスト100は、ライトコマンドの発行要求が利用者からあり(ステップS101肯定)、当該要求が通常のライト処理についての要求である場合には、(ステップS102肯定)、通常のライト処理を行うライトコマンドを発行する(ステップS103)。つまり、ホスト100は、フォーマッタ部231に、ライトコマンドとして、通常のライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【0088】
また、ホスト100は、通常のライト処理についての要求でなく(ステップS102否定)、動作モード「1」である場合には(ステップS104肯定)、動作モード「1」に対応するライトコマンドを発行する(ステップS105)。つまり、ホスト100は、フォーマッタ部231に、ライトコマンドとして、アンコレクタブルエラーを作成するライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【0089】
また、ホスト100は、通常のライト処理についての要求でなく(ステップS102否定)、動作モード「1」ではなく(ステップS104否定)、動作モード「2」である場合には(ステップS106肯定)、動作モード「2」に対応するライトコマンドを発行する(ステップS107)。つまり、ホスト100は、フォーマッタ部231に、ライトコマンドとして、動作モード「2」にて擬似アンコレクタブルエラーを作成するライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【0090】
また、ホスト100は、通常のライト処理についての要求でなく(ステップS102否定)、動作モード「1」ではなく(ステップS104否定)、動作モード「2」でない場合には(ステップS106否定)、動作モード「3」に対応するライトコマンドを発行する(ステップS108)。つまり、ホスト100は、フォーマッタ部231に、ライトコマンドとして、動作モード「3」にて擬似アンコレクタブルエラーを作成するライト処理を行う指示と、対象とするセクタを識別するセクタ情報とを送る。
【0091】
そして、ホスト100は、コマンドを発行すると、必要に応じて、データ転送処理を行う(ステップS109)。例えば、コマンドを発行する際にデータをフォーマッタ部231に送る場合には、データ転送処理を行う。そして、ホスト100は、発行したライトコマンドについて、エラーが発生するかを判定し(ステップS110)、エラーが発生した場合には(ステップS110肯定)、例えば、ライト処理が失敗した旨の情報をフォーマッタ部231から受け付けると、エラー処理を行う(ステップS111)。つまり、例えば、ホスト100は、ライト処理が失敗した旨の情報を利用者に出力する。一方、ホスト100は、エラーが発生しなかった場合には(ステップS110否定)、正常終了処理を行い(ステップS112)、例えば、ライト処理が終了した旨の情報を利用者に出力する。
【0092】
[ホストによるリードコマンド発行処理]
次に、図9を用いて、実施例1におけるホスト100によるリードコマンド発行処理を説明する。図9は、実施例1におけるホストによるリードコマンド発行処理の流れを説明するためのフローチャートである。
【0093】
同図に示すように、ホスト100は、リードコマンドの発行要求が利用者からあると(ステップS201肯定)当該要求が動作モード「4」であるかを判定する(ステップS202)。ここで、ホスト100は、動作モード「4」でないと判定すると(ステップS202否定)、通常のリード処理を行うリードコマンドを発行する(ステップS203)。また、ホスト100は、動作モード「4」であると判定すると(ステップS202肯定)、動作モード「4」にてリード処理を行うリードコマンドを発行する(ステップS204)。つまり、ホスト100は、フォーマッタ部231に、リードコマンドとして、動作モード「4」にてリードコマンドを実行する指示と、リード対象とするセクタを識別するセクタ情報とを送る。
【0094】
そして、ホスト100は、コマンドを発行すると、必要に応じて、データ転送処理を行う(ステップS205)。そして、ホスト100は、発行したリードコマンドについて、エラーが発生するかを判定し(ステップS206)、エラーが発生した場合には(ステップS206肯定)、例えば、リード処理が失敗した旨の情報をファーム部232から受け付けると、エラー処理を行う(ステップS207)。一方、ホスト100は、エラーが発生しなかった場合には(ステップS206否定)、正常終了処理を行い(ステップS208)、例えば、フォーマッタ部231から受け付けた情報を利用者に出力する。
【0095】
[記憶装置による通常のライト処理]
次に、図10を用いて、実施例1に係る記憶装置200による通常のライト処理を説明する。図10は、実施例1に係る記憶装置による通常のライト処理の流れを説明するためのフローチャートである。
【0096】
同図に示すように、フォーマッタ部231は、通常のライト処理を実行するライトコマンドである場合には(ステップS301肯定)、つまり、通常のライト処理を行うライトコマンドをホスト100から受け付けると、通常のライト処理を実行する(ステップS302)。ここで、フォーマッタ部231は、エラーが発生した場合には(ステップS303肯定)、リトライを実行する(ステップS304)。そして、フォーマッタ部231は、エラーが解消したかを判定し(ステップS305)、エラーが解消した場合には(ステップS305肯定)、フォーマッタ終了処理を行う(ステップS306)。つまり、例えば、フォーマッタ部231は、ライト処理が終了した旨の情報をホスト100に送る。なお、上記したステップS303にて、フォーマッタ部231は、エラーが発生しなかった場合には(ステップS303否定)、そのままフォーマッタ終了処理を行う(ステップS306)。
【0097】
一方、フォーマッタ部231は、上記したステップS305にて、エラーが解消しなかった場合には(ステップS305否定)、リトライアウトとなったかを判定する(ステップS307)。つまり、フォーマッタ部231は、リトライを所定の回数実行したかを判定するここで、フォーマッタ部231は、リトライアウトとなっていないと判定する場合には(ステップS307否定)、上記したステップS304からS307までの処理を繰り返す。一方、フォーマッタ部231は、リトライアウトとなったと判定する場合には(ステップS307肯定)、エラー処理を行い(ステップS308)、処理を終了する。つまり、例えば、フォーマッタ部231は、ライト処理が失敗した旨の情報をホスト100に送る。
【0098】
[記憶装置によるアンコレクタブルエラーを作成するライト処理]
次に、図11を用いて、実施例1に係る記憶装置200によるアンコレクタブルエラーを作成するライト処理を説明する。図11は、実施例1に係る記憶装置によるアンコレクタブルエラーを作成するライト処理の流れを説明するためのフローチャートである。なお、図10にて説明したフローチャートと共通する処理については、説明を省略する。
【0099】
図11に示すように、フォーマッタ部231は、エラーを作成するライト処理を実行するライトコマンドである場合には(ステップS401肯定)、つまり、動作モード「1」〜「3」各々に対応するライトコマンドを受け付けると、対象となるセクタについてリード処理を実行する(ステップS402)。
【0100】
そして、フォーマッタ部231は、リード処理が終了すると(〜ステップS406)、対象となるセクタについて、ライト処理を実行する(ステップS408)。つまり、ホスト100から受け付けたライトコマンドにて指定される動作モード「1」〜「3」のいずれかを用いて、ライト処理を実行する。
【0101】
その後、フォーマッタ部231は、ライトコマンドが指定するすべてのセクタについてライト処理が終了したかを判定する(ステップS413)。ここで、フォーマッタ部231は、すべてのセクタについてライト処理が終了していない場合には(ステップS413否定)、上記したステップS402〜S413までの処理を繰り返す。一方、フォーマッタ部231は、すべてのセクタについてライト処理が終了した場合には(ステップS413肯定)、フォーマッタ終了処理を行い(ステップS414)、処理を終了する。例えば、フォーマッタ部231は、ライト処理が終了した旨の情報をホスト100に送る。
【0102】
なお、図11におけるステップS403〜S407は、図10におけるステップS303〜S305、S307に対応する。また、図11におけるステップS409〜S412は、図10におけるステップS303〜S305、S307に対応する。
【0103】
[記憶装置によるリード処理]
次に、図12を用いて、実施例1に係る記憶装置200によるリード処理を説明する。図12は、実施例1に係る記憶装置によるリード処理の流れを説明するためのフローチャートである。
【0104】
同図に示すように、フォーマッタ部231は、リード処理を実行する場合には(ステップS501肯定)、つまり、リードコマンドをホスト100から受け付けると、動作モード「4」かを判定する(ステップS502)。ここで、フォーマッタ部231は、動作モード「4」である場合には(ステップS502肯定)、動作モード「4」に対応するリード処理を実行する(ステップS503)。すなわち、フォーマッタ部231やファーム部232は、擬似アンコレクタブルエラーを示す管理情報がセクタ内に記憶されている場合であっても、当該セクタをアンコレクタブルエラーとしての処理を行わずにリード処理を実行することになる。
【0105】
ここで、ファーム部232は、エラーがあるかを判定する(ステップS504)。つまり、ファーム部232は、フォーマッタ部231によってエラーが読み出された旨の情報を受信したかを判定する。ファーム部232は、エラーがない場合には(ステップS504否定)、読み出したセクタについてのリード処理を終了する(ステップS505)。つまり、ファーム部232は、処理が終了した旨の情報をフォーマッタ部231に送り、フォーマッタ部231が、リード処理を終了した旨の情報をホスト100に送る。
【0106】
一方、ファーム部232は、エラーがある場合には(ステップS504肯定)、リトライを実行する(ステップS506)。そして、ファーム部232は、エラーが解消したかを判定し(ステップS507)、エラーが解消した場合には(ステップS507肯定)、リード処理を終了する(ステップS505)。
【0107】
一方、ファーム部232は、エラーが解消していない場合には(ステップS507否定)、リトライアウトとなったかを判定する(ステップS508)。つまり、ファーム部232は、リトライを所定の回数実行したかを判定することで、ファーム部232は、リトライアウトとなっていないと判定する場合には(ステップS508否定)、上記したステップS506からS508までの処理を繰り返す。また、ファーム部232は、リトライアウトとなったと判定する場合には(ステップS508肯定)、エラー処理を行い(ステップS509)、処理を終了する。つまり、例えば、ファーム部232は、リード処理が失敗した旨の情報をホスト100に送る。
【0108】
また、ファーム部232は、動作モード「4」でない場合には(ステップS502否定)、エラーモードや停止要因がフォーマッタ部231によって検出されたかを判定する(ステップS510)。つまり、ファーム部232は、フォーマッタ部231からアンコレクタブルエラーを検出した旨の情報を受信し、また、エラーの種別に関するビットが擬似アンコレクタブルエラーを示す「1」である管理情報をフォーマッタ部231から受信したかを判定する。
【0109】
ここで、ファーム部232は、停止要因を検出すると判定している場合において(ステップS510肯定)、アンコレクタブルエラーを検出した旨の情報を受信した場合には(ステップS511肯定)、リトライ処理を実行する(ステップS512〜S515)。
【0110】
そして、ファーム部232は、アンコレクタブルエラーを検出した旨の情報を受信していない場合(ステップS511否定)や、リトライ処理を終了した場合に(〜ステップS515)、動作モード「2」であるかを判定する(ステップS516)。つまり、ファーム部232は、管理情報として、「11」を受信したかを判定する。ここで、ファーム部232は、動作モード「2」であるかを判定する場合には(ステップS516肯定)、当該セクタについて、動作モード「2」に関するリード処理を行う(ステップS517)。つまり、ファーム部232は、当該セクタにアンコレクタブルエラーがある旨の情報をホスト100に送り、また、アンコレクタブルエラーに関するSMARTログを記憶部220に登録する。
【0111】
そして、ファーム部232は、動作モード「2」でないと判定した場合には(ステップS516否定)、動作モード「3」であるかを判定する(ステップS518)。つまり、ファーム部232は、管理情報として、「10」を受信したかを判定する。ここで、ファーム部232は、動作モード「3」であると判定する場合には(ステップS518肯定)、当該セクタについて、動作モード「3」に関するリード処理を行う(ステップS519)。つまり、ファーム部232は、当該セクタにアンコレクタブルエラーがある旨の情報をホスト100に送り、また、アンコレクタブルエラーに関するSMARTログを記憶部220に登録しない。なお、ファーム部232は、動作モード「3」であると判定しない場合には(ステップS518否定)、当該セクタについてのリード処理が終了する。
【0112】
その後、フォーマッタ部231は、すべてのセクタについて処理を行ったかを判定し(ステップS520)、行ったと判定する場合には(ステップS520肯定)、処理を終了し、すべてのセクタについて処理を行っていない場合には(ステップS520否定)、上記したステップS502〜S519までの処理を繰り返す。
【0113】
なお、図12におけるステップS512〜S515は、図12におけるステップS505、S507〜S509に対応する。
【0114】
[ドライブによる処理]
次に、図13〜図15を用いて、実施例1におけるドライブ210による処理について説明する。なお、以下では、アイドル状態におけるコマンド受領処理と、コマンド割り込み処理と、コマンド実行処理とについて説明する。
【0115】
[アイドル状態におけるコマンド受領処理]
図13を用いて、実施例1におけるドライブ210によるアイドル状態におけるコマンド受領処理について説明する。なお、図13は、実施例1におけるドライブによるアイドル状態におけるコマンド受領処理の流れを説明するためのフローチャートである。
【0116】
同図に示すように、ドライブ210は、アイドル状態において、制御部230からコマンド列への登録があると(ステップS601肯定)、登録されたコマンドを実行する(ステップS602)。すなわち、ドライブ210は、コマンド列に登録されたコマンド各々を順番に実行していく。
【0117】
[コマンド割り込み処理]
図14を用いて、実施例1におけるドライブ210によるコマンド割り込み処理について説明する。なお、図14は、実施例1におけるドライブによるコマンド割り込み処理の流れを説明するためのフローチャートである。
【0118】
同図に示すように、ドライブ210は、コマンド登録中に(ステップS701)、つまり、コマンドを受領してコマンド列に登録している際に、他のコマンドをさらに受領すると(ステップS702肯定)、当該コマンドを登録する(ステップS703)。
【0119】
[コマンド実行処理]
図15を用いて、実施例1におけるドライブ210によるコマンド実行処理について説明する。なお、図15は、実施例1におけるドライブによるコマンド実行処理の流れを説明するためのフローチャートである。
【0120】
同図に示すように、ドライブ210は、コマンドを実行する際には、コマンド列に登録されたコマンドを解析し(ステップS801)、対象となるセクタを示すアドレスを計算し、当該アドレスによってしめされる領域をドライブ210内にて探す(シーク)動作を行う(ステップS802)。
【0121】
ここで、ドライブ210は、実行するコマンドがライトコマンドである場合には(ステップS803肯定)、必要に応じて制御部230からドライブ210に記憶させる情報を転送する処理を行い(ステップS804)、その後、ライト処理を行う(ステップS805)。つまり、ドライブ210は、ドライブ210が有するメディア上に情報を書き込む。そして、ドライブ210は、エラーが発生した場合には(ステップS806肯定)、エラー処理を行い(ステップS807)、例えば、ライト処理が失敗した旨の情報を制御部230に送る。一方、ドライブ210は、エラーが発生しなかった場合には(ステップS806否定)、正常に処理が終了する場合の処理を実行し(ステップS808)、例えば、ライト処理が正常に終了した旨の情報を制御部230に送る。
【0122】
一方、ドライブ210は、実行するコマンドがライトコマンドでない場合には(ステップS803否定)、つまり、リードコマンドである場合には、リード処理を行う(ステップS809)。そして、ドライブ210は、エラーが発生した場合には(ステップS810肯定)、エラー処理を行い(ステップS811)、例えば、リード処理が失敗した旨の情報を制御部230に送る。一方、ドライブ210は、エラーが発生しなかった場合には(ステップS810否定)、必要に応じてリードした情報を制御部230に転送する処理を行い(ステップS812)、正常に処理が終了する場合の処理を実行する(ステップS813)。例えば、ドライブ210は、リード処理が正常に終了した旨の情報を制御部230に送る。
【0123】
[実施例1の効果]
上記したように、実施例1によれば、記憶装置200は、擬似アンコレクタブルエラーセクタを識別する識別情報を擬似アンコレクタブルエラーセクタ内に記憶し、セクタ内に記憶された識別情報を用いてセクタについてのデータ処理を行う。この結果、識別情報を適切に記憶することが可能である。
【0124】
例えば、識別情報を記憶するメモリに識別情報を記憶して用いる手法とは異なり、すべてのセクタについて識別情報を記憶する場合であっても記憶することが可能である。
【0125】
また、例えば、識別情報を記憶するメモリなどに識別情報をテーブルとして管理する手法と比較して、識別情報を用いたデータ処理を迅速に行うことが可能である。すなわち、テーブルとして管理する手法では、識別情報を用いたデータ処理を行うごとに、テーブルを参照する処理を行っていた。また、テーブルとして管理する手法では、テーブルにて管理される識別情報の数が増大すればするほど、参照する際の処理負荷が増加していた。
【0126】
このようなテーブルにて管理する手法と比較して、テーブルを参照する処理をなくすことができ、処理を迅速に行うことが可能である。
【0127】
また、実施例1によれば、記憶装置200は、ログ処理情報を擬似アンコレクタブルエラーセクタ内に記憶し、ログ処理情報と識別情報とを用いてデータ処理を行うので、識別情報と同様に、ログ処理情報を適切に記憶することが可能である。
【0128】
また、実施例1によれば、記憶装置200は、管理情報を用いずにデータ処理を行う旨の指示を受け付けると、管理情報を用いずにセクタについてのデータ処理を行うので、擬似アンコレクタブルエラーセクタであることを示す識別情報が記憶されたセクタであっても、管理情報を無視してセクタに関するデータ処理を行うことが可能である。
【0129】
例えば、擬似アンコレクタブルエラーセクタである場合には、セクタ内のデータを読みだす処理を行わない場合に、動作モード「4」を用いてリード処理を行うことで、擬似アンコレクタブルエラーセクタ内のデータをリード処理することが可能である。
【実施例2】
【0130】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されてよいものである。そこで、以下に示すように、その他の実施例について説明する。
【0131】
[管理情報格納位置]
例えば、実施例1では、「DATA」と「ECC」との間に位置する専用の領域「情報」領域に、管理情報を書き込む場合について説明したが、これに限定されるものではなく、管理情報を任意の領域に書き込んでもよい。例えば、「データ」や「ECC」領域内に、エンコードやデコードにて生ずる端数部分が存在している場合には、当該領域に管理情報を書き込んでもよい。この結果、セクタフォーマット効率を悪化させることなく、識別情報をセクタ内に記憶することが可能である。すなわち、セクタ内の領域の内、データ領域やECC領域内にエンコードやデコードによって生じる端数領域を用いることで、元々使用されていない領域を用いて識別情報をセクタ内に記憶することが可能である。
【0132】
[管理情報]
また、実施例1では、管理情報として、識別情報とログ処理情報とを併せて用いる場合について説明したが、これに限定されるものではなく、SMARTログ登録有無を示すビットを用いなくてもよい。
【0133】
また、実施例1では、管理情報として、エラーの種別に関するビットと、SMARTログ登録有無を指定するビットとを用いる場合について説明したが、これに限定されるものではない。
【0134】
例えば、セクタごとに、当該セクタに対して書き込み処理を行った書き込み回数をあわせて書き込んでもよい。すなわち、例えば、ドライブ210が有するメディア内にある記憶領域を各Zoneや数千LBA単位に分割し、記憶装置200は、セクタ各々についての書き込み回数を用いて、当該単位での書き込み回数を管理する。例えば、記憶装置200は、メモリを備え、当該メモリ上に、当該単位での書き込み回数を管理する。
【0135】
ここで、記憶装置200は、書き込み回数が所定の閾値に達したかを監視し、達している場合に、管理単位毎に再書き込み処理(対象セクタのデータリード後にライト動作)を行う。また、記憶装置200は、SMART機能のSelf Test(または、ホストからのコマンド指示)などにより、管理単位毎に書き込み回数を収集し、サイドイレーズの影響が起こりそうな閾値に到達している場合にも、同様に、管理単位毎に再書き込み処理を行なう。なお、サイドイレーズとは、記録対象とするセクタだけでなく、隣接するセクタにまで情報を書き込んでしまう現象である。また、記憶装置200は、エラーが発生した後に、エラーリトライにより当該エラーを回復した場合にも、書き込み回数を収集し、リトライによりエラーを回復可能な内に、リライト処理を行う。また、記憶装置200は、リライト処理や監視処理をバックグラウンドにて実施してもよい。この結果、記憶装置200は、媒体の属性が悪化するまえに、適切なリライト処理などの対処を行うことが可能である。
【0136】
また、管理情報として、温度情報をあわせて用いてもよい。すなわち、ライト処理を実行した際の温度条件によっては、その後のリード処理時の温度条件がライト処理時の温度条件と異なると、アンコレクタブルエラーが発生しやすい状態となることがある。ここで、記憶装置200は、温度情報をセクタ内に書き込み、リード処理時に当該温度情報を用いることで、アンコレクタブルエラーの発生を抑制することが可能である。また、例えば記憶装置200は、エラーが発生した後にリトライによりエラーを回復した場合に、温度情報を読み出し、次回のリード処理時やリトライ時に、当該温度条件にてリード処理等を行うように制御することが可能である。この結果、記憶装置200は、エラー発生に伴う、性能低下を最小限に抑えることが可能である。
【0137】
なお、記憶装置200は、ライト処理時に書き込み回数の管理情報更新のみを行なえば良く、また、リード処理時には、エラーが検出された場合にのみ、温度情報や書き込み回数などを示す管理情報を用いた処理を実行するように制御してもよい。この結果、記憶装置200は、エラーが発生していない時点において、リード処理性能に影響を与えることなく、実装することが可能である。
【0138】
[システム構成]
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる(例えば、図1〜図9)。
【0139】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0140】
[コンピュータ]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図16を用いて、上記の実施例と同様の機能を有する記憶プログラムを実行するコンピュータの一例を説明する。なお、図16は、実施例1に係る記憶装置と同様の機能を有するコンピュータを説明するための図である。
【0141】
同図に示すように、コンピュータ3000は、操作部3001、マイク3002、スピーカ3003、ドライブ3004、ディスプレイ3005、通信部3006、CPU(Central Processing Unit)3010、ROM3011、HDD3012、RAM(Random Access Memory)3013をバス3009などで接続して構成されている。なお、ドライブ3004は、図2に示したドライブ210に対応する。
【0142】
ROM3011には、上記の実施例1で示したフォーマッタ部231と、ファーム部232と同様の機能を発揮する制御プログラム、つまり、同図に示すように、フォーマッタプログラム3011aと、ファームプログラム3011bとが予め記憶されている。なお、これらのプログラム3011a〜3011bについては、図2に示した記憶装置200の各構成要素と同様、適宜統合または分離してもよい。
【0143】
そして、CPU3010が、これらのプログラム3011a〜3011bをROM3011から読み出して実行することにより、図16に示すように、各プログラム3011a〜3011bについては、フォーマッタプロセス3010aと、ファームプロセス3010bとして機能するようになる。なお、各プロセス3010a〜3010bは、図2に示した、フォーマッタ部231と、ファーム部232とにそれぞれ対応する。
【0144】
そして、HDD3012には、SMARTログテーブル3012aが設けられている。そして、CPU3010は、SMARTログテーブル3012aを読み出してRAM3013に格納し、RAM3013に格納されたSMARTログデータ3013aと、管理情報データ3013bとを用いて、プログラムを実行する。
【0145】
[その他]
なお、本実施例で説明した記憶装置は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【図面の簡単な説明】
【0146】
【図1】実施例1に係る記憶装置の概要を説明するための図である。
【図2】実施例1に係る記憶装置の構成を説明するためのブロック図である。
【図3】セクタフォーマットの一例を説明するための図である。
【図4】セクタフォーマット内において管理情報を入力する領域の一例を説明するための図である。
【図5】実施例1にて用いられる管理情報の一例を説明するための図である。
【図6】実施例1におけるフォーマッタ部を説明するための図である。
【図7】実施例1における動作モードについて説明するための図である。
【図8】実施例1におけるホストによるライトコマンド発行処理の流れを説明するためのフローチャートである。
【図9】実施例1におけるホストによるリードコマンド発行処理の流れを説明するためのフローチャートである。
【図10】実施例1に係る記憶装置による通常のライト処理の流れを説明するためのフローチャートである。
【図11】実施例1に係る記憶装置によるアンコレクタブルエラーを作成するライト処理の流れを説明するためのフローチャートである。
【図12】実施例1に係る記憶装置によるリード処理の流れを説明するためのフローチャートである。
【図13】実施例1におけるドライブによるアイドル状態におけるコマンド受領処理の流れを説明するためのフローチャートである。
【図14】実施例1におけるドライブによるコマンド割り込み処理の流れを説明するためのフローチャートである。
【図15】実施例1におけるドライブによるコマンド実行処理の流れを説明するためのフローチャートである。
【図16】実施例1に係る記憶装置と同様の機能を有するコンピュータを説明するための図である。
【符号の説明】
【0147】
100 ホスト
200 記憶装置
210 ドライブ
220 記憶部
230 制御部
231 フォーマッタ部
232 ファーム部

【特許請求の範囲】
【請求項1】
アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタを識別する識別情報を当該擬似アンコレクタブルエラーセクタ内に記憶する記憶制御部と、
前記記憶制御部によってセクタ内に記憶された識別情報を用いて、当該セクタについてのデータ処理を行うデータ処理制御部と、
を備えることを特徴とする記憶装置。
【請求項2】
前記擬似アンコレクタブルエラーセクタ内に擬似的に含まれると扱われるアンコレクタブルエラーに関するエラー処理において、エラーログを登録するか否かを示すログ処理情報を当該擬似アンコレクタブルエラーセクタ内に記憶するログ処理情報記憶制御部と、
前記データ処理制御部は、前記ログ処理情報記憶制御部によって記憶された前記ログ処理情報と、前記識別情報とを用いて、データ処理を行うことを特徴とする請求項1に記載の記憶装置。
【請求項3】
前記セクタは、データを記憶するデータ領域と、当該データ領域に含まれるエラーを訂正する際に用いられる情報を記憶するECC領域とを備え、
前記記憶制御部は、前記データ領域内にある端数領域または前記ECC領域内にある端数領域に、前記識別情報を記憶することを特徴とする請求項1または2に記載の記憶装置。
【請求項4】
前記データ処理制御部は、前記識別情報を用いずにデータ処理を行う旨の指示を受け付けると、前記記憶制御部によって記憶された前記識別情報を用いずに前記セクタについてのデータ処理を行うことを特徴とする請求項1〜3のいずれか一つに記載の記憶装置。
【請求項5】
アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタ内に記憶された当該擬似アンコレクタブルエラーセクタを識別する識別情報を用いて、当該セクタについてのデータ処理を行うデータ処理制御部を備えることを特徴とする制御装置。
【請求項6】
アンコレクタブルエラーを含むセクタとして擬似的に扱う擬似アンコレクタブルエラーセクタ内に記憶された当該擬似アンコレクタブルエラーセクタを識別する識別情報を用いて、当該セクタについてのデータ処理を行う処理工程をコンピュータに実行させることを特徴とする制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2010−61242(P2010−61242A)
【公開日】平成22年3月18日(2010.3.18)
【国際特許分類】
【出願番号】特願2008−224117(P2008−224117)
【出願日】平成20年9月1日(2008.9.1)
【出願人】(309033264)東芝ストレージデバイス株式会社 (255)
【Fターム(参考)】