(57)【要約】【課題】  欠陥セクタ処理のためにディスク処理装置の性能が低下しない、シーケンシャルアクセスに適した欠陥セクタ管理方法を提供する【解決手段】  ホストがディスク装置に対してシーケンシャル書き込みを実行する際に、スリップ処理からスキップ処理への切り替えを行う。ステップ１０１０ではセクタがGLISTに登録された欠陥セクタかどうかを調べる。欠陥セクタである場合には、ステップ１０１１でセクタをスキップして次のセクタにシークし、ステップ１０１２で欠陥セクタをGLISTからPLISTに登録し直し、ステップ１０１３でアドレス変換表から欠陥セクタの情報を削除し、１０１４で欠陥セクタ管理表を更新し、ステップ１０１２でセクタにデータを記録する。【選択図】  図１０
2006338739.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体と、上位装置との間でコマンドやデータの送受信を行い前記記憶媒体に対して書き込み又は読み出しを行う制御部とを備えるディスク装置において、
ある連続する論理ブロックアドレス範囲のユーザデータセクタと、前記ユーザデータセクタ用の予備セクタとが前記記憶媒体のある連続する物理ブロックアドレスに割り当てられており、
前記制御部が、
前記上位装置からのシーケンシャル書き込みを検出するステップ、
前記シーケンシャル書き込みの対象に前記連続する論理ブロックアドレスが含まれる場合に、
前記論理ブロックアドレスの中でスリップ処理された欠陥セクタが存在するか検査するステップ、
欠陥セクタに当初割り当てられていた論理ブロックアドレスにアクセスする際に、前記欠陥セクタと異なるセクタに対してアクセスするように設定されている場合に、
前記ユーザデータセクタの中で前記欠陥セクタよりも大きな物理ブロックアドレスを持つセクタと、前記予備セクタの中で最も小さな物理ブロックアドレスを持つセクタ、に対して、前記連続する論理ブロックアドレスの中で前記欠陥セクタに割り当てられていた論理ブロックアドレス以降の論理ブロックアドレスを割り当てるステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項２】
請求項１に記載の欠陥セクタ管理方法において、
前記制御部が、前記各ステップを実行した後に、前記上位装置からのシーケンシャル書き込みを実行することを特徴とする欠陥セクタ管理方法。
【請求項３】
記憶媒体と、上位装置との間でコマンドやデータの送受信を行い前記記憶媒体に対して書き込み又は読み出しを行う制御部とを備えるディスク装置において、
ある連続する論理ブロックアドレスの範囲のユーザデータセクタと、前記ユーザデータセクタ用の予備セクタとが前記記憶媒体のある連続する物理ブロックアドレスに割り当てられており、
前記制御部が、
前記シーケンシャル書き込みの対象に前記連続する論理ブロックアドレスが含まれ、前記連続する論理ブロックアドレス内に近い将来に欠陥セクタとなり得るセクタを発見した場合に、
前記欠陥セクタとなり得るセクタからデータを読み出すステップ、
前記シーケンシャル書き込みで最も最近書き込んだセクタの次のセクタに前記読み出したデータを退避するステップ、
前記欠陥セクタとなり得るセクタに割り当てられていた論理ブロックアドレスを前記データを退避したセクタに割り当てるステップ、
前記ユーザデータセクタの中で前記データを退避したセクタよりも大きな物理ブロックアドレスを持つセクタと、前記予備セクタの中で最も小さな物理ブロックアドレスを持つセクタ、に対して、前記データを退避したセクタに当初割り当てられていた論理ブロックアドレス以降の論理ブロックアドレスを割り当てるステップ、
前記近い将来欠陥セクタとなり得るセクタを欠陥セクタとして登録するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項４】
請求項３に記載の欠陥セクタ管理方法において、
前記制御部が、
前記上位装置からのシーケンシャル書き込みを検出するステップ、
前記データを退避したセクタの次以降のセクタに対して前記シーケンシャル書き込みを実行すること、
を特徴とする欠陥セクタ管理方法。
【請求項５】
請求項１に記載の欠陥セクタ管理方法において、前記ユーザデータセクタと前記予備セクタとが複数トラックからなる連続する物理ブロックアドレス空間に割り当てられていることを特徴とする欠陥セクタ管理方法。
【請求項６】
請求項３に記載の欠陥セクタ管理方法において、前記ユーザデータセクタと前記予備セクタとが複数トラックからなる連続する物理ブロックアドレス空間に割り当てられていることを特徴とする欠陥セクタ管理方法。
【請求項７】
請求項５に記載の欠陥セクタ管理方法において、前記予備セクタが前記連続するブロックアドレス空間の上位アドレス側に割り当てられていることを特徴とする欠陥セクタ管理方法。
【請求項８】
請求項５に記載の欠陥セクタ管理方法において、前記複数トラックが連続トラックで構成されていることを特徴とする欠陥セクタ管理方法。
【請求項９】
請求項８に記載の欠陥セクタ管理方法において、前記連続トラックの各隣接トラックが部分的に重ね書きされていることを特徴とする欠陥セクタ管理方法。
【請求項１０】
請求項１に記載の欠陥セクタ管理方法において、
前記ディスク装置が管理データ保存用領域を備え、
前記制御部が、
前記連続する物理ブロックアドレスの範囲内に含まれる欠陥セクタ数を数えるステップ、
前記数えた欠陥セクタ数を前記管理データ保存用領域に保存するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項１１】
請求項３に記載の欠陥セクタ管理方法において、
前記ディスク装置が管理データ保存用領域を備え、
前記制御部が、
前記連続する物理ブロックアドレスの範囲内に含まれる欠陥セクタ数を数えるステップ、
前記数えた欠陥セクタ数を前記管理データ保存用領域に保存するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項１２】
請求項３に記載の欠陥セクタ管理方法において、
前記ディスク装置が管理データ保存用領域を備え、
前記制御部が、
前記連続する物理ブロックアドレスの範囲内に含まれる前記登録した欠陥セクタ数を数えるステップ、
前記数えた欠陥セクタ数を前記管理データ保存用領域に保存するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項１３】
請求項１に記載の欠陥セクタ管理方法において、
前記ディスク装置が管理データ保存用領域を備え、
前記制御部が、
論理ブロックアドレスを他のセクタに割り当てた欠陥セクタ数を数えるステップ、
前記数えた欠陥セクタ数を前記管理データ保存用領域に保存するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項１４】
請求項３に記載の欠陥セクタ管理方法において、
前記ディスク装置が管理データ保存用領域を備え、
前記制御部が、
論理ブロックアドレスを他のセクタに割り当てた欠陥セクタ数を数えるステップ、
前記数えた欠陥セクタ数を前記管理データ保存用領域に保存するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項１５】
請求項１に記載の欠陥セクタ管理方法において、
前記制御部が、
前記上位装置が発行する欠陥セクタ数読み出しコマンドを受信するステップ、
前記連続する物理ブロックアドレスの範囲内に含まれる欠陥セクタ数を数えるステップ、
前記欠陥セクタ数を前記欠陥セクタ数読み出しコマンドの応答として、前記ホストに送信するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【請求項１６】
請求項３に記載の欠陥セクタ管理方法において、
前記制御部が、
前記上位装置が発行する欠陥セクタ数読み出しコマンドを受信するステップ、
前記連続する物理ブロックアドレスの範囲内に含まれる欠陥セクタ数を数えるステップ、
前記欠陥セクタ数を前記欠陥セクタ数読み出しコマンドの応答として、前記ホストに送信するステップ、
を実行することを特徴とする欠陥セクタ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスク装置の欠陥セクタ管理方法に関し、特にホストからの書き込みコマンドの処理と並行してリアルタイムにスキップ処理からスリップ処理へと欠陥セクタの処理方式を変更できる欠陥セクタ管理方法に関する。
【背景技術】
【０００２】
ディスク装置の記録媒体には、製造時のエラーや経年劣化により正常に読み書きできないセクタが存在する。このようなセクタを、欠陥セクタ又はディフェクトと呼ぶ。初期のディスク装置では欠陥セクタ情報をユーザに伝え、ユーザはディスク装置をホストで物理フォーマットする時に欠陥セクタ情報を入力して欠陥セクタを使用しないように設定した。最近のディスク装置では製造プロセスの微細化に伴いセクタ数が爆発的に増え、欠陥セクタの数も同様に増えたため、ユーザによる欠陥セクタ情報の入力が事実上不可能になった。このため、欠陥セクタの代わりに記録媒体上に予め確保してある予備セクタ(スペアセクタ)を使うようにディスク装置が欠陥セクタを管理し、ユーザ側に欠陥セクタを見せなくする手法が一般的になった。
【０００３】
ディスク装置の製造時から存在する欠陥セクタは、工場でのディスク装置の検査時に検出され、欠陥セクタの物理ブロックアドレス(Physical Block Address, PBA)は、プライマリディフェクトリスト(Primary defect LIST, PLIST)に登録される。これらの欠陥セクタには、最初から論理ブロックアドレス(Logical Block Address, LBA)を割り当てない。つまり、ある欠陥セクタに割り当てられる筈のLBAは、その欠陥セクタ以降の最初の正常なセクタに割り当てられる。このような欠陥セクタ処理方法を、スキップ処理と呼ぶ。スキップ処理により、ホストからは、ディスク装置には欠陥セクタが存在しないように見える。
【０００４】
工場出荷後にユーザの使用中に発生する欠陥セクタは、セクタの読み出し時にディスク装置により検出される。ある規定回数以上リトライを繰り返してセクタの読み出しに成功した場合には、そのセクタは近い将来データロストする可能性が高いと判断し、以後そのセクタを欠陥セクタとして使用を禁止し、読み出したデータを記録媒体上に予め確保してある予約セクタにコピーする。新たに欠陥セクタと認識したセクタのPBAは、PLISTではなくグローンディフェクトリスト(Grown defect LIST, GLIST)に登録される。その欠陥セクタに割り当てられていたLBAとデータをコピーした予備セクタのPBAは、アドレス変換表に登録される。通常LBAからPBAへの変換はPLISTとシリンダ数、ヘッド数、トラック内セクタ数などから数式処理で行うが、GLISTに登録された欠陥セクタの場合にはアドレス変換表によりLBAからPBAへの変換を行う。このような欠陥セクタ処理方法をスリップ処理と呼ぶ。スリップ処理により、ディスク装置の使用中に欠陥セクタが発生してもホストからは欠陥セクタが存在しないように見える。
【０００５】
PLISTに登録された欠陥セクタは最初からLBAが割り当てられていないため、そのような欠陥セクタを含む領域にアクセスしても余計なヘッドシークが発生しない。しかしGLISTに登録された欠陥セクタを含む領域にアクセスすると、予備セクタへのアクセスのため余計なヘッドシークが発生する。このようなヘッドシークが発生するとディスク装置の性能が低下する。特にAVデータなどシーケンシャルアクセスが主体の場合には、性能低下の影響が特に顕著に現れる。
【０００６】
スリップ処理された全ての欠陥セクタをスキップ処理に切り替えるには、ディスク装置を物理フォーマットする必要がある。物理フォーマットは多大な時間を要する処理であり、ユーザデータを消さないためにはバックアップとリストアが必要になるが、これらの両者とも多大な時間を要する処理である。さらにバックアップ、物理フォーマット、リストアのどの処理中もホストからのコマンドを処理できない。このため、シーケンシャルアクセス性能向上のためにユーザがディスク装置の物理フォーマットすることはほとんどない。
【０００７】
スキップ処理だけで欠陥セクタを処理する方法として、特開平5-28646号公報記載の「交代セクタ設定方法」がある。この方法では、欠陥セクタを発見したシリンダ内に予備セクタがある場合には、欠陥セクタ以降のデータを予備セクタ方向に欠陥セクタ分だけずらして欠陥セクタを処理する。スキップ処理だけで欠陥セクタを処理するため、シーケンシャルアクセスでの処理性能が低下しない。
【０００８】
特開2004-185709号公報記載の「ディスク制御装置及び交替処理方法」では、ディスク装置の記憶媒体を所定の領域に区分けし、各領域の前方と後方にそれぞれ予備セクタを配置し、欠陥セクタが領域の前半部分で発生すれば前方の予備セクタを使ってスキップ処理し、後半部分で発生すれば後方の予備セクタを使ってスキップ処理する。特開平5-28646号公報では後方にのみスキップ処理するのに対して、特開2004-185709号公報では前方と後方の両方向にスキップ処理するので、特開平5-28646号公報よりも特開2004-185709号公報の方がスキップ処理に必要になるデータの一時退避用メモリの使用量を削減できる。
【０００９】
特開平11-134811号公報記載の「記録再生方法、記録再生装置」では、光磁気ディスク用の欠陥セクタ管理方法を提案している。光磁気ディスクでは、ディスク装置と同様の概念に対して異なる用語及び略号を用いる。ディスク装置のプライマリディフェクトリスト(Primary defect LIST, PLIST)、グローンディフェクトリスト(Grown defect LIST, GLIST)、スキップ処理、スリップ処理に対して、光磁気ディスクでは、プライマリディフェクトリスト(Primary Defect List, PDL)、セカンダリディフェクトリスト(Secondary Defect List, SDL)、スリッピングリプレースメント(slipping replacement)、リニアリプレースメント(linear replacement)を用いる。以下では、ディスク装置の用語及び略号を用いて説明する。特開平11-134811号公報では、連続記録モード及び連続再生モードを備える記録再生方式及び記録再生装置において、連続記録モードで書き込む際にGLISTに登録された欠陥セクタをスキップして書き込み、スキップした欠陥セクタの情報をGLISTからPLISTに登録しなおすことで、スリップ処理された欠陥セクタをスキップ処理で処理し直す。
【００１０】
動画のように巨大なデータをディスク装置に記録する場合には、従来以上に大容量のディスク装置が必要になる。シーケンシャルにデータを書き込む場合には、WO99/445534記載の「磁気ディスク装置」によりディスク装置の記録密度を向上できる。この装置では、隣接するトラック同士を一部分重ね書きし、重ね書きされていない部分のみをトラックのデータとして書き込みヘッドよりも小さな読み出しヘッドで読み出す。隣接トラックの一部分を重ね書きする方式では、あるトラックを上書きするとそのトラックに隣接したトラックのデータを破壊するため、任意のトラックを上書きできず、ディスク装置の記録密度が上がる代わりに使い勝手が下がる。WO99/445534記載の装置では、トラックを追記式に書き込みトラック番号と実際の配置との対応を変換表により管理して、ホストが任意のトラックに任意の順番で書き込み可能にして記録密度の向上と使い勝手の両立を可能にしている。セクタ単位での上書きについても、セクタ番号と実際の配置との対応を変換表により管理することで可能になる。
【００１１】
またATA/ATAPI-7の規格書草案であるT13 d1532r4b ATA/ATAPI-7 revision 4bVol. 1に記載のStreaming feature setでは、AVデータの読み書きに適したシーケンシャルアクセスのコマンドを定義している。Streaming feature setの書き込みコマンドであるWRITE STREAM EXTやWRITE STREAM DMA EXTにより動画のような巨大データをディスク装置に書き込む場合には、ファイルのコンテンツ部分がよりシーケンシャルに配置されるようホストのファイルシステムがファイルの割当を決定すると期待できる。
【００１２】
【特許文献１】特開平5-28646号公報
【特許文献２】特開2004-185709号公報
【特許文献３】特開平11-134811号公報
【特許文献４】WO99/45534
【非特許文献１】T13 d1532r4b ATA/ATAPI-7 revision 4b Vol. 1
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかし、特開平5-28646号公報に記載の方法では、欠陥セクタ処理のためディスク装置内でデータの移動が発生する。ホストが発行するコマンドとは独立にディスク装置内でコマンドを発行している状態なので、欠陥セクタ処理中のディスク装置の性能が約半分になるという問題がある。このため、コマンド実行時間の上限を定められたATA/ATAPI-7のStreaming feature setのコマンドの実行中には、この方法では欠陥セクタを処理できない可能性が高い。
【００１４】
特開2004-185709号公報に記載の方法を用いると、特開平5-28646号公報に対してデータの一時退避用メモリの使用量を削減できる。しかしディスク装置内のデータの移動が発生するのは同じであり、欠陥セクタ処理中のディスク装置の性能劣化の問題を解決できない。
【００１５】
特開平11-134811号公報に記載の方法では、連続記録モードで記録中の場合にのみ、記録再生装置内の既存のデータを移動せずに欠陥セクタ処理をスリップ処理からスキップ処理に切り替えられる。しかし連続記録モードのような特別なモードを持たないディスク装置では、この方式は適用できない。この方式でも、記録済みのユーザエリア上のセクタに欠陥セクタが存在した場合には、この欠陥セクタは記録媒体上に予め確保してあるスペアエリア内のセクタであるスペアセクタにスリップ処理される。このようにスリップ処理された状態で、ユーザエリア上のセクタを消さずに新しいデータを追加する場合には、PLISTもしくはGLISTへの登録の有無のみでセクタへの書き込み判断を行う本方式では、スペアセクタ上に退避したデータを上書きしてしまい、ユーザデータを消失するという致命的な問題が発生する。
【００１６】
さらにWO99/445534に記載の磁気ディスク装置では、欠陥セクタ処理のためにセクタ単位で変換表によるセクタ番号と実際の配置との対応管理が必要になる。例えば100GBのディスク装置では、論理ブロックアドレス(Logical Block Address, LBA)に最低28bit必要なので、必要な変換表のサイズは1.4GBになる。このように巨大な変換表はディスク装置内部のメモリ上に格納できないため、記憶媒体上に保存する。記憶媒体上の変換表の検索には多大な時間が必要で、セクタごとに変換表の検索が必要である。このためセクタ単位での変換表を採用すると、現実的な時間でディスク装置へのアクセスが不可能になるという問題がある。
【００１７】
本発明の第一の目的は、欠陥セクタ処理のためにディスク処理装置の性能が低下しない、シーケンシャルアクセスに適した欠陥セクタ管理方法を提供することである。
【００１８】
本発明の第二の目的は、欠陥セクタをスリップ処理した場合であっても退避したデータを消失せずにその他の欠陥セクタをスリップ処理からスキップ処理に切り替えられる欠陥セクタ管理方法を提供することである。
【００１９】
本発明の第三の目的は、隣接するトラック同士の一部分が重ね書きされており任意のトラックを上書きできない場合であっても、巨大な変換表を使わずに欠陥セクタを管理可能な欠陥セクタ管理方法を提供することである。
【課題を解決するための手段】
【００２０】
本発明は、前記目的を達成するため以下の構成を有する。
【００２１】
すなわち、本発明による欠陥セクタ管理方法は、記憶媒体と、上位装置との間でコマンドやデータの送受信を行い記憶媒体に対して書き込み又は読み出しを行う制御部とを備えるディスク装置において、
ある連続する論理ブロックアドレス範囲のユーザデータセクタと、前記ユーザデータセクタ用の予備セクタとが記憶媒体のある連続する物理ブロックアドレスに割り当てられており、
制御部が、
上位装置からのシーケンシャル書き込みを検出するステップ、
シーケンシャル書き込みの対象に前記連続する論理ブロックアドレスが含まれる場合に、
前記論理ブロックアドレスの中でスリップ処理された欠陥セクタが存在するか検査するステップ、
欠陥セクタに当初割り当てられていた論理ブロックアドレスにアクセスする際に、前記欠陥セクタと異なるセクタに対してアクセスするように設定されている場合に、
ユーザデータセクタの中で前記欠陥セクタよりも大きな物理ブロックアドレスを持つセクタと、予備セクタの中で最も小さな物理ブロックアドレスを持つセクタ、に対して、前記連続する論理ブロックアドレスの中で前記欠陥セクタに割り当てられていた論理ブロックアドレス以降の論理ブロックアドレスを割り当てるステップ、を実行するものである。
【００２２】
制御部は、前記各ステップを実行した後に、上位装置からのシーケンシャル書き込みを実行する。
【００２３】
また、本発明による欠陥セクタ管理方法は、記憶媒体と、上位装置との間でコマンドやデータの送受信を行い前記記憶媒体に対して書き込み又は読み出しを行う制御部とを備えるディスク装置において、
ある連続する論理ブロックアドレスの範囲のユーザデータセクタと、ユーザデータセクタ用の予備セクタとが記憶媒体のある連続する物理ブロックアドレスに割り当てられており、
制御部が、
シーケンシャル書き込みの対象に前記連続する論理ブロックアドレスが含まれ、前記連続する論理ブロックアドレス内に近い将来に欠陥セクタとなり得るセクタを発見した場合に、
欠陥セクタとなり得るセクタからデータを読み出すステップ、
シーケンシャル書き込みで最も最近書き込んだセクタの次のセクタに読み出したデータを退避するステップ、
欠陥セクタとなり得るセクタに割り当てられていた論理ブロックアドレスをデータを退避したセクタに割り当てるステップ、
ユーザデータセクタの中で前記データを退避したセクタよりも大きな物理ブロックアドレスを持つセクタと、予備セクタの中で最も小さな物理ブロックアドレスを持つセクタ、に対して、前記データを退避したセクタに当初割り当てられていた論理ブロックアドレス以降の論理ブロックアドレスを割り当てるステップ、
前記近い将来欠陥セクタとなり得るセクタを欠陥セクタとして登録するステップ、
を実行するものである。制御部は、上位装置からのシーケンシャル書き込みを検出すると、前記データを退避したセクタの次以降のセクタに対してシーケンシャル書き込みを実行する。
【００２４】
ユーザデータセクタと予備セクタとは、複数トラックからなる連続する物理ブロックアドレス空間に割り当てられている。予備セクタは、連続するブロックアドレス空間の上位アドレス側に割り当てることができる。複数トラックは続トラックで構成することができ、連続トラックの各隣接トラックは部分的に重ね書きされていてもよい。
【００２５】
ディスク装置が管理データ保存用領域を備え、制御部が、連続する物理ブロックアドレスの範囲内に含まれる欠陥セクタ数を数えるステップ、数えた欠陥セクタ数を管理データ保存用領域に保存するステップを実行するようにしてもよい。
【００２６】
ディスク装置が管理データ保存用領域を備え、制御部が、連続する物理ブロックアドレスの範囲内に含まれる登録した欠陥セクタ数を数えるステップ、数えた欠陥セクタ数を管理データ保存用領域に保存するステップを実行するようにしてもよい。
【００２７】
また、ディスク装置が管理データ保存用領域を備え、制御部が、論理ブロックアドレスを他のセクタに割り当てた欠陥セクタ数を数えるステップ、数えた欠陥セクタ数を管理データ保存用領域に保存するステップを実行するようにしてもよい。
【００２８】
制御部は、さらに、上位装置が発行する欠陥セクタ数読み出しコマンドを受信するステップ、管理データ保存用領域に保存した欠陥セクタ数を欠陥セクタ数読み出しコマンドの応答としてホストに送信するステップを実行するようにしてもよい。
【発明の効果】
【００２９】
本発明によると、データ書き換えのタイミングで欠陥セクタ処理の方式をスリップ処理からスキップ処理へと動的に切り替えることで、欠陥セクタ処理のためのヘッド移動が少なくなり、ディスク装置の処理性能が向上する。また、スリップ処理からスキップ処理への切り替え処理の間にディスク装置の性能が劣化することがない。
【発明を実施するための最良の形態】
【００３０】
以下、発明の実施の形態について図面を参照して説明する。なお、同一の参照番号は同一の構成要素を示す。
【００３１】
本発明は、隣接トラックを部分的に重ね書きした複数の連続するトラックからなるバンド内の欠陥セクタを管理するのに、欠陥セクタを発見した段階ではバンド内の既存のデータの末尾にコピーするスリップ処理を行い、バンド更新の段階で欠陥セクタに論理ブロックアドレスを割り当てずにスキップするスキップ処理を行うところに特徴がある。
【００３２】
図１は、隣接トラックを部分的に重ね書きする場合のトラック配置の概念図である。トラック１０１から１０５では書き込みヘッド１２１で書き込んだトラックを部分的に重ね書きし、書き込みヘッド１２１よりも幅の狭い読み出しヘッド１２２で読み出すことで、書き込みヘッド１２１の幅よりもトラック幅１１１を狭くしている。図１では、トラック１０３の書き込み後にトラック１０４を書き込んでいる。トラック１０４の書き込みにより、トラック１０５が消去される。このため隣接トラックを部分的に重ね書きする場合には、あるトラックに書き込みを開始すると、ある一定範囲のトラックを全て更新する必要がある。このようなトラック群をバンドと呼ぶ。
【００３３】
図２は、複数の連続するトラックからなるバンド構造の概念図である。図２において、２０１はバンド、２０２は二つのバンド間でデータ破壊を防止するためのバンドギャップ、である。図２のようにバンドの末尾のトラックのみ幅広にして、バンドギャップ２０２の領域を作ることで隣のバンドのデータ破壊を防止する。
【００３４】
図３は、本発明の一実施例による欠陥セクタ管理手順を示す図である。図３(A)は、初期状態を示している。初期状態では、バンド３０３はLBA割り当て済みのセクタ３０１と予備セクタ３０２とから構成される。ユーザデータはセクタ３０１に保存される。
【００３５】
図３(B)は、将来欠陥セクタとなり得るセクタを発見し、バンド内でスリップ処理した状態を示している。ユーザデータ記録済みのセクタ３１１の中で、あるセクタを読み出すのに多数のリトライが必要になった場合、そのセクタを欠陥セクタ３１２と判断し、ユーザデータ記録済みのセクタ３１１の末尾にスリップ処理する。３１３は欠陥セクタをスリップ処理したセクタである。LBA 割り当て済みの領域３０１の中で一つのセクタを欠陥セクタ処理に用いたため、予備セクタ３０２の中の一つのセクタをユーザデータ記録用のセクタとして用いるとともに、LBAの割り当て直しが必要になる。そこでスリップ処理したセクタ３１３より後のセクタ３０１と予備セクタ３０２の中で最もセクタ３０１寄りのセクタすなわちPBAの最も小さなセクタのLBAを割り当て直す。３１４は、これらのLBAを割り当て直したセクタである。
【００３６】
図３(C)は、バンド３０３を書き換える時に欠陥セクタの処理をスリップ処理からスキップ処理へと動的に切り替えた状態を示している。バンド書き換えのタイミングで、欠陥セクタは隣のセクタすなわちPBAが一つ大きなセクタへとスキップ処理される。３２１は欠陥セクタをスキップ処理したセクタである。３２１よりも後のセクタは、図３(B)の場合と同様にLBAを割り当て直す。３１４は、これらのLBAを割り当て直したセクタである。
【００３７】
図７は、ディスク装置のブロック図である。フラッシュロム７０１には、ディスク装置の起動に必要なプログラムが格納される。主記憶７０２は、メモリコントローラ及びマイクロプロセッサ７０４の制御用プログラムと制御に必要な各種データの格納に使用する。キャッシュメモリ７０３は、ディスクインタフェース７０６経由で上位装置のディスクコントローラとの間で送受信するデータのキャッシュに使用する。上位装置との通信に用いる通信プロトコルは、ハードディスクコントローラ及びSCSIプロトコルコントローラ７０５のSCSIプロトコルコントローラ部分で処理される。SCSIプロトコルコントローラに送られたコマンドは、メモリコントローラ及びマイクロプロセッサ７０４のマイクロプロセッサ部分により書き込みヘッド及び読み出しヘッドの駆動命令に変換されて、ハードディスクコントローラ及びSCSIプロトコルコントローラ７０５のハードディスクコントローラ部分に送られる。ハードディスクコントローラは、受信した命令を元にサーボコントローラ７０７とリードライトチャネル７０８とを制御し、記憶媒体へのデータの書き込み又は読み出しを実行する。この時、書き込みであればキャッシュメモリ７０３に保存されたデータを記憶媒体に書き込み、読み出しであれば記憶媒体に保存されたデータをキャッシュメモリ７０３に書き込む。
【００３８】
ディスク装置の電源が投入されると、メモリコントローラ及びマイクロプロセッサ７０４がフラッシュロム７０１から起動用のプログラムを読み出し、メモリコントローラ部分が主記憶７０２、キャッシュメモリ７０３を初期化し、ハードディスクコントローラ及びSCSIプロトコルコントローラ７０５経由でサーボコントローラ７０７とリードライトチャネル７０８を制御して、残りの制御プログラムと制御に必要な各種データをディスク装置の記憶媒体から読み出す。読み出した制御プログラムと各種データを主記憶７０２上に格納する。図８、図１０で説明する処理のフロー図と、図４、図５、図６、図９で説明するデータ構造が、これらの制御プログラムと各種データに含まれる。
【００３９】
次に、欠陥セクタ管理に用いる各種データ構造について説明する。図４は、バンド構成管理表である。バンド構成管理表では、バンド識別子４０１ごとにバンドの開始LBA４０２、バンドの終了LBA４０３、バンドの開始トラック４０４、バンドの終了トラック４０５、バンド内の予備トラック数４０６を保存する。
【００４０】
図５は、バンド内の欠陥セクタ管理表である。バンド識別子４０１ごとにバンド内でスキップ処理した欠陥セクタ数５０１とバンド内でスリップ処理した欠陥セクタ数５０２とを保存する。
【００４１】
図６は、バンド内で次回書き込むセクタの管理表である。図６において、６０１はバンド内で次回書き込むセクタに割り当てられたLBA、６０２はバンド内で次回書き込むセクタに割り当てられたPBA、である。バンド識別子４０１ごとに、次回書き込むセクタのLBA６０１とPBA６０２とを保存する。
【００４２】
図９は、トラック情報管理表である。トラック番号９０１ごとに、トラック内の欠陥セクタ数９０２、トラック内でスリップ処理に使われたセクタ数９０３、トラックの開始セクタのPBA９０４、トラック内セクタ数を保存する。
【００４３】
さらに図示していないが、PLIST、GLIST、アドレス変換表が存在する。PLISTとGLISTは、欠陥セクタのPBAの一覧からなる。アドレス変換表は、スリップ処理したセクタに割り当てられていたLBAをどのPBAに割り当て直したかを保存する。
【００４４】
これらのデータ構造は、ディスク装置の記憶媒体上に格納されるとともに、データ参照の速度向上のため主記憶７０２にも格納される。これらのデータ構造の更新の場合には、記憶媒体上と主記憶７０２上の両方のデータ構造を更新し、参照の場合には主記憶７０２上のデータ構造を参照する。
【００４５】
LBAからPBAへの変換は図４のバンド構成管理表、図９のトラック情報管理表の情報、PLIST、GLIST、アドレス変換表を使い、以下のように変換できる。まず図４を参照し、LBA がどのバンドに所属するか調べる。次に、バンドの開始トラック番号４０４とバンド内セクタ数９０５とを使いLBAがどのトラックに所属するか調べ、トラックの開始セクタからのオフセットを計算する。次に、欠陥セクタ処理によるオフセットを調整するため、バンドの開始トラック番号４０４からトラックの所属するトラック番号の一つ前までの範囲で、トラック内欠陥セクタ数９０２とトラック内でスリップ処理に使われたセクタ数９０３との総和を計算する。トラックの開始セクタからのオフセットと欠陥セクタによるオフセットとを加え、オフセットの合計をLBAの所属するトラックのトラック内セクタ数９０５と比較する。オフセットの合計がセクタ数９０５よりも大きい場合には、LBAの所属するトラック番号をもう一つ大きくしてオフセットの計算をやり直す。最後にLBAの所属するトラック内の欠陥セクタによるオフセットを計算するためPLIST、GLIST、アドレス変換表を参照し、トラックの開始セクタからLBAの指定するセクタまでに含まれる欠陥セクタによるオフセットを計算する。LBAの所属するトラックの開始セクタのPBA９０４にこれらのオフセットを加えることで、LBAからPBAに変換できる。
【００４６】
図８のフロー図により、欠陥セクタのスリップ処理の手順を説明する。セクタの読み出しに要したリトライ回数がある閾値を超えると、該当セクタは近い将来データ読み出し不能になる欠陥セクタになり得ると判断し、該当セクタに対して図８に示した欠陥セクタのスリップ処理を実行する。
【００４７】
処理を開始すると、まずステップ８０１で該当セクタからデータを読み出す。ステップ８０１の終了後、ステップ８０２に進み、図６のバンド内次回書き込みセクタ管理表からPBA６０２を読み出す。ステップ８０２の終了後、ステップ８０３に進み、ステップ８０２で読み出したPBA にシークし、ステップ８０１で欠陥セクタになり得るセクタから読み出したデータを書き込む。ステップ８０３の終了後、ステップ８０４に進む。
【００４８】
ステップ８０４では、欠陥セクタになり得るセクタのPBAをGLISTに登録する。GLISTに登録した段階で、欠陥セクタになり得るセクタの状態が欠陥セクタとして確定する。ステップ８０４の終了後、ステップ８０５に進み、図９のトラック情報管理表に欠陥セクタとなり得るセクタとスリップ処理に使われたセクタの情報を登録する。例えば、欠陥セクタとなり得るセクタとスリップ処理した先のセクタが同一トラック上に存在する場合には、該当するトラックの欠陥セクタ数９０２とスリップ処理に使われたセクタ数９０３の値をそれぞれ一つ増やす。もしも欠陥セクタになり得るセクタとスリップ処理に使われたセクタがそれぞれ異なるトラック上に存在する場合には、それぞれのトラックにおいて、欠陥セクタ数９０２とスリップ処理に使われたセクタ数９０３の値をそれぞれ一つ増やす。ステップ８０５の終了後、ステップ８０６に進み、欠陥セクタになり得るセクタに割り当てられていたLBAとスリップ処理に使われたセクタのPBA とのペアをアドレス変換表に登録する。ステップ８０６の終了後、ステップ８０７に進む。
【００４９】
ステップ８０７では、図４のバンド構成管理表の予備セクタ数を一つ減らす。これは、欠陥セクタのスリップ処理のためにLBA割り当て済みのセクタを一つ消費したため、予備セクタ３０２の一つのセクタを新たにLBA割り当て済みのセクタ３０１に割り当て直すことに相当する。ステップ８０７の終了後、ステップ８０８に進み、図５のバンド内欠陥セクタ管理表の該当するバンドのスリップ処理した欠陥セクタ数５０２を一つ増やす。ステップ８０８の終了後、ステップ８０９に進み、図６の次回書き込むセクタ管理表の次回書き込むセクタに割り当てられたPBA６０２の値を一つ増やす。これは欠陥セクタのスリップ処理のために一つ消費したLBAの割り当て済みセクタ３０１のLBA を割り当て直す作業に相当する。
【００５０】
図６のバンド内次回書き込みセクタ管理表と図９のトラック情報管理表を更新することで、スリップ処理を行った際の動的なLBAを割り当て直しが可能であるとともに、先に説明したLBAからPBAへの変換手順により既存のデータへもアクセス可能である。
【００５１】
図８の手順では、新たに発見した欠陥セクタをスリップ処理できる。図８の手順ではバンド内の既存のデータの末尾にスリップ処理するため、ゾーン内などに予め設けてあるスペアセクタにスリップ処理するよりもヘッドの移動距離が少なくなり、欠陥セクタを待避したセクタへのアクセスが高速になる。本発明による欠陥セクタ管理方法では、スリップ処理からスキップ処理へと欠陥セクタの処理方式をホストからの書き込みコマンドの処理と並行して動的に切り替えることで、欠陥セクタを待避したセクタへのアクセスに要するペナルティを削減できる。
【００５２】
図１０のフロー図により、シーケンシャル書き込みと欠陥セクタのスキップ処理の手順を説明する。シーケンシャル書き込みかどうかは、書き込みコマンドがシーケンシャルアクセスのコマンドであるかどうか、あるいは連続アドレスに対する書き込みであるかどうかによって判定できる。書き込みコマンドがシーケンシャルアクセスのコマンドである場合、あるいは連続アドレスに対する書き込みである場合には、シーケンシャル書き込みであると判定する。本発明では、シーケンシャル書き込みと並行して欠陥セクタをスリップ処理からスキップ処理に切り替えるため、既存のデータのバックアップとリストアが不要になり、リアルタイムにスリップ処理からスキップ処理へと切り替えられる。
【００５３】
処理を開始すると、まずステップ１００１に進む。ステップ１００１では、シーケンシャル書き込みの開始セクタにシークする。セクタのLBAがGLISTやアドレス変換表に登録された欠陥セクタの場合には、データを待避した交替セクタには飛ばず、もとの欠陥セクタにシークする。ステップ１００１の終了後ステップ１０１０に進み、該当セクタがGLISTに登録されたスリップ処理されたセクタかどうかを検査する。GLISTに登録されている場合にはステップ１０１１に進み、GLISTに登録されていない場合には１００２に進む。
【００５４】
ステップ１０１１では、該当セクタをスキップし、次のセクタにシークする。ステップ１０１１の終了後、ステップ１０１２に進み、スキップした欠陥セクタをGLISTからPLISTに登録し直す。ステップ１０１２の終了後、ステップ１０１３に進み、アドレス変換表からスリップ処理からスキップ処理に切り替えた欠陥セクタの情報を削除する。ステップ１０１３の終了後、ステップ１０１４に進み、図５のバンド内欠陥セクタ管理表において書き込み対象のスリップ処理セクタ数５０２を一つ減らし、スキップ処理セクタ数５０１を一つ増やす。これは欠陥セクタ処理をスリップ処理からスキップ処理へと切り替えたことに対応する。ステップ８０７では新たにスキップ処理を行ったのでスリップ処理セクタ数のみ一つ増えたが、ステップ１０１４ではスリップ処理をスキップ処理に切り替えるため、スリップ処理セクタ数が一つ減り、スキップ処理セクタ数が一つ増える。ステップ１０１４の終了後、ステップ１００２に進む。
【００５５】
ステップ１００２では、セクタにデータを書き込む。ステップ１００２の終了後、ステップ１０２０に進み、全てのシーケンシャル書き込みが終了したかどうかを検査する。終了した場合には処理を終了し、終了していない場合にはステップ１０２１に進む。ステップ１０２１では、次のセクタにシークする。ステップ１０２１の終了後、ステップ１０３０に進み、バンドの末尾に到達したか、すなわちLBA割り当て済みのセクタ３０１を全て使い切ったかどうかを検査する。バンド末尾に到達した場合にはステップ１０３１に進み、到達していない場合にはステップ１０１０に進む。ステップ１０３１では、次のバンドの開始セクタへシークする。ステップ１０３１の終了後、ステップ１０１０に進む。
【００５６】
従来の方式ではシーケンシャル書き込みをトリガにしてスリップ処理からスキップ処理へと切り替えるのではないため、あるLBAの範囲内にある全てのセクタのデータを交替セクタに待避したデータも含めてバックアップした後に、スリップ処理をスキップ処理に切り替え、その後に、バックアップしたデータをリストアする必要があった。記憶媒体上のデータのバックアップとリストアを行うため、切り替え処理中はディスク装置の性能がほぼ半減してしまう。これに対して本方式では、シーケンシャル書き込みの際にスリップ処理からスキップ処理への切り替え処理を行うため、既存のデータをバックアップする必要がない。このため本方式では、切り替え処理に伴うディスク装置の性能劣化が発生しない。
【００５７】
本発明の一実施例で用いるデータ構造は、バンド構造の導入により新たに導入されたデータ構造を除くと、従来の欠陥セクタ管理方法で用いるデータ構造とほぼ同規模であり、主記憶７０２に格納可能な規模である。
【００５８】
図５のバンド内欠陥セクタ管理表に登録した情報をS.M.A.R.Tなどのディスク装置の管理コマンドで読み出せるように構成すると、ディスク装置を接続したホストから、ディスク装置の各バンド内のスリップ処理した欠陥セクタ数、スキップ処理した欠陥セクタ数、欠陥セクタの総数を知ることができる。
【００５９】
LBAを割り当て済みのセクタ３０１と予備セクタ３０２との配置は、図３の形式に限らない。シーケンシャル書き込み可能な任意の配置で３０１と３０２とを配置できる。
【００６０】
隣接トラック同士を部分的に重ねる方式は、図１の形式に限らない。シーケンシャル書き込み可能な任意の方式でトラックを部分的に重ね書きできる。
【００６１】
隣接トラック同士を部分的に重ね書きしない場合であっても、シーケンシャル書き込みをするのであれば本方式を適用できる。
【００６２】
本実施例では一つのバンドの中で閉じた形で欠陥セクタを処理しているが、複数のバンドに跨る形で欠陥セクタを処理するように本方式を容易に拡張できる。
【００６３】
AV用途などリアルタイム性を要するデータやディスク装置によるテープエミュレーションをしたデータの記録などに、本発明による欠陥セクタ管理方法は最適である。
【００６４】
本発明の別の実施形態であるディスク装置を以下に示す。
１．ある連続する論理ブロックアドレス範囲のユーザデータセクタと前記ユーザデータセクタ用の予備セクタを記憶媒体のある連続する物理ブロックアドレスに割り当てるアドレス割り当て手段と、
上位装置からのシーケンシャル書き込み検出手段と、
前記シーケンシャル書き込みの対象に前記連続する論理ブロックアドレスが含まれる場合に、前記論理ブロックアドレスの中でスキップ処理された欠陥セクタが存在するか検査する欠陥セクタ検査手段と、
欠陥セクタに当初割り当てられていた論理ブロックアドレスにアクセスする際に、前記欠陥セクタと異なるセクタに対してアクセスするように設定されている場合に、前記ユーザデータセクタの中で前記欠陥セクタよりも大きな論理ブロックアドレスを持つセクタと、前記予備セクタの中で最も小さな論理ブロックアドレスを持つセクタ、に対して、前記連続する論理ブロックアドレスの中で前記欠陥セクタに割り当てられていた論理ブロックアドレス以降の論理ブロックアドレスを割り当てる論理ブロックアドレス割り当て手段と、
を備えることを特徴とするディスク装置。
【００６５】
２．ある連続する論理ブロックアドレスの範囲のユーザデータセクタと前記ユーザデータセクタ用の予備セクタを記憶媒体のある連続する物理ブロックアドレスに割り当てるアドレス割り当て手段と、
上位装置からのシーケンシャル書き込み検出手段と、
前記シーケンシャル書き込みの対象に前記連続する論理ブロックアドレスが含まれ、前記連続する論理ブロックアドレスないに近い将来欠陥セクタとなり得るセクタを発見した場合に、前記欠陥セクタとなり得るセクタからデータを読み出すデータ読み出し手段と、
前記シーケンシャル書き込みで最も最近書き込んだセクタの次のセクタに前記読み出したデータを退避する、データ退避手段と、
前記欠陥セクタとなり得るセクタに割り当てられていた論理ブロックアドレスを前記データを退避したセクタに割り当てる、第一の論理ブロックアドレス割り当て手段と、
前記ユーザデータセクタの中で前記データを書き込んだセクタよりも大きな物理ブロックアドレスを持つセクタと、前記予備セクタの中で最も小さな物理ブロックアドレスを持つセクタ、に対して、前記データを退避したセクタに当初割り当てられていた論理ブロックアドレス以降の論理ブロックアドレスを割り当てる、第二の論理ブロックアドレス割り当て手段と、
前記近い将来欠陥セクタとなり得るセクタを欠陥セクタとして登録する欠陥セクタ登録手段と、
を備えることを特徴とするディスク装置。
【００６６】
３．前項１又は２のディスク装置において、前記アドレス割り当て手段において、前記ユーザセクタと前記予備セクタとを複数トラックからなる連続する物理ブロックアドレス空間に割り当てることを特徴とするディスク装置。
【００６７】
４．前項３のディスク装置において、前記アドレス割り当て手段において、前記予備セクタを前記連続するブロックアドレス空間の上位アドレス側に割り当てることを特徴とするディスク装置。
【００６８】
５．前項３又は４のディスク装置において、前記アドレス割り当て手段において、前記複数トラックを連続トラックで構成することを特徴とするディスク装置。
【００６９】
６．前項５のディスク装置において、前記アドレス割り当て手段において、前記連続トラックの各隣接トラックが部分的に重ね書きされていることを特徴とするディスク装置。
【００７０】
７．前項１又は２のディスク装置において、前記連続する物理ブロックアドレスの範囲内に含まれる欠陥セクタ数を数える欠陥セクタ数計測手段を備えることを特徴とするディスク装置。
【００７１】
８．前項２のディスク装置において、前記連続する物理ブロックアドレスの範囲内に含まれる前記登録した欠陥セクタ数を数える欠陥セクタ数計測手段を備えることを特徴とするディスク装置。
【００７２】
９．前項１又は２のディスク装置において、論理ブロックアドレスを他のセクタに割り当てた欠陥セクタ数を数える欠陥セクタ計測手段を備えることを特徴とするディスク装置。
１０．前項７，８又は９のディスク装置において、前記上位装置に対して、計測した欠陥セクタ数を通知する手段を備えることを特徴とするディスク装置。
【図面の簡単な説明】
【００７３】
【図１】隣接トラックを部分的に重ね書きする場合のトラック配置の概念図。
【図２】バンド構造の概念図。
【図３】本発明の一実施例による、欠陥セクタ管理手順を示す図。
【図４】本発明の一実施例による、バンド構成情報管理表を示す図。
【図５】本発明の一実施例による、バンド内欠陥セクタ数管理表を示す図。
【図６】本発明の一実施例による、バンド内次回書き込みセクタ管理表を示す図。
【図７】ディスク装置のブロック図。
【図８】本発明の一実施例による、欠陥セクタのスリップ処理のフロー図。
【図９】本発明の一実施例による、トラック情報管理表を示す図。
【図１０】本発明の一実施例による、シーケンシャル書き込みのフロー図。
【符号の説明】
【００７４】
１０１ トラック
１０２ トラック
１０３ トラック
１０４ トラック
１０５ トラック
１１１ トラック幅
１２１ 書き込みヘッド
１２２ 読み出しヘッド
２０１ バンド
２０２ バンドギャップ
３０１ LBA割り当て済みのセクタ
３０２ 予備セクタ
３０３ バンド
３１１ ユーザデータ記録済みのセクタ
３１２ 欠陥セクタ
３１３ 欠陥セクタのスリップ処理したセクタ
３１４ LBAを割り当て直したセクタ
３２１ 欠陥セクタをスキップ処理したセクタ
４０１ バンド識別子
４０２ バンドの開始LBA
４０３ バンドの終了LBA
４０４ バンドの開始トラック番号
４０５ バンドの終了トラック番号
４０６ バンド内の予備セクタ数
５０１ バンド内でスキップ処理した欠陥セクタ数
５０２ バンド内でスリップ処理した欠陥セクタ数
６０１ バンド内で次回書き込むセクタに割り当てられたLBA
６０２ バンド内で次回書き込むセクタに割り当てられたPBA
７０１ フラッシュメモリ
７０２ 主記憶
７０３ キャッシュメモリ
７０４ メモリコントローラ及びマイクロプロセッサ
７０５ ハードディスクコントローラ及びSCSIプロトコルコントローラ
７０６ ディスクインタフェース
７０７ サーボコントローラ
７０８ リードライトチャネル
９０１ トラック番号
９０２ トラック内の欠陥セクタ数
９０３ トラック内でスリップ処理に使われたセクタ数
９０４ トラックの開始セクタのPBA
９０５ トラック内セクタ数
【図１】
2006338739.tif 000003
【図２】
2006338739.tif 000004
【図３】
2006338739.tif 000005
【図４】
2006338739.tif 000006
【図５】
2006338739.tif 000007
【図６】
2006338739.tif 000008
【図７】
2006338739.tif 000009
【図８】
2006338739.tif 000010
【図９】
2006338739.tif 000011
【図１０】
2006338739.tif 000012