(57)【要約】【課題】読み出しエラー発生時におけるホストコントローラの処理性能の低下を極力回避する。【解決手段】ホストコントローラ２０は、ディスクの読み出しエラー発生時に代替処理命令を発行する。ディスク装置１０のディスクコントローラは、代替処理命令に応答してエラーセクタからのデータ読み出しを実行する。読み出しが成功した場合、予備セクタを代替セクタとして設定するとともに、読み出したデータを代替セクタに書き込む。また、データ読み出しが失敗した場合、予備セクタを代替セクタとして設定する。そして、データ読み出し結果に対応するステータスを命令実行完了通知に付与してホストコントローラ２０に送信する。ホストコントローラ２０は、命令実行完了通知に異常ステータスが付与されている場合、バックアップデータを書き込み要求とともにディスク装置１０に送信する。【選択図】図２
2010287285.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶部と、
前記記憶部においてデータの読み出しエラーが発生すると、エラー通知をホストコントローラに送信する送信部と、
前記ホストコントローラからの代替処理命令に応答して、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しを実行する読出実行部と、
前記エラーデータ領域からのデータ読み出しが成功した場合、予備データ領域を当該エラー領域の代替領域として設定するとともに、読み出したデータを当該代替領域に書き込む書込実行部と、
前記エラーデータ領域からのデータ読み出しが失敗した場合、予備データ領域を当該エラー領域の代替領域として設定する設定部と、
を備え、
前記送信部は、
前記読出実行部によるデータ読み出しの成否に関する情報が付加された命令実行完了通知を、前記ホストコントローラに送信するディスク装置。
【請求項２】
前記読出実行部は、
前記エラーデータ領域からのデータ読み出しが成功するか、前記エラーデータ領域からのデータ読み出しの失敗回数が所定回数に達するまで、前記エラーデータ領域からのデータ読み出しを繰り返す、
ことを特徴とする請求項１に記載のディスク装置。
【請求項３】
前記書込実行部は、
前記エラーデータ領域からのデータ読み出しが失敗した後に、前記ホストコントローラから送信されたバックアップデータを、前記予備データ領域に書き込む、
ことを特徴とする請求項１又は２に記載のディスク装置。
【請求項４】
請求項１乃至３のいずれか一項に記載のディスク装置から、読み出しエラーを受信すると、代替処理命令を発行する命令発行部と、
前記代替処理命令発行後に、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しの成否に関する情報が付加された命令実行完了通知を受信する受信部と、
前記受信部によって受信された情報に基づいて、前記エラーデータ領域からのデータ読み出しの成否を判別する判別部と、
前記エラーデータ領域からのデータ読み出しが失敗であると判別された場合、バックアップデータを前記ディスク装置に供給する供給部と、
を備えるホストコントローラ。
【請求項５】
請求項１乃至３のいずれか一項に記載のディスク装置と、
請求項４に記載のホストコントローラと、
を備えるディスクシステム。
【請求項６】
ディスク装置において、読み出しエラーが発生すると、エラー通知をホストコントローラに通知するステップと、
前記エラー通知を受けて、ホストコントローラにおいて、エラーデータ領域について代替処理命令を発行するステップと、
前記ディスク装置において、ホストコントローラからの代替処理命令に応答して、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しを実行するステップと、
前記ディスク装置において、前記エラーデータ領域からのデータ読み出しが成功した場合、予備データ領域を当該エラー領域の代替領域として設定するとともに、読み出したデータを当該代替領域に書き込むステップと、
前記ディスク装置において、前記データ読み出しの成否に関する情報が付加された命令実行完了通知を前記ホストコントローラに送信する送信ステップと、
を含む代替処理方法。
【請求項７】
前記ホストコントローラにおいて、前記ディスク装置から送信された命令実行完了通知に含まれる前記データ読み出しの成否に関する情報がデータ読み出しの失敗を示す場合、所定のバックアップデータを取得し、前記ディスク装置に送信するステップと、
をさらに含むことを特徴とする請求項６に記載の代替処理方法。
【請求項８】
データを記憶する記憶部からのデータの読み出しエラーが発生すると、エラー通知をホストコントローラに送信する第１の手順と、
前記ホストコントローラからの代替処理命令に応答して、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しを実行する第２の手順と、
前記エラーデータ領域からのデータ読み出しが成功した場合、予備データ領域を当該エラー領域の代替領域として設定するとともに、読み出したデータを当該代替領域に書き込む第３の手順と、
前記エラーデータ領域からのデータ読み出しが失敗した場合、予備データ領域を当該エラー領域の代替領域として設定する第４の手順と、
前記読出実行部によるデータ読み出しの成否に関する情報が付加された命令実行完了通知を前記ホストコントローラに送信する第５の手順と、
をコンピュータに実行させるプログラム。
【請求項９】
ディスク装置から、読み出しエラーを受信すると、代替処理命令を発行する第１の手順と、
前記代替処理命令発行後に、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しの成否に関する情報が付加された命令実行完了通知を受信する第２の手順と、
前記受信部によって受信された情報に基づいて、前記エラーデータ領域からのデータ読み出しの成否を判別する第３の手順と、
前記エラーデータ領域からのデータ読み出しが失敗であると判別された場合、バックアップデータを前記ディスク装置に供給する第４の手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置から発行されるコマンドに従ってデータの読み書きを行うディスク装置、その上位装置としてのホストコントローラ、前記ディスク装置と前記ホストコントローラとを備えるディスクシステム、前記ディスク装置の代替処理方法及びコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
上位装置としてのホストコントローラから発行されるリード要求に対し、ハードディスク装置（以下、適宜「ＨＤＤ」と呼ぶ）は、そのリード要求に対応するセクタからデータを読み取って、ホストコントローラに出力する。データの読み取りの際に、読み出しエラーが発生すると、ＨＤＤは、読み出しリトライ処理や代替処理を行うのが一般的となっている（例えば、特許文献１参照）。ここで、代替処理とは、ＨＤＤが、読み取りエラーが発生したセクタ（エラーセクタ）を、自身の持つ予備セクタに再割り当てする処理である。
【０００３】
ＨＤＤの中には、読み出しエラーが発生すると、ホストコントローラにエラー情報を出力するものがある。この場合、ホストコントローラは、ＨＤＤに対して、代替処理の実行要求コマンドを発行する。ＨＤＤは、このコマンドを受けて、エラーセクタのセクタ番号を予備セクタに割り振り、予備セクタにバックアップデータを書き戻す。この際、ホストコントローラは、内部メモリから読み出したり、冗長構成のディスク装置から再構成する等してバックアップデータを取得し、書き込みコマンドとともにＨＤＤに送信する。ＨＤＤは、ホストコントローラから送信されたバックアップデータを、予備セクタに書き込む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２９３９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、ホストコントローラから送信されるバックアップデータを用いてデータを復旧するタイプのシステムでは、そのバックアップデータの書き込み処理等によって、本来、ホストコントローラが実行すべき処理の実行が妨げられる。この結果、ホストコントローラの処理性能が一時的に低下し、ホストコントローラを含むシステム全体の性能が低下してしまうおそれがある。
【０００６】
ホストコントローラがバックアップデータの書き込み処理等を行う必要があるシステム構成では、上記特許文献１などに開示されたような、ＨＤＤが単独でリトライ処理や代替処理を行うシステムとは異なり、ホストコントローラの処理低下を回避するのは極めて困難である。
【０００７】
本発明は、上記問題点に鑑みてなされたもので、ディスク装置の読み出しエラー発生時におけるホストコントローラの処理性能の低下を極力回避することができる、ディスク装置、ホストコントローラ、ディスクシステム、代替処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の観点に係るディスク装置は、
データを記憶する記憶部と、
前記記憶部においてデータの読み出しエラーが発生すると、エラー通知をホストコントローラに送信する送信部と、
前記ホストコントローラからの代替処理命令に応答して、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しを実行する読出実行部と、
前記エラーデータ領域からのデータ読み出しが成功した場合、予備データ領域を当該エラー領域の代替領域として設定するとともに、読み出したデータを当該代替領域に書き込む書込実行部と、
前記エラーデータ領域からのデータ読み出しが失敗した場合、予備データ領域を当該エラー領域の代替領域として設定する設定部と、
を備え、
前記送信部は、
前記読出実行部によるデータ読み出しの成否に関する情報が付加された命令実行完了通知を、前記ホストコントローラに送信する。
【０００９】
また、本発明の第２の観点に係るホストコントローラは、
本発明のディスク装置から、読み出しエラーを受信すると、代替処理命令を発行する命令発行部と、
前記代替処理命令発行後に、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しの成否に関する情報が付加された命令実行完了通知を受信する受信部と、
前記受信部によって受信された情報に基づいて、前記エラーデータ領域からのデータ読み出しの成否を判別する判別部と、
前記エラーデータ領域からのデータ読み出しが失敗であると判別された場合、バックアップデータを前記ディスク装置に供給する供給部と、
を備える。
【００１０】
また、本発明の第３の観点に係るディスクシステムは、
本発明のディスク装置と、
本発明のホストコントローラと、
を備える。
【００１１】
また、本発明の第４の観点に係る代替処理方法は、
ディスク装置において、読み出しエラーが発生すると、エラー通知をホストコントローラに通知するステップと、
前記エラー通知を受けて、ホストコントローラにおいて、エラーデータ領域について代替処理命令を発行するステップと、
前記ディスク装置において、ホストコントローラからの代替処理命令に応答して、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しを実行するステップと、
前記ディスク装置において、前記エラーデータ領域からのデータ読み出しが成功した場合、予備データ領域を当該エラー領域の代替領域として設定するとともに、読み出したデータを当該代替領域に書き込むステップと、
前記ディスク装置において、前記データ読み出しの成否に関する情報が付加された命令実行完了通知を前記ホストコントローラに送信する送信ステップと、
を含む。
【００１２】
また、本発明の第５の観点に係るプログラムは、
データを記憶する記憶部からのデータの読み出しエラーが発生すると、エラー通知をホストコントローラに送信する第１の手順と、
前記ホストコントローラからの代替処理命令に応答して、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しを実行する第２の手順と、
前記エラーデータ領域からのデータ読み出しが成功した場合、予備データ領域を当該エラー領域の代替領域として設定するとともに、読み出したデータを当該代替領域に書き込む第３の手順と、
前記エラーデータ領域からのデータ読み出しが失敗した場合、予備データ領域を当該エラー領域の代替領域として設定する第４の手順と、
前記読出実行部によるデータ読み出しの成否に関する情報が付加された命令実行完了通知を前記ホストコントローラに送信する第５の手順と、
をコンピュータに実行させる。
【００１３】
また、本発明の第６の観点に係るプログラムは、
ディスク装置から、読み出しエラーを受信すると、代替処理命令を発行する第１の手順と、
前記代替処理命令発行後に、前記読み出しエラーが発生したエラーデータ領域からのデータ読み出しの成否に関する情報が付加された命令実行完了通知を受信する第２の手順と、
前記受信部によって受信された情報に基づいて、前記エラーデータ領域からのデータ読み出しの成否を判別する第３の手順と、
前記エラーデータ領域からのデータ読み出しが失敗であると判別された場合、バックアップデータを前記ディスク装置に供給する第４の手順と、
をコンピュータに実行させる。
【発明の効果】
【００１４】
本発明によれば、ディスク装置の読み出しエラー発生時におけるホストコントローラの処理性能の低下を極力回避することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るディスク装置とホストコントローラとの構成を示すブロック図である。
【図２】ディスク装置とホストコントローラの代替処理における処理動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について図面を参照して説明する。
【００１７】
図１に示すように、本実施形態に係るディスクシステム１は、ディスク装置１０と、ホストコントローラ２０と、を備える。ディスク装置１０は、ホストコントローラ２０に接続されている。
【００１８】
ディスク装置１０は、ディスクコントローラ１１とディスク部１２を備える。ディスクコントローラ１１は、例えばＭＰＵ（Micro Processing Unit）、メモリ（いずれも不図示）等を備える。ディスクコントローラ１１は、ホストコントローラ２０からの命令に応答してディスク部１２に対するデータの読み出し／書き込み等の処理を行う。
【００１９】
さらに、ディスクコントローラ１１は、ディスクの読み出しエラー発生時にホストコントローラ２０により発行される代替処理命令を受信した場合、予備セクタを代替セクタに再割り当てする代替処理を実行する。この代替処理において、ディスクコントローラ１１は、命令により指定されたエラーセクタについてデータの読み出しを実行し、データの読み出しが成功した場合には、予備セクタをエラーセクタの代替エリアとして設定するとともに、そのデータを代替セクタに書き込む。また、データの読み出しが失敗した場合には、ディスクコントローラ１１は、予備セクタをエラーセクタの代替エリアとして設定する。そして、ディスクコントローラ１１は、データ読み出しの成否に対応するステータス（読み出し成功の場合「正常」、読み出し失敗の場合「異常」）が付与された命令実行完了通知を、ホストコントローラ２０に送信する。
【００２０】
ディスク部１２は、ＨＤＤ（Hard Disk Drive）等、データを記憶する記憶媒体を備える。
【００２１】
ホストコントローラ２０は、例えばＭＰＵ、メモリ等（いずれも不図示）を備える。ホストコントローラ２０は、ディスク装置１０のディスクコントローラ１１に対して、ディスクにおけるデータの読み出し／書き込みに関する各種命令を発行することにより、ディスク装置１０を制御する。
【００２２】
さらに、ホストコントローラ２０は、データの読み出しエラーが発生した場合、エラーセクタについて代替セクタを割り当てるための代替処理の命令をディスクコントローラ１１に発行する。代替処理命令に対する命令実行完了通知をディスクコントローラ１１から受け取ると、ホストコントローラ２０は、これに付与されているステータスを参照する。
【００２３】
参照したステータスが異常ステータスである場合、ホストコントローラ２０は、ディスクの代替エリアに書き込むためのバックアップデータを所定の記憶媒体から取得し、書き込み命令とともにディスクコントローラ１１に供給する。所定の記憶媒体は、例えばホストコントローラ２０の内部メモリであってもよいし、冗長構成のハードディスクであってもよい。冗長構成のハードディスクであった場合、ホストコントローラ２０は、そのハードディスクに記憶されているデータを読み出して再構成する。なお、命令実行完了通知に付与されているステータスが正常ステータスである場合は、書き込み命令の発行は不要であるため、ホストコントローラ２０は、そのまま処理を終了する。
【００２４】
次に、本実施形態に係るディスク装置１０とホストコントローラ２０の代替処理における処理動作について図２のフローチャートを参照して説明する。
まず、ディスク装置１０からデータの読み出しエラーを通知されると、ホストコントローラ２０は、代替処理の命令をディスク装置１０のディスクコントローラ１１に送信する（ステップＳ１）。この命令には、エラーセクタを指定する情報（エラーセクタのセクタ番号等）が付与されている。
ディスクコントローラ１１は、代替処理の命令を受信すると（ステップＳ２）、命令により指定されたエラーセクタからのデータ読み出しを実行する（ステップＳ３）。
【００２５】
エラーセクタからのデータ読み出しが成功した場合（ステップＳ４：ＹＥＳ）、ディスクコントローラ１１は、読み出しデータを内部メモリに一旦格納する（ステップＳ５）。続いて、ディスクコントローラ１１は、予備セクタのセクタ番号をエラーセクタに対応づけて所定のテーブルに設定登録する等して、エラーセクタのセクタ番号を予備セクタに割り当てる（ステップＳ６）。続いて、ディスクコントローラ１１は、内部メモリに格納したデータをその代替セクタに書き込む（ステップＳ７）。さらに、ディスクコントローラ１１は、正常ステータスが付与された命令実行完了通知をホストコントローラ２０に送信する（ステップＳ８）。
【００２６】
また、エラーセクタからのデータ読み出しが失敗した場合（ステップＳ４：ＮＯ）、ディスクコントローラ１１は、内部メモリに記憶しているリトライ回数（初期値”０”）に１だけ加算し、リトライ回数が所定値に達したかを判定する（ステップＳ９）。リトライ回数が所定値に達していない場合（ステップＳ９：ＮＯ）、ディスクコントローラ１１は、ステップＳ３に戻り、エラーセクタからのデータ読み出しを実行する。また、リトライ回数が所定値に達した場合（ステップＳ９：ＹＥＳ）、ディスクコントローラ１１は、エラーセクタのセクタ番号を予備セクタに割り当てる（ステップＳ１０）。そして、ディスクコントローラ１１は、異常ステータスが付与された命令実行完了通知をホストコントローラ２０に送信する（ステップＳ１１）。
【００２７】
一方、ホストコントローラ２０は、ディスクコントローラ１１からの命令実行完了通知を受信すると（ステップＳ１２）、その通知に付与されたステータスが正常ステータスか否かを判別する（ステップＳ１３）。通知に付与されたステータスが正常ステータスである場合（ステップＳ１３：ＹＥＳ）、ホストコントローラ２０は、そのまま処理を終了する。また、通知に付与されたステータスが異常ステータスである場合には（ステップＳ１３：ＮＯ）、ホストコントローラ２０は、バックアップデータを読み出し又は生成して取得する（ステップＳ１４）。そして、ホストコントローラ２０は、取得したバックアップデータを、書き込み命令とともにディスクコントローラ１１に送信する（ステップＳ１５）。この命令には、書き込み先セクタを指定する情報（セクタ番号等）が付与されている。
【００２８】
ディスクコントローラ１１は、ホストコントローラ２０からの書き込み命令を受信すると（ステップＳ１６）、バックアップデータを、指定されたセクタに書き込む（ステップＳ１７）。そして、データの書き込みが完了すると、命令実行完了通知を送信する（ステップＳ１８）。
ホストコントローラ２０は、命令実行完了通知を受信すると（ステップＳ１９）、処理を終了する。
【００２９】
以上詳細に説明したように、本実施形態によれば、ディスクの読み出しエラーの発生により、代替処理実行命令がホストコントローラ２０から発行されると、ディスク装置１０は、自動的に、エラーセクタからのデータ読み出しを実行する。そのデータ読み出しが成功した場合には、ディスク装置１０は、読み出したデータを用いて代替セクタへの書き戻しを行う。ホストコントローラ２０は、命令実行完了通知に付与されたステータスを参照して、異常ステータスの場合にのみ、バックアップデータを書き込み命令とともにディスク装置１０に供給すればよい。これにより、バックアップデータの取得に要する時間や書き込み命令発行によるコマンドオーバヘッドの増加による、ホストコントローラ２０の一時的な処理性能の低下を、極力回避することができる。
【００３０】
また、ディスク装置１０にしてみれば、エラーセクタからのデータ読み出しが成功すれば、外部から入力されたバックアップデータを用いてデータ復旧を行う必要がなくなるので、データ復旧までの時間を短縮することができる。
【００３１】
なお、本発明は、上記実施形態のものに限られず、種々の変形及び応用が可能である。
例えば、図２のフローチャートのステップＳ４において、データの読み出しが失敗した場合に、リトライ回数を判定せずにそのままエラーセクタのセクタ番号を予備セクタに割り当てる処理（ステップＳ１０）に移行してもよい。
【００３２】
ディスクコントローラ１１及びホストコントローラ２０によって実行されるプログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＭＯ（Magneto Optical disc）などのコンピュータ読み取り可能な記録媒体に格納して配布され、インストールされるようになっていてもよい。また、インターネット等を介して、プログラムをダウンロードし、インストールされるようになっていてもよい。
【符号の説明】
【００３３】
１              ディスクシステム
１０            ディスク装置
１１            ディスクコントローラ
１２            ディスク部
２０            ホストコントローラ
【図１】
2010287285.tif 000003
【図２】
2010287285.tif 000004