(57)【要約】【課題】  パフォーマンスの低下を抑えつつ、オフトラックの問題を回避できる磁気ディスク装置を提供する。【解決手段】  ホストによって作成されたファイルシステムに関する情報が記録された磁気ディスク、データを記憶する記憶部、及び前記ホストから書込コマンドを受信すると、当該書込コマンドによってデータの書込先として指定される書込先セクタを特定し、当該特定した書込先セクタに対して、前記磁気ディスクの動径方向に隣接する隣接セクタを特定し、当該特定した隣接セクタを少なくとも含む候補セクタを選択し、当該選択した候補セクタに書き込まれているデータを前記記憶部に退避すべきか否かを、前記ファイルシステムに関する情報を参照して判断し、退避すべきと判断した候補セクタに書き込まれているデータを前記記憶部に退避して、前記特定された書込先セクタへのデータ書込を実行する書込制御部、を備える磁気ディスク装置とする。【選択図】        図３
2006286128.tif 000002
【特許請求の範囲】
【請求項１】
ホストによって作成されたファイルシステムに関する情報が記録された磁気ディスク、
データを記憶する記憶部、及び
前記ホストから書込コマンドを受信すると、当該書込コマンドによってデータの書込先として指定される書込先セクタを特定し、
当該特定した書込先セクタに対して、前記磁気ディスクの動径方向に隣接する隣接セクタを特定し、
当該特定した隣接セクタを少なくとも含む候補セクタを選択し、
当該選択した候補セクタに書き込まれているデータを前記記憶部に退避すべきか否かを、前記ファイルシステムに関する情報を参照して判断し、退避すべきと判断した候補セクタに書き込まれているデータを前記記憶部に退避して、前記特定された書込先セクタへのデータ書込を実行する書込制御部、
を備えることを特徴とする磁気ディスク装置。
【請求項２】
請求項１に記載の磁気ディスク装置において、
前記書込制御部は、前記選択された候補セクタをデータの書込先として指定する書込コマンドを受信しているか否かを判断し、受信していない場合に、前記ファイルシステムに関する情報を参照して、当該候補セクタのデータを退避すべきか否かを判断する
ことを特徴とする磁気ディスク装置。
【請求項３】
請求項１に記載の磁気ディスク装置において、
前記書込制御部は、磁気ヘッドのオフトラック量を測定し、当該測定されたオフトラック量が予め定められた閾値を超えるか否かを判断し、閾値を超える場合に、前記ファイルシステムに関する情報を参照して、前記選択した候補セクタのデータを退避すべきか否かを判断する
ことを特徴とする磁気ディスク装置。
【請求項４】
請求項１に記載の磁気ディスク装置において、
前記書込制御部は、過去において最後に書込コマンド又は読取コマンドのうち少なくとも一方を受信してからの経過時間を測定し、当該経過時間が予め定められた閾値を越える場合に、前記ファイルシステムに関する情報を参照して、前記選択した候補セクタのデータを退避すべきか否かを判断する
ことを特徴とする磁気ディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、磁気ディスク装置におけるデータの書込処理に関する。
【背景技術】
【０００２】
ハードディスクドライブ等の磁気ディスク装置においては、磁気ディスク上のデータの記録密度を上げるために、トラックの間隔を低減させることが益々要求されている。
【０００３】
一方で、磁気ディスク装置は、設置型のパーソナルコンピュータのみならず、携帯型の記憶装置等にも用いられるようになってきている。
【０００４】
このような磁気ディスク装置を用いた携帯型記憶装置等においては、外部から振動や衝撃が加わりやすく、このため、当該振動や衝撃によって磁気ディスク上の磁気ヘッド位置が移動し、本来書き込むべきトラック以外のトラックにデータを上書きしてしまうといった、いわゆるオフトラックライト（Ｏｆｆ−ｔｒａｃｋ  ｗｒｉｔｅ）の問題が生じやすい。
【０００５】
このオフトラックライトの問題を回避するために、従来、例えば、データを書き込む前に、予め書込先のセクタの近傍のセクタに記録されているデータを磁気ディスクから読み出して退避させておき、オフトラックライトが生じた場合には、当該退避させていたデータを当該近傍のセクタに書き込む方法があった（例えば、特許文献１）。
【特許文献１】特開２００４−４７０２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の方法においては、書込処理のたびにデータの退避を行うため、磁気ディスク装置のパフォーマンスが低下するという問題があった。
【０００７】
本発明は、上記課題に鑑みて為されたものであり、パフォーマンスの低下を抑えつつ、オフトラックの問題を回避できる磁気ディスク装置を提供することをその目的の一つとする。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明の一態様に係る磁気ディスク装置は、ホストによって作成されたファイルシステムに関する情報が記録された磁気ディスク、データを記憶する記憶部、及び前記ホストから書込コマンドを受信すると、当該書込コマンドによってデータの書込先として指定される書込先セクタを特定し、当該特定した書込先セクタに対して、前記磁気ディスクの動径方向に隣接する隣接セクタを特定し、当該特定した隣接セクタを少なくとも含む候補セクタを選択し、当該選択した候補セクタに書き込まれているデータを前記記憶部に退避すべきか否かを、前記ファイルシステムに関する情報を参照して判断し、退避すべきと判断した候補セクタに書き込まれているデータを前記記憶部に退避して、前記特定された書込先セクタへのデータ書込を実行する書込制御部、を備えることを特徴とする。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明の一実施の形態に係る磁気ディスク装置について、図面を参照しながら説明する。図１は、本実施形態に係る磁気ディスク装置の主な構成を示すブロック図である。
【００１０】
図１に示すように、この磁気ディスク装置１は、ホストコンピュータＨ（以下、ホストと呼ぶ。）と接続され、当該ホストＨから受信したデータ等が記録される磁気ディスク２と、当該磁気ディスク２の表面に浮上して、当該磁気ディスク２へのデータの書込及び当該磁気ディスク２に書き込まれたデータの読取を行う磁気ヘッド３と、を含んで構成されている。
【００１１】
この磁気ディスク２において、データは、図２に示すように、当該磁気ディスク２の表面に同心円状に配置されるトラック上に記録される。各トラックは、さらに、その円周方向に、データを記録する最小単位の領域であるセクタ（図示せず）に分割される。
【００１２】
この磁気ディスク２には、ホストＨによって作成されるファイルシステムに関する情報が記録されている。このファイルシステムに関する情報は、ホストＨが用いるオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ；以下、ＯＳと呼ぶ）に対応するものであり、ホストＨによって作成される。このファイルシステムに関する情報には、磁気ディスク２上の各セクタに有効なデータが書き込まれているか否かを判断するための情報が含まれる。具体例として、このファイルシステムに関する情報は、例えば、ウィンドウズ（登録商標）、ＵＮＩＸ（登録商標）、ＭａｃＯＳ（登録商標）等のＯＳごとに異なっており、ウィンドウズ（登録商標）であれば例えばＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  Ｔａｂｌｅ）であり、ＭａｃＯＳ（登録商標）であればＨＦＳ（Ｈｉｅｒａｒｃｈｉｃａｌ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）であるなど、有効なデータが書き込まれているセクタ位置を管理する情報として作成されたものである。この情報は、磁気ディスク２上に記録される。
【００１３】
また、図２に示すように、この磁気ディスク２の表面には、各トラックを分割するように放射線状にサーボ情報が記録されている。このサーボ情報は、磁気ディスク２上における磁気ヘッド３の位置を特定するために用いられる。
【００１４】
磁気ヘッド３は、磁界を発生させるコイルや電極等を含み、磁気ディスク２の表面を磁化してデータを書き込む書込ヘッド（図示せず）と、磁気ディスク２に記録されたデータによって形成される磁界に応じた信号を出力する巨大磁気抵抗（Ｇｉａｎｔ  Ｍａｇｎｅｔｏ  Ｒｅｓｉｓｔｉｖｅ）素子等を含み、当該磁気ディスク２に記録されたデータを読み取る読取ヘッド（図示せず）と、を有する。
【００１５】
また、この磁気ディスク装置１は、磁気ディスク２を回転させるためのスピンドルモータ４（Ｓｐｉｎｄｌｅ  Ｍｏｔｏｒ；以下、ＳＰＭと呼ぶ。）と、磁気ヘッド３を磁気ディスク２上で移動させるためのボイスコイルモータ５（Ｖｏｉｃｅ  Ｃｏｉｌ  Ｍｏｔｏｒ；以下、ＶＣＭと呼ぶ。）と、ホストＨとのデータの送受信等を行うハードディスクコントローラ１０（Ｈａｒｄ  Ｄｉｓｋ  Ｃｏｎｔｒｏｌｌｅｒ；以下、ＨＤＣと呼ぶ。）と、データの変調／復調等の信号処理を行うリード（Ｒｅａｄ）／ライト（Ｗｒｉｔｅ）チャネル１１（以下、Ｒ／Ｗチャネルと呼ぶ。）と、信号の増幅処理や磁気ヘッド３への電流の供給処理等を行うＲ／Ｗアンプ１２と、書込処理や読取処理において必要とされる各種のデータの演算処理等を行うマイクロプロセッシングユニット１３（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：以下、ＭＰＵと呼ぶ。）と、ＳＰＭ４とＶＣＭ５とを制御するモータドライバ１４と、ＨＤＣ１０がホストＨから受信したデータ等を保持するバッファ１５と、ＭＰＵ１３が動作する際に用いるプログラム等を保持する不揮発性メモリ１６と、ＭＰＵ１３がその処理の過程において用いるデータを保持するワークメモリ１７と、を有している。
【００１６】
なお、ＭＰＵ１３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等によって実現され、バッファ１５とワークメモリ１７とは、同期ダイナミックランダムアクセスメモリ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やスタティックランダムアクセスメモリ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等によって実現され、不揮発性メモリ１６は、リードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等によって実現される。
【００１７】
ここで、磁気ディスク装置１が行う書込処理の概要について説明する。なお、本実施形態においては、磁気ディスク装置１が行う書込処理と読取処理とのうち、主に書込処理について説明する、
【００１８】
ＨＤＣ１０は、ホストＨから、磁気ディスク２にデータを書き込むよう指示する書込コマンドを受け入れて、当該受け入れた書込コマンドをバッファ１５に保持するともに、磁気ヘッド３の現在位置を特定するようＲ／Ｗチャネル１１に命令する。
【００１９】
ＨＤＣ１０から命令を受け入れたＲ／Ｗチャネル１１は、磁気ヘッド３が磁気ディスク２上に位置している場合には、当該磁気ヘッド３の読取ヘッドにバイアス電流を供給して、当該磁気ディスク２上に記録されているサーボ情報（図２参照）を読み取るようＲ／Ｗアンプ１２に命令する。そして、このＲ／Ｗチャネル１１は、読取ヘッドが磁気ディスク２から読み取ったサーボ情報をＲ／Ｗアンプ１２から受け入れてＨＤＣ１０に出力する。
【００２０】
ＨＤＣ１０は、このＲ／Ｗチャネル１１から受け入れたサーボ情報と、書込コマンドによって書込データの書き込み先として指定される書込先セクタを特定する書込先セクタ特定情報と、をＭＰＵ１３に出力する。
【００２１】
ＭＰＵ１３は、ＨＤＣ１０から受け入れたサーボ情報と書込先セクタ特定情報とに基づいて、磁気ヘッド３を現在位置から書込先セクタ位置に移動させるために必要な当該磁気ヘッド３の移動量を算出し、磁気ヘッド３を当該移動量だけ移動させるようモータドライバ１４に命令する。モータドライバ１４は、ＭＰＵ１３から受け入れた命令に従ってＶＣＭ５を駆動させ、磁気ヘッド３を書込先セクタを含むトラック上に移動させる（オントラック動作）。
【００２２】
一方、ＨＤＣ１０は、バッファ１５に保持していた書込コマンドを読み出してＲ／Ｗチャネル１１に出力する。ＨＤＣ１０から書込コマンドを受け入れたＲ／Ｗチャネル１１は、当該書込コマンドに係る書込データを変調して、当該変調後の書込信号をＲ／Ｗアンプ１２に出力する。
【００２３】
Ｒ／Ｗチャネルから書込信号を受け入れたＲ／Ｗアンプ１２は、当該書込信号を増幅し、当該書込信号に応じた書込電流を、磁気ヘッド３が有する書込ヘッドのコイルに供給する。
【００２４】
この結果、書込ヘッドのコイルに書込信号に応じた磁界が形成され、当該磁界によって磁気ディスク２表面の書込先セクタが磁化されることによって、データの書込が行われる。
【００２５】
次に、磁気ディスク装置１が行う書込処理の具体的内容について説明する。本実施形態においては、ＨＤＣ１０とＭＰＵ１３とが、この書込処理における主な処理を制御する書込制御部として機能する。
【００２６】
図３は、この書込制御部２０が行う主な処理を示す機能ブロック図である。図３に示すように、書込制御部２０は、書込先セクタ特定部２１と、候補セクタ特定部２２と、ファイルシステム読出部２３と、対象セクタ特定部２４と、退避処理部２５と、書込処理部２６と、オフトラック判断部２７と、退避データ書込部２８と、を機能的に含んでいる。
【００２７】
書込先セクタ特定部２１は、ホストＨから書込コマンドを受け入れて、当該書込コマンドによってデータの書込先として指定される磁気ディスク２上のセクタを書込先セクタとして特定する。
【００２８】
具体的に、この書込先セクタ特定部２１は、例えば、図４に示すように、書込コマンドが、磁気ディスク２上に配置されるトラックのうち、トラック番号「Ｎ」を割り当てられたトラック「Ｎ」上であって、サーボ情報「Ｍ」とサーボ情報「Ｍ＋１」とに挟まれた領域において、セクタ番号「Ｓ」が割り当てられたセクタ「Ｓ」を書込先セクタとして指定している場合には、当該トラック番号「Ｎ」とセクタ番号「Ｓ」との組によって当該書込先セクタを特定する。
【００２９】
すなわち、この場合、書込先セクタ特定部２１は、書込先セクタのトラック番号「Ｎ」とセクタ番号「Ｓ」とを互いに関連付けた情報を、当該書込先セクタを特定する書込先セクタ特定情報として生成し、候補セクタ特定部２２に出力する。
【００３０】
また、この書込先セクタ特定部２１は、書込先セクタ特定情報と、書込コマンドによって書込先セクタに書き込むべきデータとして指定される書込データと、を書込処理部２６に出力する。
【００３１】
なお、この書込先セクタ特定部２１は、ホストＨから複数の書込コマンドを受け入れた場合には、当該複数の書込コマンドのうち少なくとも一部をコマンドキュー（ｑｕｅｕｅ）としてバッファ１５に保持する。この場合、書込先セクタ特定部２１は、磁気ディスク装置１における書込処理の進行状況に応じて、バッファ１５に保持したコマンドキューから、書込コマンドを順次読み出して、当該読み出した書込コマンドに係る処理を行う。
【００３２】
候補セクタ特定部２２は、書込先セクタ特定部２１から受け入れた書込先セクタ特定情報に基づいて、後述するデータ退避処理において、データを退避させるか否かの判断の対象となる候補セクタを特定する。
【００３３】
具体的に、この候補セクタ特定部２２は、まず、書込先セクタ特定情報によって特定される書込先セクタに対して、磁気ディスク２の動径方向に隣接するセクタを隣接セクタとして特定する。
【００３４】
すなわち、この候補セクタ特定部２２は、例えば、図４に示す例においては、書込先セクタが含まれるトラック「Ｎ」に対して、磁気ディスク２の動径方向（矢印Ｄの方向）の内周側に隣接するトラック「Ｎ−１」と、外周側に隣接するトラック「Ｎ＋１」と、を隣接トラックとして特定する。
【００３５】
そして、この候補セクタ特定部２２は、この特定した２つの隣接トラックの各々において、書込先セクタに対して、動径方向の内周側と外周側とにそれぞれ隣接する、書込先セクタと同じセクタ番号「Ｓ」が割り当てられているセクタを隣接セクタとして特定する。
【００３６】
次に、この候補セクタ特定部２２は、さらに、この隣接セクタに対して、磁気ディスク２の円周方向（矢印Ｒの方向）に隣接する、セクタ番号「Ｓ−１」が割り当てられているセクタと、セクタ番号「Ｓ＋１」が割り当てられているセクタと、を近傍セクタとして特定する。
【００３７】
このように、候補セクタ特定部２２は、磁気ディスク２上に配置されるセクタのうちから、１つの書込先セクタ（図４において斜線のハッチングが施されたセクタ）について、当該書込先セクタに対し磁気ディスク２の動径方向に隣接する２つの隣接セクタと、当該２つの隣接セクタの各々に対して磁気ディスク２の円周方向に隣接する４つの近傍セクタと、をあわせて、６つの候補セクタ（図４においてメッシュのハッチングが施されたセクタ）として選択する。
【００３８】
そして、この候補セクタ特定部２２は、各候補セクタのトラック番号とセクタ番号とを関連付けた情報を、各候補セクタを特定する候補セクタ特定情報として生成し、対象セクタ特定部２４に出力する。
【００３９】
また、この候補セクタ特定部２２は、ファイルシステム読出部２３に対して、磁気ディスク２に記録されているファイルシステムに関する情報を読み出して対象セクタ特定部２４に出力するよう命令する。
【００４０】
ファイルシステム読出部２３は、候補セクタ特定部２２から受け入れた命令に従い、磁気ヘッド３に対して、磁気ディスク２に記録されているファイルシステムに関する情報（以下、ファイルシステム関連情報と呼ぶ。）を読み出すよう命令し、当該磁気ヘッド３によって読み取られたファイルシステム関連情報を取得する。
【００４１】
具体的に、このファイルシステム読出部２３は、例えば、図５に示すように、磁気ディスク２上に配置された各トラックに割り当てられているトラック番号と、当該各トラック内に配置される各セクタに割り当てられているセクタ番号と、当該トラック番号と当該セクタ番号との組み合わせによって特定される各セクタに記録されているデータが有効か否かを示す参照情報と、を関連付けたデータテーブルをファイルシステム関連情報として磁気ディスク２から読み出し、対象セクタ特定部２４に出力する。
【００４２】
ここで、図５に示すファイルシステム関連情報においては、例えば、磁気ディスク２に記録されているデータと、当該データが記録されている位置と、を関連付けて保持するＦＡＴやＨＦＳ等の記録データ管理情報において、データが書き込まれているセクタについては、「有効」との参照情報が関連付けられる。
【００４３】
また、このファイルシステム関連情報においては、例えば、ホストＨが起動時に読み出すＯＳのプログラムやファイルシステムの管理情報等に係るデータ等の上書きを禁止すべきデータが記録されている管理セクタ（いわゆるブートブロックやＵＮＩＸ（登録商標）におけるスーパーブロック等）については、当該セクタにデータが書き込まれていない場合であっても、「有効」との参照情報を関連付けてもよい。
【００４４】
また、このファイルシステム関連情報においては、上述のブートブロック等のように誤って上書きされると不都合が生じる管理セクタ以外のセクタについては、データが書き込まれていない場合に、「無効」との参照情報が関連付けられる。
【００４５】
対象セクタ特定部２４は、候補セクタ特定部２２から受け入れた候補セクタ特定情報と、ファイルシステム読出部２３から受け入れたファイルシステム関連情報と、を照合し、当該照合結果に基づいて、当該候補セクタ特定情報によって特定される各候補セクタに記録されているデータを退避させるか否かを判断して、退避させる必要があると判断された候補セクタを、対象セクタとして特定する。具体的に、この対象セクタ特定部２４は、例えば、図５に示すファイルシステム関連情報において、図４に示す６つの候補セクタの各々を特定するトラック番号とセクタ番号との組に関連付けられている参照情報を参照して、当該参照情報が「有効」か否かを（すなわち、当該各候補セクタに有効なデータが書き込まれているか否か）を判断する。
【００４６】
そして、例えば、図６に示すように、トラック番号「Ｎ−１」とセクタ番号「Ｓ」又は「Ｓ＋１」との組によって特定される２つの候補セクタについては、図５に示すファイルシステム関連情報において「有効」との参照情報が関連付けられているため、対象セクタ特定部２４は、当該２つの候補セクタに書き込まれているデータは退避すべきものと判断する。
【００４７】
この場合、対象セクタ特定部２４は、候補セクタ特定部２２によって特定された６つの候補セクタのうち、データを退避すべきと判断した２つの候補セクタを、データの退避処理の対象とする対象セクタとして特定する。そして、この対象セクタ特定部２４は、この特定した各対象セクタのトラック番号とセクタ番号とを関連付けた情報を、当該各対象セクタを特定する対象セクタ特定情報として生成し、退避処理部２５に出力する。
【００４８】
一方、例えば、図６に示すように、トラック番号「Ｎ−１」とセクタ番号「Ｓ−１」との組によって特定されるセクタ、及びトラック番号「Ｎ＋１」とセクタ番号「Ｓ−１」、「Ｓ」又は「Ｓ＋１」との組によって特定されるセクタ、については、図５に示すファイルシステム関連情報において「有効」との参照情報が関連付けられておらず、「無効」との参照情報が関連付けられているため、対象セクタ特定部２４は、当該候補セクタに書き込まれているデータは退避する必要がないと判断し、当該候補セクタを対象セクタとして特定しない。
【００４９】
また、この対象セクタ特定部２４は、候補セクタ特定部２２によって特定された候補セクタのいずれも対象セクタとして特定しなかった場合には、その旨を書込処理部２６に通知する。
【００５０】
退避処理部２５は、対象セクタ特定部２４から対象セクタ特定情報を受け入れて、当該対象セクタ特定情報によって特定される対象セクタに書き込まれているデータを、当該対象セクタから読み出して、バッファ１５に退避させる。
【００５１】
具体的に、この退避処理部２５は、例えば、上述のように対象セクタ特定部２４が、図４に示す６つの候補セクタのうちから、トラック番号「Ｎ−１」とセクタ番号「Ｓ」又は「Ｓ＋１」との組によって特定される２つの候補セクタを対象セクタとして特定した場合には、当該特定した対象セクタに係る書込先セクタ（図４に示すトラック「Ｎ」に含まれるセクタ番号「Ｓ」のセクタ）への書込処理が実行される前に、当該２つの対象セクタに書き込まれているデータを読み出して、当該対象セクタを特定する対象セクタ特定情報と関連付けた退避データとしてバッファ１５に保持する。
【００５２】
そして、この退避処理部２５は、対象セクタに書き込まれているデータの退避処理が完了すると、当該対象セクタを特定する対象セクタ特定情報と、当該対象セクタに係る書込先セクタを特定する書込先セクタ特定情報と、を退避データ書込部２８に出力するとともに、当該退避処理が完了した旨を書込処理部２６に通知する。
【００５３】
書込処理部２６は、退避処理部２５又は対象セクタ特定部２４からの通知に基づいて、書込先セクタに対する書込処理を行う。具体的に、この書込処理部２６は、退避処理部２５から退避処理が完了した旨の通知を受け入れ、又は対象セクタ特定部２４からいずれの候補セクタも対象セクタとして特定しなかった旨の通知を受け入れたか否かを判断し、受け入れた場合には、当該通知に係る書込先セクタに書込データを書き込む。
【００５４】
一方、オフトラック判断部２７は、磁気ディスク装置１において、磁気ヘッド３のオフトラックが発生したか否かの判断を行う。具体的に、このオフトラック判断部２７は、例えば、書込処理部２６が書込先セクタへの書込処理を実行している間、磁気ヘッド３からサーボ情報等の位置情報を取得し、当該位置情報に基づいて当該磁気ヘッド３のオフトラック量をモニタリングする。
【００５５】
そして、このオフトラック判断部２７は、測定されるオフトラック量が予め定められたオフトラック閾値を超えるか否かを判断し、オフトラック閾値を超えた場合には、オフトラックが発生したと判断して、その旨と、当該オフトラックが発生したときの書込処理に係る書込セクタ特定情報とを退避データ書込部２８に出力する。
【００５６】
退避データ書込部２８は、オフトラック判断部２７からオフトラックが発生したとの通知を受け入れると、バッファ１５に保持されている退避データのうち、当該オフトラックによって上書きされた可能性がある対象セクタから退避させたデータを、当該対象セクタに書き込む。
【００５７】
具体的に、この退避データ書込部２８は、退避処理部２５から受け入れた、完了した退避処理に係る退避セクタ特定情報と、当該退避処理に係る書込先セクタ特定情報と、を関連付けた情報を退避データ管理情報として保持する。
【００５８】
そして、この退避データ書込部２８は、オフトラック判断部２７からオフトラックの発生通知を受け入れた場合には、退避データ管理情報を参照し、当該退避データ管理情報に含まれる書込先セクタ特定情報のうち、当該通知に係る書込先セクタ特定情報と一致する情報が含まれるか否かを判断する。
【００５９】
この判断の結果、オフトラック判断部２７からの通知に係る書込先セクタ特定情報と一致する書込先セクタ特定情報が退避データ管理情報に含まれていれば、退避データ書込部２８は、当該書込先セクタに関連付けられている対象セクタ特定情報を特定する。
【００６０】
そして、この退避データ書込部２８は、バッファ１５に保持されている退避データのうち、当該特定した対象セクタ特定情報に関連付けられている退避データを読み出して、オフトラック発生通知に係る書込先セクタへの書込処理が完了した後に、当該退避データを、当該対象セクタ特定情報によって特定される対象セクタに書き込む。
【００６１】
なお、この退避データ書込部２８は、オフトラック発生通知に係る書込先セクタ特定情報が退避データ管理情報に含まれていない場合には、退避データの書込処理は行わない。
【００６２】
次に、この書込制御部２０が行う書込処理の流れについて説明する。図７は、この書込制御部２０が行う主な処理の流れを示すフロー図である。
【００６３】
図７に示すように、まず、書込先セクタ特定部２１がホストＨから書込コマンドを受け入れ（Ｓ１００）、当該書込コマンドに係る書込先セクタを特定する書込先セクタ特定情報を候補セクタ特定部２２に出力する。
【００６４】
候補セクタ特定部２２は、書込先セクタ特定部２１から受け入れた書込先セクタ特定情報によって特定される書込先セクタについて、隣接セクタと近傍セクタとを含む候補セクタを特定し（Ｓ１０１）、当該候補セクタを特定する候補セクタ特定情報を対象セクタ特定部２４に出力する。
【００６５】
また、ファイルシステム読出部２３は、磁気ディスク２からファイルシステム関連情報を読み出して（Ｓ１０２）、対象セクタ特定部２４に出力する。
【００６６】
対象セクタ特定部２４は、ファイルシステム読出部２３から受け入れたファイルシステム関連情報を参照して、候補セクタ特定部２２から受け入れた隣接セクタ特定情報によって特定される各候補セクタに有効なデータが記録されているか否かを判断する（Ｓ１０３）。
【００６７】
この処理Ｓ１０３において、候補セクタに有効なデータが記録されていないと判断された場合（処理Ｓ１０３においてＮｏ）には、対象セクタ特定部２４は当該候補セクタに記録されているデータを退避する必要がないと判断して、その旨を書込処理部２６に通知する。
【００６８】
この場合、書込処理部２６は、書込先セクタに書込データを書き込んで（Ｓ１０４）、処理を終了する。
【００６９】
一方、処理Ｓ１０３において、候補セクタに有効なデータが記録されていると判断された場合（処理Ｓ１０３においてＹｅｓ）には、対象セクタ特定部２４は、当該候補セクタに記録されているデータを退避させる必要があると判断し、当該候補セクタを対象セクタとして特定して、当該対象セクタを特定する対象セクタ特定情報を退避処理部２５に出力する。
【００７０】
対象セクタ特定情報を受け入れた退避処理部２５は、当該対象セクタ特定情報によって特定される対象セクタに記録されているデータを読み出してバッファ１５に退避させ（Ｓ１０５）、当該対象セクタについてデータの退避処理が完了したことを書込処理部２６に通知する。
【００７１】
書込処理部２６は、退避処理部２５から受け入れた通知に基づいて、退避処理が完了した対象セクタに係る書込先セクタに書込データを書き込む（Ｓ１０６）。
【００７２】
また、この書込処理部２６による書込処理が実行されている間、オフトラック判断部２７は、磁気ヘッド３のオフトラック量をモニタリングし、当該オフトラック量が予め定められたオフトラック閾値を超えるか否かを判断する（Ｓ１０７）。
【００７３】
そして、この処理Ｓ１０７において、オフトラック量がオフトラック閾値を超えることなく書込処理が終了した場合（処理Ｓ１０７においてＮｏ）には、処理は終了する。
【００７４】
一方、処理Ｓ１０７において、オフトラック量がオフトラック閾値を超えた場合（処理Ｓ１０７においてＹｅｓ）には、オフトラック判断部２７は、オフトラックが発生したと判断し、その旨を退避データ書込部２８に出力する。
【００７５】
オフトラック判断部２７からオフトラックが生じたとの通知を受け入れた退避データ書込部２８は、当該オフトラックに係る書込先セクタについて退避させていたデータをバッファ１５から読み出して、当該読み出した退避データを、当該書込先セクタに係る対象セクタに書き込み（Ｓ１０８）、処理を終了する。
【００７６】
なお、本発明に係る磁気ディスク装置１は、上述の例に限られない。すなわち、候補セクタ特定部２２は、図４に示すように、１つの書込先セクタに対して６つの候補セクタを特定するものに限られず、例えば、オフトラック判断部２７において検出されるオフトラック量等に応じて、より広範囲の近傍セクタを特定することとしてもよい。
【００７７】
具体的に、この場合、候補セクタ特定部２２は、例えば、オフトラック量が予め定めたオフトラック基準値よりも大きい場合には、書込先セクタが含まれるトラックの両側の隣接トラックのみならず、さらに当該隣接トラックに隣接する近傍トラックについても、当該書込先セクタと同じセクタ番号が割り当てられているセクタをも近傍セクタとして特定する。
【００７８】
また、候補セクタ特定部２２は、例えば、書込コマンドに係る書込データの量が予め定められたデータ量閾値を超える場合、すなわち、当該書込コマンドに係る書込セクタの数が予め定められたセクタ数閾値を超える場合には、当該各書込先セクタについて特定される隣接セクタ又は近傍セクタのうち、予め定められた条件を満たすセクタのみを隣接セクタとして特定することとしてもよい。
【００７９】
具体的に、この場合、候補セクタ特定部２２は、例えば、図８に示すように、書込コマンドによって、複数のトラックに跨る多数の書込先セクタ（図８においてトラック「Ｎ」のセクタ番号「Ｓ」からトラック「Ｎ＋３」のセクタ番号「Ｓ＋２」までの斜線のハッチングを施した複数のセクタ）が指定されている場合には、各書込先セクタの隣接セクタや近傍セクタのうち、当該書込コマンドによってデータの書込先として指定されているものについては、上書きされることが予定されており、データを退避させる必要はないため、候補セクタとして特定しない。
【００８０】
すなわち、この場合、候補セクタ特定部２２は、例えば、図８に示す書込先セクタの１つであるトラック「Ｎ」上のセクタ「Ｓ」については、当該書込先セクタの外周側に隣接するトラック「Ｎ＋１」上の隣接セクタ「Ｓ」は、書込先セクタとして指定されているため、候補セクタとしては特定せず、当該書込先セクタの内周側に隣接するトラック「Ｎ−１」上の隣接セクタ「Ｓ」は候補セクタとして特定する。
【００８１】
このようにして、候補セクタ特定部２２は、複数のトラックに跨って書込先セクタが指定される場合には、各セクタ番号に係る書込先セクタのうち、最も内周側に位置する書込先セクタのさらに内周側に位置する隣接セクタ及び近傍セクタと、最も外周側に位置する書込先セクタのさらに外周側に位置する隣接セクタ及び近傍セクタと、を候補セクタとして特定する。
【００８２】
また、この候補セクタ特定部２２は、例えば、受信した複数の書込コマンドがコマンドキューとしてバッファ１５に保持されている場合には、当該コマンドキューに含まれる各書込コマンドを参照して、書込処理の対象となっている書込コマンドについて特定された隣接セクタや近傍セクタを、書込先セクタとして指定している書込コマンドがバッファ１５に保持されているか否かを判断し、保持されている場合には、当該隣接セクタは当該バッファ１５に保持されている書込コマンドによって上書きされる予定となっているため、データを退避させる必要はないと判断し、当該隣接セクタを候補セクタとしては特定しないこととしてもよい。
【００８３】
また、オフトラック判断部２７は、書込処理が行われている間以外にも、例えば、読取処理が行われている間等、磁気ヘッド３が磁気ディスク２上に浮上している間の任意のタイミングでオフトラック量をモニタリングすることとしてもよい。
【００８４】
この場合、オフトラック判断部２７は、例えば、過去に測定されたオフトラック量の平均値が予め定められた閾値を超えるか否かを判断し、書込制御部２０は、当該閾値を超える場合に、上述のようなデータ退避処理を行うこととしてもよい。
【００８５】
また、書込制御部２０は、前回読込み、ないし書込みを行ってオントラック動作を行った後の経過時間を用いてデータの退避処理を実行するか否かを決定してもよい。この決定は例えば、次のようにして行う。すなわち、この書込制御部２０は、過去においてホストＨから最後に書込コマンド又は読取コマンドのうち少なくとも一方を受信してからの経過時間を測定して、当該測定された経過時間が予め定められた経過時間閾値を超えるか否かを判断し、当該経過時間が当該経過時間閾値を超えた場合に、上述のデータ退避処理を実行すればよい。
【００８６】
この場合、書込制御部２０は、例えば、読取対象とするデータが書き込まれている磁気ディスク２上のセクタの位置を指定し、当該セクタに書き込まれたデータを読み取るよう指示する読取コマンドをホストＨから受け入れると、磁気ヘッド３の読取ヘッドにバイアス電流を流して当該データを読み取る処理を実行するとともに、当該読取コマンドを受信してからの時間を測定する（図示しないタイマを利用して計時すればよい）。
【００８７】
そして、この書込制御部２０は、この読取コマンドを受信した後、経過時間閾値を超える期間にわたって、書込コマンドも読取コマンドも受け入れなかった場合には、当該経過時間閾値を超える期間の経過後に実行する書込処理（当該期間の経過前に受け入れてバッファ１５に保持されていた書込コマンド又は当該期間の経過後に受け入れた書込コマンドに係る書込処理）において、上述のデータ退避処理を実行する。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施形態に係る磁気ディスク装置の主な構成を示すブロック図である。
【図２】本発明の一実施形態に係る磁気ディスク上に配置されるトラックの一例を示す説明図である。
【図３】本発明の一実施形態に係る磁気ディスク装置が行う主な処理を示す機能ブロック図である。
【図４】本発明の一実施形態に係る磁気ディスク上において特定される書込先セクタと候補セクタとの一例について示す説明図である。
【図５】本発明の一実施形態に係る磁気ディスク装置が参照するファイルシステムに関連する情報の一例について示す説明図である。
【図６】本発明の一実施形態に係る磁気ディスク上において特定される書込先セクタと対象セクタとの一例について示す説明図である。
【図７】本発明の一実施形態に係る磁気ディスク装置が行う主な処理の流れを示すフロー図である。
【図８】本発明の一実施形態に係る磁気ディスク上において特定される書込先セクタと隣接セクタとの他の例について示す説明図である。
【符号の説明】
【００８９】
１  磁気ディスク装置、２  磁気ディスク、３  磁気ヘッド、４  スピンドルモータ、５  ボイスコイルモータ、１０  ハードディスクコントローラ、１１  リード／ライトチャネル、１２  リード／ライトアンプ、１３  マイクロプロセッシングユニット、１４  モータドライバ、１５  バッファ、１６  不揮発性メモリ、１７  ワークメモリ、２０  書込制御部、２１  書込先セクタ特定部、２２  候補セクタ特定部、２３  ファイルシステム読出部、２４  対象セクタ特定部、２５  退避処理部、２６  書込処理部、２７  オフトラック判断部、２８  退避データ書込部。
【図１】
2006286128.tif 000003
【図２】
2006286128.tif 000004
【図３】
2006286128.tif 000005
【図４】
2006286128.tif 000006
【図５】
2006286128.tif 000007
【図６】
2006286128.tif 000008
【図７】
2006286128.tif 000009
【図８】
2006286128.tif 000010