(57)【特許請求の範囲】
【請求項１】
ディスクへのデータの書込み及び前記ディスクからのデータの読み出しを行なうディスク装置におけるデータ保護方法であって、
ディスク装置の起動時に、該ディスク装置の前回の電源遮断状態情報を調べ、電源遮断状態が正常でなかった場合はディスク上に割当てられているバックアップ領域に書き込まれているデータを該ディスク上に割当てられているデータ書込み領域に書込み、電源遮断状態が正常であった場合は、更に、プログラムの前回の終了状態情報を調べ、プログラムが正常に終了していなかった場合は前記バックアップ領域に書き込まれているデータを前記データ書込み領域に書込み、
該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行により該本体装置から該ディスク装置に転送されるデータを、前記データ書込み領域に書込み、前記データの書込みが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込み、前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは電源遮断状態情報若しくはプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを禁止する、
ことを特徴とするディスク装置におけるデータ保護方法。
【請求項２】
ディスクへのデータの書込み及びディスクからのデータの読み出しを行なうディスク装置において、
ディスクへのデータ書込み／読出し手段と、
前記データ書込み／読出し手段を制御してディスクへのデータの書込み及びディスクからのデータの読出し制御を行なうディスクドライバと、
ディスク装置の電源遮断状態を判定するための電源遮断状態情報を格納する第１の格納手段と、
前記プログラムの終了状態を判定するためのプログラム終了状態情報を格納する第２の格納手段と、
を備え、
前記ディスクドライバは、
ディスク装置の起動時に、前記第１の格納手段に格納されている電源遮断状態情報および第２の格納手段に格納されているプログラム終了状態情報を調べ、前回の電源遮断状態が正常でなかった場合またはプログラムが前回正常に終了していなかった場合はディスク上に割当てられているバックアップ領域に書き込まれているデータを自動的に該ディスク上に割当てられているデータ書込み領域に書き込むように前記データ書込み／読出し手段を制御し、
該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行時に該本体装置からディスク装置に送信される書込み指示を受信して前記プログラムの実行により転送されるデータを前記データ書込み領域に書込み、前記プログラムが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むように前記データ書込み／読出し手段を制御し、
前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは前記第１の格納手段に格納されている電源遮断状態情報若しくは第２の格納手段に格納されているプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを行わないように前記データ書込み／読出し手段を制御する、
ことを特徴とするディスク装置。
【請求項３】
ディスクへのデータの書込み及びディスクからのデータの読み出しを行なうディスク装置において、
ディスクへのデータ書込み／読出し手段と、
前記データ書込み／読出し手段を制御してディスクへのデータの書込み及びディスクからのデータの読出し制御を行なうディスクドライバと、
ディスク装置の電源遮断状態を判定するための電源遮断状態情報を格納する第１の格納手段と、
前記プログラムの終了状態を判定するためのプログラム終了状態情報を格納する第２の格納手段と、
警告出力手段と、
を備え、
前記ディスクドライバは、
ディスク装置の起動時に、前記第１の格納手段に格納されている電源遮断状態情報および第２の格納手段に格納されているプログラム終了状態情報を調べ、前回の電源遮断状態が正常でなかった場合またはプログラムが前回正常に終了していなかった場合に警告を出力するように前記警告出力手段を制御し、
手動操作に基づいてディスク上に割当てられているバックアップ領域に書き込まれているデータを該ディスク上に割当てられているデータ書込み領域に書き込むように前記データ書込み／読出し手段を制御し、
該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行時に該本体装置からディスク装置に送信される書込み指示を受信して前記プログラムの実行により転送されるデータを前記データ書込み領域に書込み、前記プログラムが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むように前記データ書込み／読出し手段を制御し、
前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは前記第１の格納手段に格納されている電源遮断状態情報若しくは第２の格納手段に格納されているプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを行わないように前記データ書込み／読出し手段を制御する、
ことを特徴とするディスク装置。
【請求項４】
前記ディスクドライバは、前記データの前記データ書込み領域への書込みの際に、該データ書込み領域上の書込み位置情報をディスクに割当てられているログ領域に書込み、前記バックアップ領域へのデータの書込みの際は前記書込み位置情報に基づいて前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むように前記データ書込み／読出し手段を制御することを特徴とする請求項２または３に記載のディスク装置。
【請求項５】
前記ディスクドライバは、前記バックアップ領域に書き込まれているデータを前記データ書込み領域に書き込む際には、前記データの前記データ書込み領域への書込み時にディスクに割当てられているログ領域に書込まれた前記データ書込み領域上の書込み位置情報および前記バックアップ領域上の書込位置情報に基づいて前記バックアップ領域に書込まれたデータを前記データ書込領域に書込むことを特徴とする請求項２または３に記載のディスク装置。
【請求項６】
ディスク装置のコンピュータに、
ディスク装置の起動時に、該ディスク装置の前回の電源遮断状態情報を調べ、電源遮断状態が正常でなかった場合はディスク上に割当てられているバックアップ領域に書き込まれているデータを該ディスク上に割当てられているデータ書込み領域に書込むステップ、
電源遮断状態が正常であった場合は、更に、プログラムの前回の終了状態情報を調べ、プログラムが正常に終了していなかった場合は前記バックアップ領域に書き込まれているデータを前記データ書込み領域に書込むステップ、
該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行により該本体装置から該ディスク装置に転送されるデータを前記データ書込み領域に書込むステップ、
前記データの書込みが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むステップ、
前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは電源遮断状態情報若しくはプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを禁止するステップ、
を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はディスク装置の書込みデータ保護技術に関し、特にディスク装置にデータを書込む際に、プログラムのバグ（bug）により生じ得るデータの誤書込みによる書込み済みデータの保護、およびディスク装置の電源オンオフが正常になされなかった場合の書込み済みデータの保護技術に関する。
【０００２】
【従来の技術】
ディスク装置へのアクセスの高速化と障害防止対策を兼ね備えた技術としてＲＡＩＤ（Redundant Arrays of Independent(Inexpensive) Disks）がある。
ＲＡＩＤはデータを分割して複数のディスクに格納し、高速アクセスと高信頼性を実現する技術であり、分割格納と障害対策の方式の違いによって幾つかのレベルに分類されており、レベル（現在は、ＲＡＩＤ０〜ＲＡＩＤ５の６つに分類されている）によってディスク容量の使用効率やデータアクセスの効率などが異なっている。
【０００３】
例えば、ＲＡＩＤ１ではディスクの二重化（ミラーリング）を行なう。すなわち、図７（ａ），（ｂ）に示すように全く同じ内容のデータを２台（２台以上でもよい）のディスク４４−１，４４−２に書込む。これにより、あるディスクが故障しても正常な方のディスクを用いて処理を実行できる。
なお、ＲＡＩＤ１には図７（ａ）に示すようにディスクドライバ４３などのソフトウエアによる処理で２重化を行なうソフトウエアＲＡＩＤと、図７（ｂ）に示すようにコントローラ４３’などのハードウエアを利用して２重化を行なうハードウエアＲＡＩＤがある。
【０００４】
図７（ａ）のディスク装置４０ではＯＳ（Operating System）やアプリケーションプログラム４２からのリクエストをもとにディスクドライバ４３が同一データをディスク４４−１，４４−２に同時に書込んで２重化を行なう。また、図７（ｂ）のディスク装置４０’ではホストコンピュータ４１からのリクエストやコマンドを受取ったコントローラ４３’が同一データをディスク４４’−１，４４’−２に同時に書込んで２重化を行なう。
【０００５】
ＲＡＩＤ１ではアプリケーションプログラムやホスト等からのリクエストやコマンドに対応する処理が終了した時には２台のディスクに書込まれているデータは、誤書込みがない限り同一となる。
【０００６】
【発明が解決しようとする課題】
ＲＡＩＤ１では、ディスクにハードウエア上の故障が生じた場合に重要なデータを保護できるが、１回のリクエストで２台のディスクに同じデータを書込むので、プログラムの不具合（例えば、プログラムバグによる暴走）によるデータの異常書込みがあった場合には２台のディスクに同じように異常データを書込んでしまうので、書込まれた部分のデータが駄目（フォーマットを無視した異常データの書込みにより、異常データの書込まれたファイルについてデータの読み取りが不能になる等）になってしまうという問題点があった。
例えば、ディスク装置が正常で、且つプログラムが正常に動作している場合には、図８（ａ）に示すようにディスク上に確保されたディスク４４−１（４４’−１），４４−２（４４’−２）のファイル領域のうちの当該データに対応するファイルに正常なデータがそれぞれ書込まれる。一方、プログラムにバグがあったような場合には、図８（ｂ）に示すようにディスク４４−１（４４’−１），４４−２（４４’−２）には異常なデータがそれぞれ書込まれてしまう。従って、次の機会にアプリケーションプログラムによるファイルへのアクセス（読み出しリクエスト）を行なったとき、データをフォーマット通り読み出すことができない（読み出されたデータはアプリケーション側にとって無意味な記号列となる）。
【０００７】
また、ＲＡＩＤ１ではディスク装置が２台必要となるのでコストがかさむという不都合もあった。
【０００８】
また、ディスク装置の電源異常等による電源遮断の際にはデータの書込が正常処理されないままに中断するので、後で読取りエラーが生じることがあった。
【０００９】
本発明は、上記問題点および不都合に鑑みてなされたものであり、ディスクの故障やハード的な書込みエラー等のハードウエア的な異常が生じた場合にディスクに書込まれたデータを保護するＲＡＩＤのような方式とは別に、ディスクへのデータの書込みタイミングをずらすことによってプログラムのバグよって生じるデータの誤書込やディスク装置の異常電源遮断等によって生じるデータ誤書込みからデータを保護し得る、ディスク装置におけるデータ保護方法、ディスク装置、およびプログラムを記録したコンピュータに読み取り可能な記録媒体の提供を目的とする。
【００１０】
【課題を解決するための手段】
上記課題を解決するために、請求項1に記載のディスク装置におけるデータ保護方法は、ディスクへのデータの書込み及び前記ディスクからのデータの読み出しを行なうディスク装置におけるデータ保護方法であって、ディスク装置の起動時に、該ディスク装置の前回の電源遮断状態情報を調べ、電源遮断状態が正常でなかった場合はディスク上に割当てられているバックアップ領域に書き込まれているデータを該ディスク上に割当てられているデータ書込み領域に書込み、電源遮断状態が正常であった場合は、更に、プログラムの前回の終了状態情報を調べ、プログラムが正常に終了していなかった場合は前記バックアップ領域に書き込まれているデータを前記データ書込み領域に書込み、該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行により該本体装置から該ディスク装置に転送されるデータを、前記データ書込み領域に書込み、前記データの書込みが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込み、前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは電源遮断状態情報若しくはプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを禁止する、
ことを特徴とする。
【００１１】
また、請求項２に記載の発明のディスク装置は、ディスクへのデータの書込み及びディスクからのデータの読み出しを行なうディスク装置において、ディスクへのデータ書込み／読出し手段と、前記データ書込み／読出し手段を制御してディスクへのデータの書込み及びディスクからのデータの読出し制御を行なうディスクドライバと、ディスク装置の電源遮断状態を判定するための電源遮断状態情報を格納する第１の格納手段と、前記プログラムの終了状態を判定するためのプログラム終了状態情報を格納する第２の格納手段と、
を備え、前記ディスクドライバは、ディスク装置の起動時に、前記第１の格納手段に格納されている電源遮断状態情報および第２の格納手段に格納されているプログラム終了状態情報を調べ、前回の電源遮断状態が正常でなかった場合またはプログラムが前回正常に終了していなかった場合はディスク上に割当てられているバックアップ領域に書き込まれているデータを自動的に該ディスク上に割当てられているデータ書込み領域に書き込むように前記データ書込み／読出し手段を制御し、該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行時に該本体装置からディスク装置に送信される書込み指示を受信して前記プログラムの実行により転送されるデータを前記データ書込み領域に書込み、前記プログラムが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むように前記データ書込み／読出し手段を制御し、前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは前記第１の格納手段に格納されている電源遮断状態情報若しくは第２の格納手段に格納されているプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを行わないように前記データ書込み／読出し手段を制御する、ことを特徴とする。
【００１２】
また、請求項３に記載のディスク装置は、ディスクへのデータの書込み及びディスクからのデータの読み出しを行なうディスク装置において、ディスクへのデータ書込み／読出し手段と、前記データ書込み／読出し手段を制御してディスクへのデータの書込み及びディスクからのデータの読出し制御を行なうディスクドライバと、ディスク装置の電源遮断状態を判定するための電源遮断状態情報を格納する第１の格納手段と、前記プログラムの終了状態を判定するためのプログラム終了状態情報を格納する第２の格納手段と、警告出力手段と、を備え、前記ディスクドライバは、ディスク装置の起動時に、前記第１の格納手段に格納されている電源遮断状態情報および第２の格納手段に格納されているプログラム終了状態情報を調べ、前回の電源遮断状態が正常でなかった場合またはプログラムが前回正常に終了していなかった場合に警告を出力するように前記警告出力手段を制御し、手動操作に基づいてディスク上に割当てられているバックアップ領域に書き込まれているデータを該ディスク上に割当てられているデータ書込み領域に書き込むように前記データ書込み／読出し手段を制御し、該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行時に該本体装置からディスク装置に送信される書込み指示を受信して前記プログラムの実行により転送されるデータを前記データ書込み領域に書込み、前記プログラムが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むように前記データ書込み／読出し手段を制御し、前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは前記第１の格納手段に格納されている電源遮断状態情報若しくは第２の格納手段に格納されているプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを行わないように前記データ書込み／読出し手段を制御する、ことを特徴とする。
【００１３】
また、請求項４に記載の発明は請求項２または３に記載の発明のディスク装置において、前記ディスクドライバは、前記データの前記データ書込み領域への書込みの際に、該データ書込み領域上の書込み位置情報をディスクに割当てられているログ領域に書込み、前記バックアップ領域へのデータの書込みの際は前記書込み位置情報に基づいて前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むように前記データ書込み／読出し手段を制御することを特徴とする。
【００１４】
また、請求項５に記載の発明は請求項２または３に記載の発明のディスク装置において、前記ディスクドライバは、前記バックアップ領域に書き込まれているデータを前記データ書込み領域に書き込む際には、前記データの前記データ書込み領域への書込み時にディスクに割当てられているログ領域に書込まれた前記データ書込み領域上の書込み位置情報および前記バックアップ領域上の書込位置情報に基づいて前記バックアップ領域に書込まれたデータを前記データ書込領域に書込むことを特徴とする。
【００１５】
また、請求項６に記載の発明のプログラムを記録したコンピュータ読み取り可能な記録媒体は、ディスク装置のコンピュータに、ディスク装置の起動時に、該ディスク装置の前回の電源遮断状態情報を調べ、電源遮断状態が正常でなかった場合はディスク上に割当てられているバックアップ領域に書き込まれているデータを該ディスク上に割当てられているデータ書込み領域に書込むステップ、電源遮断状態が正常であった場合は、更に、プログラムの前回の終了状態情報を調べ、プログラムが正常に終了していなかった場合は前記バックアップ領域に書き込まれているデータを前記データ書込み領域に書込むステップ、
該ディスク装置の起動後に、本体装置側コンピュータによるプログラムの実行により該本体装置から該ディスク装置に転送されるデータを前記データ書込み領域に書込むステップ、前記データの書込みが正常に終了したときに、前記データ書込み領域に書込まれたデータを前記バックアップ領域に書込むステップ、前記データ書き込み領域へのデータ書込み時に電源遮断若しくはプログラム異常等の障害が発生したときは電源遮断状態情報若しくはプログラム終了状態情報を異常を意味する情報に変更すると共に前記バックアップ領域へのデータの書込みを禁止するステップ、を実行させるためのプログラムを記録していることを特徴とする。
【００２４】
【発明の実施の形態】
図１は、本発明のデータ保護方法を適用したディスク装置の一実施例の主要部の構成を示すブロック図であり、１台のディスクを用いる場合の例である。また、図１で、（ａ）はアプリケーションプログラムの通常動作中のディスクへのアクセス状態を示し、（ｂ）はアプリケーションプログラムの終了時または電源オフ（或いは電源オン）時のディスクへのアクセス状態を示す図である。
【００２５】
図１で、ディスク装置１００はディスクドライバ１と１台のディスク２を備えている。
ディスク２は制御プログラムやアプリケーションプログラムおよびユティリティプログラム等を格納したり、プログラムの実行時に中間値等を格納したりするシステム領域２１と、データファイル領域が確保されるデータ書込み領域２２，バックアップデータを書込むバックアップ領域２３およびログ領域２４を有している。これら領域２１〜２４はディスクの物理的連続領域をメーカー側で予め分割して出荷するか、或いはディスクのフォーマット時に割り付けられる。
なお、実施例ではシステム領域２１にアプリケーションプログラムを格納したが、アプリケーションプログラムをデータファイルとしてデータ書込み領域２２に書込むようにしてもよい。
【００２６】
また、バックアップ領域２３およびログ領域２４はアプリケーションプログラムではアクセス（書込み／読み出し）ができない。なお、所定の条件下でアクセスができるようにしてもよい。
【００２７】
図２はログ領域の一実施例の構造を示す構成図であり、（ａ）はログ領域の実施例、（ｂ）は終了状態フラグ欄の実施例を示しているが、この例に限定されない。
【００２８】
図２（ａ）で、ログ領域２４はプログラム別ログ情報ブロック２４０−１，２４０−２，２４０−３，・・，２４０−ｎを有している。また、プログラム別ログ情報ブロック２４０−１，２４０−２，２４０−３，・・，２４０−ｎは図２（ｂ）に示すようにそれぞれそのアプリケーションプログラムのＩＤを格納するアプリケーションＩＤ欄２４１、当該アプリケーションプログラムの実行によって書込まれたデータのデータ書込領域１２のデータ書込み開始アドレス記入欄２４２および使用セクター数記入欄２４３、バックアップ領域１３のバックアップデータ書込み開始アドレス記入欄２４４および使用セクター数記入欄２４５、プログラム終了状態フラグ欄２４６およびディスク電源遮断状態フラグ欄２４７を有している。
【００２９】
図２（ｂ）で、プログラム終了状態フラグ欄２４６にはプログラムが正常に終了したか否かを示すプログラム終了状態フラグを格納する（実施例では正常終了時＝オフ（フラグ値＝０）），異常終了時＝オン（フラグ値＝１））。また、電源遮断状態フラグ欄２４７には、ディスク装置１００の電源スイッチの遮断がディスク装置１００の正常終了動作によってなされたか否かを示す電源遮断状態フラグを格納する（実施例では正常時＝オフ（フラグ＝０），異常時＝オン（フラグ１））。例えば、後述するようにアプリケーションプログラムが正常終了した場合にプログラム終了状態フラグをオフ（＝０）とし、終了時にプログラム終了状態フラグを調べ、オフでない場合には（異常終了）データ書込み領域２２に書込まれたデータのバックアップ領域２３への書込みを行なわないようにできる。これにより、ディスク装置１００の起動時に（或いは別プログラムを用いて）プログラム終了状態フラグや電源遮断状態フラグを調べて、異常終了の場合にバックアップ領域２３のデータをデータ書込み領域２２に書込むデータ回復処理を行なうことができる。
【００３０】
また、プログラムの書込動作中（或いは書込正常終了後）に異常電源遮断が生じると書込領域２２のデータが正常に書込まれない（或いは書込まれたデータが壊される）ので、異常電源遮断が生じた場合に前回バックアップ領域２３に書込まれたデータ（バックアップデータ）を保護するために、ディスク起動時には電源遮断状態フラグを前回の状態に保持し、プログラムが正常に終了した場合に（この場合は、異常電源遮断がないので）電源遮断状態フラグをオフにする。
【００３１】
これにより、ディスク装置１００の起動時に電源遮断フラグを調べ、異常電源フラグがオンの場合には前回のディスク動作でディスクが異常終了したことがわかるので、アプリケーション起動にプログラムの実行に先立ってバックアップ領域２３のデータをデータ書込領域に書込むデータ回復処理を行なうことができる。
【００３２】
図１で、ディスクドライバ１はアプリケーションプログラムからのリクエストがあると図示しない読み出し／書き込み機構（ヘッドおよびシーク機構）によりデータの書込みまたは読み出しを行なう。
【００３３】
ディスクドライバ１は、あるアプリケーションプログラムの動作が開始されるとプログラム識別情報とデータ書込み開始アドレスをディスク２のログ領域２４に書込むと共に終了状態フラグ２４４の初期設定（本実施例では全てオフ（＝０）に設定しているがこれに限定されない）を行なう。
また、そのプログラムの通常動作中はディスク２のデータ書込み領域２２に確保された対応のファイル領域にデータを書込むと共にその時点でのセクター数をカウントする。
また、そのアプリケーションプログラムが正常に終了した場合、またはディスク装置１００の電源が遮断された場合（人為的またはプログラム的な電源オフおよびディスク装置１００に物理的外力が加えられた場合の衝撃等に対する保護動作による電源異常遮断の場合を含む）には、終了状態フラグ２４４の対応のフラグ値をオン（＝１）にして保持していたデータ書込み開始アドレスおよびセクター数のカウント値（以下、書込み位置情報）をログ領域２４に書込む。
【００３４】
また、アプリケーションプログラムが異常終了した場合にはプログラム終了状態フラグは設定値（実施例ではオフ）のままとなる。
【００３５】
次に、終了状態フラグ２４４を調べ、プログラム終了状態フラグが正常終了（実施例ではフラグ値＝１）の場合には書込み位置情報をログ領域２４から読み出して、それを基にディスク２のデータ書込み領域２２に書込まれたデータを読み出してバックアップ領域２３に書込む。また、プログラム終了状態フラグ欄２４６の値がプログラムの異常終了（実施例ではフラグ値＝０）を意味する場合にはデータ書込み領域２２に書込まれたデータのバックアップ領域２３への書込は行なわない。
【００３６】
なお、実施例ではアプリケーションプログラムが正常に終了した場合、またはディスク装置１００の電源が遮断された場合に終了状態フラグを調べ、プログラム終了状態フラグが正常終了のときにログ領域２４の書込み位置情報によってデータ書込み領域２２に書込まれたデータをバックアップ領域２３に書込んだが、アプリケーションプログラムによるアクセス開始時に、ログ領域２４に書込まれているプログラム識別情報２４１をもとにそのアプリケーションプログラムで前回データ書込み領域２２に書込んだ書込み位置情報を読み出してデータ書込み領域２２に書込まれたデータをバックアップ領域２３に書込むようにしてもよい。
【００３７】
図３はプログラム終了状態によるデータ書込み領域２２とバックアップ領域２３の書込み内容の説明図である。
図３で、ディスク装置１００のハードウエアが正常に動作し、且つアプリケーションプログラムが正常に動作している場合には、（ａ）に示すように正常なデータがデータ書込み領域２２の当該データに対応するファイルに書込まれ、処理が終了するか電源がオフになると、（ａ）’に示すようにデータ書込み領域２２に書込まれたデータがバックアップ領域２３に書込まれる。なお、データ書込み領域２２への書込み時には前述したように書込み位置情報がログ領域２４に書込まれるので、バックアップ領域２３への書込み時にはログ領域２４に書込まれた書込み位置情報を用いてデータ書込み領域２２からデータを取り出してバックアップ領域２３に書込むことができる。
【００３８】
また、プログラムにバグがあったような場合には、プログラムエラーが発生してプログラムが異常動作し、（ｂ）に示すように異常データがデータ書込み領域２２に書込まれる場合がある。また、プログラムが異常動作すると処理が中断される。さらに、プログラム終了状態フラグが正常終了を意味しないので処理が終了したにも拘らずデータ書込み領域２２に書込まれた異常データはバックアップ領域２３に書込まれない。即ち、前回のバックアップデータがそのままバックアップ領域２３に残っている。
【００３９】
プログラムの異常終了や電源異常による電源スイッチの遮断の場合に、図４に示すようにディスク装置１００側（すなわち，図１の構成の場合はディスクドライバ１、図６の構成の場合はコントローラ４）で、自動的に、バックアップ領域２３に記憶されている前回のデータをデータ書込み領域２２に書込んでデータの回復を行なうことができる。
また、使用者がコンピュータ装置側でデータ回復プログラムを動作させてバックアップ領域２３に記憶されている前回のデータをデータ書込み領域２２に書込んでデータの回復を行なうように構成することもできる。
【００４０】
上述したように、本発明ではデータの二重化を同時ではなくて時間差を設けて実行することによりバグのあるプログラムがあった場合に生じ得る異常データの二重書込みを防止することができる。また、バックアップ領域に格納してあったデータによるデータ回復をディスク装置側で自動的に行なうようにすることもできる。
【００４１】
図４は、本発明のデータ保護方法を適用したディスク装置のディスクドライバ（図６の構成の場合はコントローラまたはディスクドライバ）の動作例を示すフローチャートである。
【００４２】
ディスク装置１００が起動されると、まず、電源遮断状態フラグを調べ、電源遮断状態フラグがオン（＝１）の場合には前回電源異常によりデータが正常に書込まれなかったものとしてＳ１５に遷移する（Ｓ１）。
次に、プログラム終了状態フラグを調べ、プログラム終了状態フラグがオン（＝１）の場合には前回プログラム異常によりデータが正常に書込まれなかったものとしＳ１４に遷移する（Ｓ２）。
【００４３】
上記ステップＳ１，Ｓ２で電源遮断状態フラグおよびプログラム終了フラグがいずれもオンの場合にはコンピュータ装置本体側では、アプリケーションプログラムによる処理が実行されるが、ディスク装置１００はその間コンピュータ装置本体からのリクエスト待ちを行ない、コンピュータ装置本体（すなわち、アプリケーションプログラム）からのリクエスト（またはコマンド）があるか否かを調べ（Ｓ３）、リクエストがあるとＳ４に遷移する（Ｓ３）。
【００４４】
リクエスト後、ディスク装置１００に電源異常が生じるとＳ１３に遷移する（Ｓ４）。
また、アプリケーションプログラムに異常が生じるとＳ１２に遷移する（Ｓ５）。
また、アプリケーションプログラムが終了（正常終了）するとＳ９に遷移する（Ｓ６）。
書込リクエストがあると、転送されてきたデータをデータ書込領域２２の所定のファイルにデータを書込み（Ｓ７）、次いで、データ書込み位置情報等をバッファに記憶または保持し（Ｓ８）、Ｓ３に戻る。
【００４５】
上記ステップＳ６で、アプリケーションプログラムが終了した場合には、ログ領域２４に書込み位置情報等の情報を書込むと共に（Ｓ９）、書込み位置情報を基にデータ書込み領域２２に今回書込んだ情報を取り出して、バックアップ領域２３の対応する位置に書込み（Ｓ１０）、プログラム終了状態フラグおよび電源遮断状態フラグをオフ（＝０）にして動作を終了する（Ｓ１１）。
【００４６】
また、上記ステップＳ５でアプリケーションプログラムに異常が生じた場合には、プログラム終了状態フラグをオンにして動作を終了する（Ｓ１２）。
また、上記ステップＳ４でディスク装置１００に電源異常が生じた場合には電源遮断状態フラグをオンにし、電源スイッチをオフとして電源を遮断する（Ｓ１３）。
【００４７】
また、上記ステップＳ２でプログラム終了状態フラグがオンの場合には、プログラム終了状態フラグをオフにしてＳ１６に遷移する（Ｓ１４）。
また、上記ステップＳ１で電源遮断状態フラグがオンの場合には、電源遮断状態フラグをオフにし（Ｓ１５）、図５に示すようなデータ回復処理を行なって動作を終了する（Ｓ１６）。
【００４８】
上記動作中に電源異常またはプログラム異常があると電源スイッチは自動的または手動により強制的に遮断（オフ）される。この場合、上記ステップＳ４，ステップＳ１３またはステップＳ５，Ｓ１２の動作はディスク装置１００に備えられた補助電源（回復処理用補助電源：図示せず）を用いて行なわれる。
【００４９】
図５は、図４のステップＳ１６の詳細フローチャートであり、ディスクドライバ（図６の構成の場合はコントローラまたはディスクドライバ）によるデータ回復処理の動作例を示すフローチャートである。
【００５０】
図４のステップＳ１またはステップＳ２で、前回ディスク装置１００の動作中に電源異常またはプログラム異常があった場合には、ディスクドライバはログ領域１３から当該アプリケーションプログラムのＩＤを基に対応するログ情報ブロックを読み出す（Ｓ１６−１）。
次に、バックアップデータ書込み開始アドレス記入欄２４４および使用セクター数記入欄２４５からバックアップデータ書込み開始アドレスおよび使用セクター数を取得する（Ｓ１６−２）。
バックアップデータ書込み開始アドレスおよび使用セクター数を基に、バックアップ領域２３からデータを読み出す（Ｓ１６−３）。
次に、読み出したデータをデータ書込領域２２の対応アドレス（セクタ）に書込む（Ｓ１６−４）。
上記ステップＳ１６−３，Ｓ１６−４をセクタ数分のデータが書込まれるまで繰り返して処理を終了する。（Ｓ１６−５）。
【００５１】
なお、ステップＳ１６でデータ自動回復を行なう場合にはその旨の表示或いは警告を出力して使用者に確認を促し、確認操作後にディスク装置側でデータの回復を行なうようにしてもよい。
また、ステップＳ１６でディスク装置１００側でデータ自動回復を行なうのではなくディスク装置１００側ではその旨の表示或いは警告を行なった後、ステップＳ５への遷移を行なうことなく処理を一旦終了し、使用者の指示の下にコンピュータ装置側でデータ回復プログラムを実行するようにしてもよい。
【００５２】
図６は、本発明のディスク装置の書込みデータ保護方法を適用したディスク装置の一実施例の主要部の構成を示すブロック図であり、ＲＡＩＤ１により複数２台（または２×ｎ個）のディスクを用いてデータを二重化する場合の例である。また、図６で、（ａ）はアプリケーションプログラムの通常動作中のディスクへのアクセス状態を示し、（ｂ）はアプリケーションプログラムの終了時または電源オフ（或いは電源オン）時のディスクへのアクセス状態を示す図である。
【００５３】
図１で、ディスク装置１００’はコントローラ（またはディスクドライバ）４と２台のディスク２−１，２−２を備えている。
ディスク２−１，２−２はデータファイル領域が確保されるデータ書込み領域２２−１，２２−２とバックアップデータを書込むバックアップ領域２３−１，２３−２およびログ領域２４−１，２４−２を有している。これら領域２２〜２４はディスクの物理的連続領域をメーカー側で予め分割して集荷するか、或いはディスクのフォーマット時に割り付けられる。
なお、実施例では制御プログラムやアプリケーションプログラムおよびユティリティプログラム等はディスク装置１００’に図示しない回線等を介して接続するホストコンピュータ３側で持つように構成したが、アプリケーションプログラムをデータファイルとしてデータ書込み領域２２−１，２２−２に書込むようにしてもよい。
【００５４】
また、バックアップ領域２３−１，２３−２およびログ領域２４−１，２４−２はアプリケーションプログラムでは書込み／読み出しができない。なお、所定条件下でアクセスできるようにしてもよい。
また、ログ領域２４−１，２４−２は図２に示したログ領域２４の構成と同様でよい。
また、コントローラ（または、デイスクドライバ）４の動作は前述した動作（図４または図５のフローチャートに示した動作）と同様である。
【００５５】
図６の例では、ＲＡＩＤ１によりディスク２−１および２−２に同一タイミングで同じデータが書込まれデータが二重化されるのでディスク装置のハードウエア上の誤動作や欠陥に伴うデータ書込みエラーを防止できる。
また、本発明によるデータ保護方法によりデータ書込み領域へのデータの書込みとバックアップデータ領域へは同一データが書込まれるが、図４のフローチャートに示したと同様の動作により書込みのタイミングがずらされているので、ＲＡＩＤ１でアプリケーションプログラムの誤動作によって異常データがディスク２−１，２−２に同時に書込まれても、バックアップ領域２４−１，２４−２には異常データが書込まれないので、アプリケーションプログラムの誤動作があってもデータ回復を行なうことができる。
【００５６】
【発明の効果】
上記説明したように、本発明によれば、書込み領域への書込み（もしくはプログラム）が正常に終了した後にバックアップ領域に書き込み領域に書き込んだデータをコピーするので、少なくとも書込み領域への書込み時間分バックアップ領域への書込みタイミングをずらしてデータを二重化（ミラーリング）することとなり、プログラムのバグによるデータの誤書込みや電源異常等による電源スイッチの強制遮断によるデータ書込中断状態等からディスクに書込まれているデータを保護できる。また、１台のディスクでミラーリングすることもできるので、高信頼性でＲＡＩＤ１より廉価なディスクシステムを構築できる。また、ＲＡＩＤ１と併せてディスクシステムを構築することもできるので、この場合、ハードウエア上の故障や誤動作に対するデータ保護に加え、プログラムを原因とするデータの誤書込みに対するデータ保護を行なえるので、従来のＲＡＩＤ１よりはるかに信頼性の高いディスクシステムを実現し得る。
【００５７】
また、ディスクドライバでバックアップ領域へのアクセスを制限できるのでセキュリティに利用できる。
【図面の簡単な説明】
【図１】本発明のデータ保護方法を適用したディスク装置の一実施例の主要部の構成を示すブロック図である。
【図２】ログ領域の一実施例の構造を示す構成図である。
【図３】プログラム終了状態によるデータ書込み領域とバックアップ領域の書込み内容の説明図である。
【図４】本発明のデータ保護方法を適用したディスク装置のディスクドライバ（またはコントローラ）の動作例を示すフローチャートである。
【図５】データ自動回復時のディスクドライバ（またはコントローラ）の動作例を示すフローチャートである。
【図６】ＲＡＩＤ１および本発明のデータ保護方法を適用したディスク装置の一実施例の主要部の構成を示すブロック図である。
【図７】ＲＡＩＤ１によるディスクの二重化（ミラーリング）の説明図である。
【図８】プログラムにバグがあった場合の従来のＲＡＩＤ１によるデータの書込み状態の説明図である。
【符号の説明】
１  ディスクドライバ（データ書込み手段，データ遅延書込み手段，プログラム終了判定手段，バックアップデータ書込み手段，ログ情報書込み手段、データ回復手段）
２，２−１，２−２  ディスク
３  ホストコンピュータ（コンピュータ）
４  コントローラ（データ書込み手段，データ遅延書込み手段，プログラム終了判定手段，バックアップデータ書込み手段，ログ情報書込み手段）
２２  データ書込み領域（第１のデータ書込み領域，第１の情報記録領域）
２３  バックアップ領域（第２のデータ書込み領域，第２の情報記録領域、データ回復手段）
２４  ログ領域（第３のデータ書込み領域，第３の情報記録領域、データ回復手段）
１００，１００’  ディスク装置
２４２  データ書込み開始アドレス（データ書込み位置情報）
２４３  使用セクター数記入欄（データ書込み位置情報）
２４４  終了状態フラグ欄（プログラム終了判定手段）
２４６  プログラム終了状態フラグ欄（プログラム終了判定手段）
【図１】
0004293648.tif 000002
【図２】
0004293648.tif 000003
【図３】
0004293648.tif 000004
【図４】
0004293648.tif 000005
【図５】
0004293648.tif 000006
【図６】
0004293648.tif 000007
【図７】
0004293648.tif 000008
【図８】
0004293648.tif 000009