(57)【特許請求の範囲】
【請求項１】
ディスク媒体へのデータ書き込みと当該ディスク媒体からのデータ読み出しとが可能なディスク記憶システムにおいて、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが前記ディスク媒体上で複数のデータブロックに断片化されているか否かを判定する断片化判定手段と、
前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定された場合、当該シーケンシャルデータを前記ディスク媒体から読み出して前記ホストシステムに転送する第１の制御と並行して、前記ディスク媒体から読み出された前記データを前記ディスク媒体の連続領域に書き込む第２の制御を実行する制御手段と
を具備することを特徴とするディスク記憶システム。
【請求項２】
前記制御手段は、前記要求されたシーケンシャルデータの総量以上の大きさの連続する空き領域を前記連続領域として確保して前記第２の制御を実行することを特徴とする請求項１記載のディスク記憶システム。
【請求項３】
前記制御手段は前記第２の制御として、前記要求されたシーケンシャルデータを構成する前記複数の断片化されたデータブロックのうち、先頭のデータブロックを除くデータブロックを、当該先頭データブロックが記録されている前記ディスク媒体の領域の最後尾位置から順に前詰めで連続して書き込む制御を実行することを特徴とする請求項１記載のディスク記憶システム。
【請求項４】
ディスク媒体へのデータ書き込みと当該ディスク媒体からのデータ読み出しとが可能なディスク記憶システムにおいて、
少なくとも前記ディスク媒体からのデータ読み出しが可能な第１のヘッドと、少なくとも前記ディスク媒体へのデータ書き込みが可能な、前記第１のヘッドとは独立に動作可能な第２のヘッドと、
前記ディスク媒体から読み出されたデータを一時格納するためのバッファメモリと、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが前記ディスク媒体上で複数のデータブロックに断片化されているか否かを判定する断片化判定手段と、
前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定された場合、当該シーケンシャルデータを前記第１ヘッドにより前記ディスク媒体から読み出させて前記バッファメモリに格納する第１の制御と、前記バッファメモリに格納されたデータを前記ホストシステムに転送する第２の制御と、前記バッファメモリに格納されたデータを前記第２のヘッドにより前記ディスク媒体の連続領域に書き込ませる第３の制御とを並行して実行する制御手段と
を具備することを特徴とするディスク記憶システム。
【請求項５】
前記要求されたシーケンシャルデータの総量以上の大きさの連続する空き領域が前記ディスク媒体に存在するか否かを判定する空き領域判定手段を更に具備し、
前記制御手段は、前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定され、且つ当該データの総量以上の大きさの前記連続する空き領域が存在すると前記空き領域判定手段により判定された場合に、当該空き領域を前記連続領域として前記第３の制御を実行することを特徴とする請求項４記載のディスク記憶システム。
【請求項６】
前記要求されたシーケンシャルデータを構成する前記複数のデータブロックの間の前記ディスク媒体上の領域が他のデータの領域に用いられているか否かを判定するデータブロック間領域判定手段を更に具備し、
前記制御手段は、前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定され、且つ当該データを構成する前記複数のデータブロックの間の領域が他のデータ領域に用いられていないと前記ブロック間領域判定手段により判定された場合に、前記３の制御として、当該シーケンシャルデータを構成する前記複数のデータブロックのうち先頭のデータブロックを除くデータブロックを、当該先頭データブロックが記録されている前記ディスク媒体の領域の最後尾位置から順に前詰めで連続して前記第２のヘッドにより書き込ませる制御を実行することを特徴とする請求項４記載のディスク記憶システム。
【請求項７】
前記要求されたシーケンシャルデータの総量以上の大きさの連続する空き領域が前記ディスク媒体に存在するか否かを判定する空き領域判定手段と、
前記要求されたシーケンシャルデータを構成する前記断片化されたデータブロックの間の前記ディスク媒体上の領域が他のデータの領域に用いられているか否かを判定するブロック間領域判定手段とを更に具備し、
前記制御手段は、
前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定され、且つ当該データの総量以上の大きさの前記連続する空き領域が存在すると前記空き領域判定手段により判定された場合には、当該空き領域を前記連続領域として前記第３の制御を実行し、前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定され、且つ当該データの総量以上の大きさの前記連続する空き領域が存在しないと前記空き領域判定手段により判定され、且つ当該データを構成する前記複数のデータブロックの間の領域が他のデータ領域に用いられていないと前記ブロック間領域判定手段により判定された場合には、前記３の制御として、当該シーケンシャルデータを構成する前記複数のデータブロックのうち先頭のデータブロックを除くデータブロックを、当該先頭データブロックが記録されている前記ディスク媒体の領域の最後尾位置から順に前詰めで連続して前記第２のヘッドにより書き込ませる制御を実行する
ことを特徴とする請求項４記載のディスク記憶システム。
【請求項８】
同心円状の複数の物理トラックが形成されたディスク媒体と、
前記物理トラックへのデータ書き込みと当該物理トラックからのデータ読み出しとに用いられるヘッドと、
前記ディスク媒体から読み出されたデータを一時格納するためのバッファメモリと、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが記録されている前記ディスク媒体上の前記各物理トラックを単位に、当該トラックに記録されている前記シーケンシャルデータの少なくとも一部をなすデータが複数のデータブロックに断片化されているか否かを判定する断片化判定手段と、
前記物理トラックに記録されている前記シーケンシャルデータの少なくとも一部をなすデータが前記複数のデータブロックに断片化されていると前記断片化判定手段により判定される毎に、当該複数のデータブロックの間の領域が他のデータの領域に用いられているか否かを判定するブロック間領域判定手段と、
前記複数のデータブロックの間の領域が他のデータ領域に用いられていないと前記ブロック間領域判定手段により判定された場合、当該複数のデータブロックを対応する前記物理トラックから前記ヘッドにより読み出させて前記バッファメモリに格納する第１の制御と、前記バッファメモリに格納された前記複数のデータブロックを前記ホストシステムに転送する第２の制御と、前記バッファメモリに格納された前記複数のデータブロックを当該ブロックが記録されていた前記物理トラックの連続領域に前記ヘッドにより前詰めで連続して書き込ませる第３の制御とを並行して実行する制御手段と
を具備することを特徴とするディスク記憶システム。
【請求項９】
前記制御手段は、前記シーケンシャルデータが複数の連続する物理トラックに亘って記録されている場合、先頭の物理トラックについては、当該物理トラック記録されていた前記複数のデータブロックのうちの先頭のデータブロックの位置が変わらないように前記第３の制御を実行し、残りの物理トラックについては、その先頭部分に、先行する物理トラックの最後のデータブロックの読み出し終了後からの前記ヘッドの移動時間に相当する未使用領域を確保して、その未使用領域に後続する領域に先頭データブロックから順に配置されるように前記第３の制御を実行することを特徴とする請求項８記載のディスク記憶システム。
【請求項１０】
データの記録再生が可能な複数のディスクドライブと、
前記複数のディスクドライブを制御するディスクアレイコントローラとを具備し、
前記コントローラは、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが前記ディスクドライブ内で複数のデータブロックに断片化されているか否かを判定する断片化判定手段と、
前記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定された場合、当該シーケンシャルデータを対応する前記ディスクドライブから読み出して前記ホストシステムに転送する第１の制御と、前記ディスクドライブから読み出された前記データを当該ディスクドライブとは異なる別の前記ディスクドライブに書き込む第２の制御とを並行して実行する制御手段と
を有することを特徴とするディスクアレイ型ディスク記憶システム。
【請求項１１】
ディスク媒体へのデータ書き込みと当該ディスク媒体からのデータ読み出しとが可能なディスク記憶システムにおけるデフラグメンテーション方法であって、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが前記ディスク媒体上で複数のデータブロックに断片化されているか否かを判定するステップと、
前記要求されたシーケンシャルデータを前記ディスク媒体から読み出して前記ホストシステムに転送するステップと、
前記要求されたシーケンシャルデータが断片化されていると判定された場合、前記転送ステップと並行して、前記ディスク媒体から読み出された前記データを前記ディスク媒体の連続領域に書き込むステップと
を具備することを特徴とするデフラグメンテーション方法。
【請求項１２】
少なくともディスク媒体からのデータ読み出しが可能な第１のヘッドと、少なくとも前記ディスク媒体へのデータ書き込みが可能な、前記第１のヘッドとは独立に動作可能な第２のヘッドとを備えたディスク記憶システムにおけるデフラグメンテーション方法であって、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが前記ディスク媒体上で複数のデータブロックに断片化されているか否かを判定するステップと、
前記複数のデータブロックに断片化されていると判定された前記シーケンシャルデータを前記第１のヘッドにより前記ディスク媒体から読み出して前記ホストシステムに転送するステップと、
前記転送ステップと並行して、前記ディスク媒体から読み出された前記データを前記第２のヘッドにより前記ディスク媒体の連続領域に書き込むステップと
を具備することを特徴とするデフラグメンテーション方法。
【請求項１３】
同心円状の複数の物理トラックが形成されたディスク媒体と、前記物理トラックへのデータ書き込みと当該物理トラックからのデータ読み出しとに用いられるヘッドとを備えたディスク記憶システムにおけるデフラグメンテーション方法であって、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが記録されている前記ディスク媒体上の前記各物理トラックを単位に、当該トラックに記録されている前記シーケンシャルデータの少なくとも一部をなすデータが複数のデータブロックに断片化されているか否かを判定するステップと、
前記物理トラックに記録されている前記シーケンシャルデータの少なくとも一部をなすデータが複数のデータブロックに断片化されていると判定される毎に、当該断片化されたデータブロックの間の領域が他のデータの領域に用いられているか否かを判定するステップと、
前記断片化された複数のデータブロックの間の領域が他のデータ領域に用いられていないと判定される毎に、当該複数のデータブロックを対応する前記物理トラックから前記ヘッドにより読み出して前記ホストシステムに転送するステップと、
前記転送ステップと並行して、当該転送ステップで前記物理トラックから読み出された前記断片化されたデータブロックを当該物理トラックの連続領域に前記ヘッドにより前詰めで連続して書き込むステップと
を具備することを特徴とするデフラグメンテーション方法。
【請求項１４】
データの記録再生が可能な複数のディスクドライブを備えたディスクアレイ型ディスク記憶システムにおけるデフラグメンテーション方法であって、
ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが前記ディスクドライブ内で複数のデータブロックに断片化されているか否かを判定するステップと、
前記複数のデータブロックに断片化されていると判定された前記シーケンシャルデータを対応する前記ディスクドライブから読み出して前記ホストシステムに転送するステップと、
前記転送ステップと並行して、前記ディスクドライブから読み出された前記データを当該ディスクドライブとは異なる別の前記ディスクドライブに書き込むステップと
を具備することを特徴とするデフラグメンテーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、編集等によりディスク媒体上で断片化されたシーケンシャルデータを自動的にデフラグメンテーションするのに好適なデフラグメンテーション機能を有するディスク記憶システム、及び同システムにおけるデフラグメンテーション方法に関する。
【０００２】
【従来の技術】
近時、ディスク記憶システム、例えば磁気ディスク装置（以下、ＨＤＤと略称する）の記憶容量の増大に伴い、当該ＨＤＤを、デジタル音楽データ、デジタル映像データ等のいわゆるＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）データを記録するためのＡＶ  ＨＤＤとして用いるようになっている。ＡＶデータは時間的に連続したシーケンシャルデータであることから、ＡＶストリーム（データストリーム）とも呼ばれる。
【０００３】
ユーザは、ＨＤＤに記録されているＡＶデータを、ホストシステムから編集できる。この編集によりＡＶデータの不要部分がカットされると、必ずデータの断片化（フラグメンテーション）が発生し、ＡＶ  ＨＤＤのパフォーマンスが低下してしまう。そこで、このデータの断片化を改善するためには、適当なタイミングでＨＤＤ内のデータの並び替え（デフラグメンテーション）を行う必要がある。
【０００４】
従来、このデフラグメンテーションを行うには、当該デフラグメンテーションのためのユーティリティプログラムをユーザの操作により任意のタイミングで起動する必要があった。このユーティリティプログラムは、ホストシステム上で動作して、ＨＤＤ内の断片化されたデータを一度ホストシステムのメモリに読み出して当該データが連続して格納されるように並び替えた上で、ＨＤＤに書き込む。これによりＨＤＤ内でのＡＶデータの断片化が解消され、ＨＤＤのパフォーマンスが低下するのを防止できる。
【０００５】
一方、特開平１０−１１３３７号公報には、利用頻度の高いデータを断片化の進行していない領域に移動させる技術が記載されている。この技術によれば、利用頻度の高い断片化されたデータが連続領域に移動されることで、当該データの読み出し時のパフォーマンスの向上が図れる。また、断片化されている領域が減少するために、ガーベジコレクションによって処理されるデータ量を減らすことができる。
【０００６】
【発明が解決しようとする課題】
上記したように従来は、ＨＤＤに格納されているＡＶデータの断片化を改善するには、ホストシステム上でユーティリティプログラムを起動してＡＶデータのデフラグメンテーションを実行する必要があった。この結果、ＨＤＤのパフォーマンス低下は防止できるものの、ホストシステムのパフォーマンスの低下を招くという問題があった。また、デフラグメンテーションが実行されている期間は、ホストシステムとＨＤＤとの間で、ＡＶストリームの再生などのデータ入出力が一切できないという問題もあった。
【０００７】
そこでホストシステムのパフォーマンスの低下を防止するために、ＡＶ  ＨＤＤに、ホストシステムから独立にデフラグメンテーションを実行する機能を持たせることが考えられる。しかし、デフラグメンテーションが実行されている期間、ホストシステムとＨＤＤとの間でデータ入出力が行えない点については何ら改善されない。
【０００８】
また、ＨＤＤにおけるデフラグメンテーションに、上記特開平１０−１１３３７号公報に記載されている技術を適用し、利用頻度の高いＡＶデータについてのみデフラグメンテーションを行うことも考えられる。この場合、デフラグメンテーションに要するＨＤＤの負荷を極力減らすことが可能となり、また利用頻度の高いＡＶデータの読み出し時のパフォーマンスの向上も図れる。しかし、デフラグメンテーションが実行されている期間、ホストシステムとＨＤＤとの間で、ＡＶストリームの再生などのデータ入出力ができない点では、従来と変わらない。また、利用頻度の低いＡＶデータの読み出し時のパフォーマンスは低いままである。
【０００９】
本発明は上記事情を考慮してなされたものでその目的は、ホストシステムから要求された時間的に連続したシーケンシャルデータを再生するのと並行して、当該再生されたデータを連続領域に書き込むことにより自動的にデフラグメンテーションが行えるディスク記憶システム、及び同システムにおけるデフラグメンテーション方法を提供することにある。
【００１０】
【課題を解決するための手段】
本発明は、ディスク媒体へのデータ書き込みと当該ディスク媒体からのデータ読み出しとが可能なディスク記憶システムにおいて、ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが上記ディスク媒体上で複数のデータブロックに断片化されているか否かを判定する断片化判定手段と、上記要求されたシーケンシャルデータが断片化されていると前記断片化判定手段により判定された場合、当該シーケンシャルデータをディスク媒体から読み出してホストシステムに転送する制御と並行して、上記ディスク媒体から読み出されたデータをディスク媒体の連続領域に書き込む制御を実行する制御手段とを備えたことを特徴とする。
【００１１】
このような構成においては、ホストシステムからディスク記憶システムに対してＡＶストリーム等のシーケンシャルデータの読み出し（再生）が要求されると、当該シーケンシャルデータが編集等により複数のデータブロックに断片化されている場合には、当該シーケンシャルデータの再生と並行して、当該シーケンシャルデータを構成する上記複数のデータブロックがディスク記憶媒体の連続領域に書き込まれる。このように上記の構成においては、ホストシステムから要求されたシーケンシャルデータの再生とほぼ同時に、当該シーケンシャルデータのデフラグメンテーションをディスク記憶システム側で自動的に行うことができ、しかもホストシステム側ではデフラグメンテーションを何ら意識する必要がない。
【００１２】
上記の構成において、要求されたシーケンシャルデータの総量以上の大きさの連続する空き領域を、上記連続領域として用いるとよい。また、要求されたシーケンシャルデータが記録されていた領域を用い、当該シーケンシャルデータを構成する上記複数の断片化されたデータブロックのうち、先頭のデータブロックを除くデータブロックを、当該先頭データブロックが記録されているディスク媒体の領域の最後尾位置から順に前詰めで連続して書き込むとよい。ここでは、要求されたシーケンシャルデータの総量以上の大きさの連続する空き領域が存在しない場合にも、当該シーケンシャルデータの再生と並行しての自動デフラグメンテーションが可能となる。
【００１３】
以上の自動デフラグメンテーションを効率的に行うには、磁気ディスク装置（ＨＤＤ）等のディスク記憶システムにおいては、少なくともデータ読み出しが可能な第１のヘッドと、少なくともデータ書き込みが可能な、上記第１のヘッドとは独立に動作可能な第２のヘッドとを備え、第１のヘッドによるシーケンシャルデータの読み出しと、この第１のヘッドにより読み出されたデータの第２のヘッドによる上記連続領域への書き込みとを並行して行えばよい。
【００１４】
ディスク記憶システムには、当該システムとホストシステムとの間のデータ転送速度の違いを吸収するために、ディスク媒体から読み出されたデータを一時格納するためのバッファメモリが設けられているのが一般的である。したがって、ディスク媒体から読み出されてバッファメモリに格納されたシーケンシャルデータを当該バッファメモリから読み出してディスク媒体の上記連続領域に書き込む制御を行うことで、シーケンシャルデータの再生と並行しての自動デフラグメンテーションを確実に行うことができる。この場合、デフラグメンテーションのための特別なバッファメモリを用意する必要はない。
【００１５】
また本発明のディスク記憶システムは、ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが記録されているディスク媒体上の各物理トラックを単位に、当該トラックに記録されているシーケンシャルデータの少なくとも一部をなすデータが複数のデータブロックに断片化されているか否かを判定する断片化判定手段と、上記物理トラックに記録されているシーケンシャルデータの少なくとも一部をなすデータが複数のデータブロックに断片化されていると上記断片化判定手段により判定される毎に、当該複数のデータブロックの間の領域が他のデータの領域に用いられているか否かを判定するブロック間領域判定手段と、上記複数のデータブロックの間の領域が他のデータ領域に用いられていないと判定された場合、当該複数のデータブロックを対応する物理トラックからヘッドにより読み出させてバッファメモリに格納する第１の制御と、上記バッファメモリに格納された上記複数のデータブロックをホストシステムに転送する第２の制御と、上記バッファメモリに格納された上記複数のデータブロックを当該ブロックが記録されていた物理トラックの連続領域に上記ヘッドにより前詰めで連続して書き込ませる第３の制御とを並行して実行する制御手段とを備えたことを特徴とする。
【００１６】
このような構成のディスク記憶システムにおいては、ヘッド１本でも、シーケンシャルデータの再生と並行しての自動デフラグメンテーションを行うことができる。但し、上記第１及び第２のヘッドを備えたディスク記憶システムよりも高速であることが好ましい。
【００１７】
また本発明は、データの記録再生が可能な複数のディスクドライブと、これら複数のディスクドライブを制御するディスクアレイコントローラとを備えたディスクアレイ型のディスク記憶システムにおいて、上記コントローラに、次の断片化判定手段と制御手段とを設けたことを特徴とする。ここで断片化判定手段は、ホストシステムから時間的に連続したシーケンシャルデータの読み出しが要求された場合、当該シーケンシャルデータが上記ディスクドライブ内で複数のデータブロックに断片化されているか否かを判定する。一方、制御手段は、上記要求されたシーケンシャルデータが断片化されていると断片化判定手段により判定された場合、当該シーケンシャルデータを対応するディスクドライブから読み出してホストシステムに転送する第１の制御と、上記ディスクドライブから読み出されたデータを当該ディスクドライブとは異なる別のディスクドライブに書き込む第２の制御とを並行して実行する。
【００１８】
このような構成のディスク記憶システムにおいては、通常のディスクドライブを用いながら、シーケンシャルデータの再生と並行しての自動デフラグメンテーションを確実に且つ高速に行うことができる。
【００１９】
以上の各手段、即ち制御手段、断片化判定手段、及びブロック間領域判定手段等は、所定の制御プログラムを実行するＣＰＵにより実現される。
なお、以上のディスク記憶システムに係る本発明は、方法（デフラグメンテーション方法）に係る発明としても成立する。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００２１】
［第１の実施形態］
図１は本発明の第１の実施形態に係る磁気ディスク装置の構成を示すブロック図である。図１において、データが記録される例えば複数の磁気ディスク１１は、スピンドルモータ（ＳＰＭ）１２により支持されている。各ディスク１１はスピンドルモータ１２により高速に回転する。各ディスク１１の各記録面に対応して、それぞれ２つのヘッド１３ａ（ＨＥＡＤ＃１）及びヘッド１３ｂ（ＨＥＡＤ＃２）が設けられている。但し、図では、作図の都合上、１つのディスク１１の一方の記録面に対応して設けられるヘッド１３ａ及び１３ｂのみが示されている。ヘッド１３ａ及び１３ｂは、ディスク１１へのデータ書き込み（データ記録）及びディスク１１からのデータ読み出し（データ再生）に用いられる、
ディスク１１の各記録面には、同心円状の多数のデータトラック（物理トラック）が形成されている。各トラックには、ヘッド１３ａ及び１３ｂのシーク・位置決め等に用いられるサーボデータが記録されたサーボエリアが等間隔で配置されている。サーボデータは、トラックコード（シリンダ番号）及びサーボバーストデータを含む。トラックコードは、データトラックを識別するためのトラックアドレスである。サーボバーストデータは、データトラックの目標位置にヘッドを位置決めするためのトラック追従動作に使用される位置誤差データである。サーボエリア間には複数のセクタ（データセクタ）が配置されている。各サーボエリアは、ディスク１１上では中心から各トラックを渡って放射状に等間隔で配置されている。
【００２２】
ヘッド１３ａ及び１３ｂは、それぞれ、互いに独立に駆動可能なロータリ型のアクチュエータ１４ａ及び１４ｂのアーム１５ａ及び１５ｂの先端に取り付けられている。アクチュエータ１４ａ及び１４ｂは、それぞれアーム１５ａ及び１５ｂをディスク１１の半径方向に独立して駆動するためのボイスコイルモータ１６ａ（ＶＣＭ＃１）及び１６ｂ（ＶＣＭ＃２）を含んでいる。
【００２３】
ＳＰＭ１２は、モータドライバ１７から供給される駆動電流（ＳＰＭ電流）により駆動される。アクチュエータ１４ａ及び１４ｂは、それぞれモータドライバ１７から独立に供給される駆動電流（ＶＣＭ電流）により駆動される。
【００２４】
ヘッド１３ａ及び１３ｂはヘッドＩＣ１９と接続されている。ヘッドＩＣ１９は、ヘッド１３ａまたは１３ｂにより読み出されたリード信号を増幅するリードアンプ、及びライトデータをライト電流に変換するライトアンプを有する。
【００２５】
ヘッドＩＣ１９は、リード／ライトＩＣ２０と接続されている。リード／ライトＩＣ２０は、リード信号に対するＡ／Ｄ（アナログ／ディジタル）変換処理、ライトデータの符号化処理及びリードデータの復号化処理等の各種の信号処理を実行する。リード／ライトＩＣ２０は、リード信号をパルス化してパルス化リードデータとして出力するパルス化機能と、ゲートアレイ２１からのタイミング信号（バーストタイミング信号）に応じてサーボデータ中のサーボバーストデータを抽出する機能とを有している。このサーボバーストデータはＣＰＵ２４に送られて、ヘッド１３ａまたは１３ｂを目標トラックの目標位置に位置決めするためのトラック追従制御に用いられる。
【００２６】
ゲートアレイ２１は、リード／ライトＩＣ２０から出力されるリードパルスからバーストタイミング信号を含む各種タイミング信号を生成する機能と、サーボデータに含まれているトラックコードを抽出する機能とを有している。このトラックコードは、ＣＰＵ２４に送られて、ヘッド１３ａまたは１３ｂを目標トラックに移動するシーク制御に用いられる。
【００２７】
ディスクコントローラ（ＨＤＣ）２２は、ＨＤＤを利用するホストシステムと接続されている。ホストシステムは、パーソナルコンピュータ等のデジタル機器である。ディスクコントローラ２２は、ホストシステムとの間のコマンド（ライトコマンド、リードコマンド等）、データの通信を制御するインタフェース制御機能と、リード／ライトＩＣ２０及びヘッドＩＣ１９を介してディスクｌ１との間のデータ転送を制御するディスク制御機能と、バッファメモリ２３を制御するバッファ制御機能とを有する。
【００２８】
バッファメモリ２３には、ディスクｌ１から読み出されてホストシステムに転送されるデータ（リードデータ）を一時格納するためのリードバッファ２３ａと、ホストシステムから転送されてディスク１ｌに書き込むべきデータ（ライトデータ）を一時格納するためのライトバッファ（ライトキャッシュ）２３ｂとが確保される。バッファメモリ２３は例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用いて構成される。
【００２９】
ＣＰＵ２４は、不揮発性メモリ、例えば書き換え可能な不揮発性メモリとしてのＦＲＯＭ（Ｆｌａｓｈ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２５に格納されている制御プログラムに従ってＨＤＤ全体の制御を実行する。この制御プログラムは、ヘッド１３ａ及び１３ｂを独立して動作させる制御ルーチンを含む。このルーチンでは、ホストシステムから要求されたＡＶデータを一方のヘッドでリードして時間的に連続したＡＶストリームとして再生しながら、リードしたデータを他方のヘッドでディスク１１の連続領域にライトする制御が行われるようになっている。このＦＲＯＭ２５には、後述する管理情報テーブル５００も格納される。
【００３０】
ＣＰＵ２４には、ＦＲＯＭ２５とＲＡＭ２６とが接続されている。ＲＡＭ２６は、ＣＰＵ２４のワーク領域等を提供する。
ゲートアレイ２１、ディスクコントローラ２２、ＨＤＤ２３、ＣＰＵ２４、ＦＲＯＭ２５及びＲＡＭ２６は、ＣＰＵバス２７により相互接続されている。
【００３１】
次に図１の構成の動作を説明する。
まず、本実施形態の特徴は、図１のＨＤＤ内のディスク１１に記録された断片化したＡＶデータ、つまりディスク１１上では不連続であるが時間的には連続したＡＶシーケンシャルデータを、当該ＡＶデータの再生時に、ディスク１１内の連続した領域にまとめるデフラグメンテーション処理を並行して実行する点にある。このＨＤＤは、ＡＶストリームを直接入出力するＡＶ  ＨＤＤとして用いられ、当該ＨＤＤ自身がファイルシステムを管理するように構成されている。
【００３２】
ユーザは、ＨＤＤに記録されているＡＶデータを編集したい場合、ホストシステムを操作して、当該ホストシステムからＨＤＤに対して編集コマンドを発行させる。この編集コマンドが、指定位置のデータの消去を指定するイレース（ＥＲＡＳＥ）コマンドの場合、編集後には、データの断片化（フラグメンテーション）が必ず発生する。このＡＶデータの編集例を図２に示す。なお、以下の説明では、ＨＤＤに入出力されるＡＶデータと、ＨＤＤ（ディスク１１）に記録されているＡＶデータ（コンテンツ）とを区別するために、前者をＡＶストリームと呼び、後者をＡＶトラックと呼ぶ。このＡＶトラックは、一般に複数の物理トラックに記録される。但し、１物理トラック上に記録されるＡＶトラックも存在し得る。また、ＨＤＤには一般に複数のＡＶトラックが記録される。
【００３３】
図２には、ＡＶトラック２１０に対してデータの消去を指定する編集（イレース）コマンドＣＭＤ１〜ＣＭＤ３による編集（消去）処理が行われた結果、ＡＶトラック２１０からデータブロック２２１〜２２３が消去（カット）された、編集後のＡＶトラック２２０が得られた様子が示されている。このＡＶトラック２２０は、データの断片化が発生した結果、断片化されたデータブロック２３１〜２３３を含んでいる。
【００３４】
次に、断片化が発生しているＡＶトラックからＡＶストリームを再生する際のデフラグメンテーション処理の概要について、図３を参照して説明する。
まず、図３（ａ）に示すデフラグメンテーション前のＡＶトラック３００は、図２中の編集後のＡＶトラック２２０に相当する。このＡＶトラック３００では、編集処理の結果、データブロック３０１〜３０３がカットされ、残りがデータブロック３１１（Ａ），３１２（Ｂ）及び３１３（Ｃ）に断片化されている。
【００３５】
本実施形態では、ホストシステムからの要求により、このＡＶトラック３００からＡＶストリームを再生する場合に、当該ＡＶトラック３００に対するデフラグメンテーションを行う。そのため、２つのヘッド１３ａ（ＨＥＡＤ＃１）及び１３ｂの一方をＡＶストリームの再生に使用し、他方をリードしたデータをＨＤＤ（ディスク１１）の連続領域にライトするのに使用する。ここでは、ＨＥＡＤ＃１（ヘッド１３ａ）を再生（リード）用に、ＨＥＡＤ＃２（ヘッド１３ｂ）をライト用に、それぞれ使用する。
【００３６】
さて、ＨＥＡＤ＃１によるＡＶトラック３００からのデータリードは、図３（ｂ）に示すように、断片化されたデータブロック３１１（Ａ），３１２（Ｂ）及び３１３（Ｃ）の記録部分３２１，３２２，３２３を当該ＨＥＡＤ＃１が通る期間だけ行われる。これにより、データブロック３１１（Ａ），３１２（Ｂ）及び３１３（Ｃ）が連続してリードされ、ＡＶストリームとして再生される。
【００３７】
ＨＥＡＤ＃１によりリードされたデータブロック３１１（Ａ），３１２（Ｂ）及び３１３（Ｃ）は、図３（ｃ）に示すように、ＨＤＤ（ディスク１１）内の、ＡＶトラック３００が記録されている領域とは独立した別の連続領域に、データブロック３３１（Ａ′），３３２（Ｂ′）及び３３３（Ｃ′）として、ＨＥＡＤ＃２によりライトされる。つまり図３の例では、ＡＶトラック３００からのＡＶストリームの再生と並行して、そのＡＶストリームを構成するデータブロック３１１（Ａ），３１２（Ｂ）及び３１３（Ｃ）がデータブロック３３１（Ａ′），３３２（Ｂ′）及び３３３（Ｃ′）として連続して配置されたＡＶトラック３３０が、ＡＶトラック３００とは別の領域に記録される。
【００３８】
次に、図１中のＣＰＵ２４によるデフラグメンテーション処理の手順について、図４のフローチャートを参照して説明する。
まず、ＣＰＵ２４は、ホストシステムから与えられたＡＶストリームをリード（再生）することを要求するコマンドをディスクコントローラ２２経由で受信したものとする（ステップ４０１）。
【００３９】
ＣＰＵ２４はホストシステムからのリードコマンドを受け付けると、当該コマンドで要求されたＡＶストリーム（対象ストリーム）に断片化されたデータが含まれているか否かを判定する（ステップ４０２）。この判定は、後述するように、管理情報テーブル５００（図５参照）を参照することで実現される。
【００４０】
ＣＰＵ２４は、対象ストリームに断片化されたデータが含まれていない場合には、デフラグメンテーション処理は不要であると判断する。この場合、ＣＰＵ２４は、リードコマンドで指定されたＡＶトラックからデータをリードしてＡＶストリームを再生するための通常のリード制御を行う。
【００４１】
これに対し、対象ストリームに断片化されたデータが含まれている場合には、ＨＤＤ（ディスク１１）内に、当該対象ストリームをライトするのに十分な大きさ（つまり当該対象ストリームの総量以上）の連続する空き領域が存在するか否かを判定する（ステップ４０３）。もし、十分な連続する空き領域が存在しない場合、ＣＰＵ２４はデフラグメンテーション処理は不可能であると判定する。この場合もＣＰＵ２４は、指定されたＡＶトラックからデータをリードしてＡＶストリームを再生するための通常のリード制御を行う。
【００４２】
一方、十分な連続する空き領域が存在する場合、ＣＰＵ２４はデフラグメンテーション処理が可能であると判定する。この場合、ＨＥＡＤ＃１（ヘッド１３ａ）のリード開始位置をディスク１１上のＡＶトラック上の断片化しているデータブロックのうち、先頭のブロックの開始位置に設定すると共に、ＨＥＡＤ＃２（ヘッド１３ｂ）のライト開始位置をディスク１１上の上記空き領域の先頭位置に設定して、その各設定位置にＨＥＡＤ＃１及びＨＥＡＤ＃２を独立して移動させる（ステップ４０４）。したがって、図３に示すＡＶトラック３００が指定されたものとすると、ＨＥＡＤ＃１のリード開始位置はデータブロック３１１の先頭位置に設定される。
【００４３】
次にＣＰＵ２４は、リード開始位置が設定されたブロック（３１１）のサイズを転送サイズとして設定する（ステップ４０５）。そしてＣＰＵ２４は、ステップ４０４で設定されたリード開始位置からステップ４０５で設定された転送サイズ分のデータブロック（３１１）をＨＥＡＤ＃１によりリードさせ、ディスクコントローラ２２によりバッファメモリ２３内のリードバッファ２３ａに一時格納させる（ステップ４０６）。このステップ４０６では、リードバッファ２３ａに格納されたデータブロック（３１１）をホストシステムに転送する動作がディスクコントローラ２２により行われる。またステップ４０６では、リードバッファ２３ａに格納されたデータブロック（３１１）をディスクコントローラ２２からリード／ライトＩＣ２０及びヘッドＩＣ１９を介してＨＥＡＤ＃２に転送し、ステップ４０４で設定されたライト開始位置から始まる空き領域に当該ＨＥＡＤ＃２によりライトする動作も並行して行われる。
【００４４】
したがって、図３の例であれば、まず、ＡＶトラック３００の先頭データブロック３１１（Ａ）をＨＥＡＤ＃１によりリードしてリードバッファ２３ａに一時格納しながら、当該リードバッファ２３ａに格納されたデータブロック３１１（Ａ）をホストシステムに転送する通常のリード動作が行われる。そして、このリード動作と並行して、リードバッファ２３ａに格納されたデータブロック３１１（Ａ）を、ＡＶトラック３００とは別のディスク１１上の連続した領域に、データブロック３３１（Ａ′）としてＨＥＡＤ＃２によりライトするライト動作が行われる。このように本実施形態では、ディスク１１の記録面に対応して設けられた、独立に動作可能な２つのＨＥＡＤ＃１及びＨＥＡＤ＃２により、ディスク１１からのリード動作とディスク１１へのライト動作とが同時に行われる。
【００４５】
ＣＰＵ２４は、１データブロックの処理を終了すると、すべてのデータブロックの処理が終了したか否かを判定する（ステップ４０７）。もし、処理すべきデータブロックが残っているならば、ＣＰＵ２４はＨＥＡＤ＃１のリード開始位置を次のデータブロックの先頭位置に変更する（ステップ４０８）。そして、上記ステップ４０５以降の処理を実行する。これにより、次のデータブロックがリードされてリードバッファ２３ａを介してホストシステムに転送されると同時に、当該データブロックが先行するデータブロックに後続するディスク１１上の領域に連続してライトされる。したがって、図３の例であれば、ＡＶトラック３００の２番目のデータブロック３１２（Ｂ）がリードされてホストシステムに転送されると同時に、当該データブロック３１２（Ｂ）がデータブロック３３２（Ｂ′）として、データブロック３３１（Ａ′）に後続する領域にライトされる。
【００４６】
やがて、すべてのデータブロックの処理が終了すると、ＣＰＵ２４は、読み出しの対象となった元のＡＶトラック３００は不要になったものとして、当該ＡＶトラック３００を管理情報テーブル５００上で論理的に破棄して、一連の処理を終了する（ステップ４０９）。このときディスク１１には、図３の例であれば、ＡＶトラック３００内のデータブロック３１１（Ａ），３１２（Ｂ）及び３１３（Ｃ）がそれぞれデータブロック３３１（Ａ′），３３２（Ｂ′）及び３３３（Ｃ′）として連続して配置されたＡＶトラック３３０が、ＡＶトラック３００とは別の領域に記録されている。
【００４７】
このように本実施形態においては、次に列挙する効果を得ることができる。
【００４８】
１）デフラグメンテーション処理はＨＤＤにてホストシステムから独立に行われ、当該ＨＤＤの中だけで完結するため、ホストシステムの介在を一切必要としない。よって、デフラグメンテーション処理のためにホストシステムのパフォーマンスの低下を招く恐れがない。
【００４９】
２）ホストシステムから指定されたＡＶストリームを再生しながら、そのＡＶストリームを利用してデフラグメンテーション処理を行うため、デフラグメンテーションの実施期間でもホストシステムへのＡＶストリームの出力が途切れることなく行える。よって、ＨＤＤにおけるパフォーマンスが向上する。
【００５０】
３）上記２）と同様の理由でデフラグメンテーション処理を行う時間を特別に用意する必要がない。
４）ホストシステムから指定されたＡＶストリームを当該ホストシステムに転送するのに必要なリードバッファ２３ａに一時格納されたデータを利用してデフラグメンテーション処理を行うため、特別なメモリ領域を必要としない。
【００５１】
ここで、ＡＶストリームの再生及び記録に際して用いられる管理情報テーブル５００について説明する。
まず、図１のＨＤＤは、図５に示すデータ構造の管理情報テーブル５００を有している。このテーブル５００は、ＦＲＯＭ２５に格納されている。テーブル５００は、ＨＤＤ（内のディスク１１）に格納されている各ＡＶストリームと、そのＡＶストリームを構成する各データブロックの論理ブロックアドレス（ＬＢＡ）とを関連付けるのに用いられる。このためテーブル５００の各エントリは、管理の対象となるＡＶストリームを特定するための、ホストシステムから与えられた名称であるＡＶストリーム名の設定フィールド５０１、当該ストーリームをＨＤＤ内に格納するために予約された論理ブロックアドレスの範囲の設定フィールド（ＲＥＳＥＲＶＥ）５０２、及び当該ストーリームを実際に構成する各データブロックの論理ブロックアドレスの範囲の設定フィールド（ＬＢＡ）５０３を有する。
【００５２】
明らかなように、図３の管理情報テーブル５００において、予約（ＲＥＳＥＲＶＥ）はされているが、実際には使われていない論理ブロックアドレス（ＬＢＡ）のデータが編集によって削除された部分である。例えば図５（ａ）では、予約されている１０００−４５００番地のうち、１５０１−１５０３番地、２２０１−２４９９番地、２６３５−２９９９番地、３２８１−３５０１番地、及び４０４４−４５００番地の領域が、編集によってデータが削除された部分となる。
【００５３】
ＣＰＵ２４は、ホストシステムから指定されたＡＶストリームを再生する際、管理情報テーブル５００を参照し、当該ストリームを管理しているエントリのフィールド５０２に設定されているＬＢＡの範囲内に、ＬＢＡの不連続な部分があるか否かを調べる。これにより、図４のステップ４０２の判定、つまり対象ストリームに断片化データがあるか否かの判定が行われる。図５（ａ）の例のように、ＡＶストリームＳＴＲＥＡＭ＃１用に予約されている１０００−４５００番地の領域中に、編集によってデータが削除された部分があり、つまり対象ストリームに断片化データがある場合には、当該対象ストリームをライトするのに十分な大きさの連続する空き領域が検索される（ステップ４０３）。
【００５４】
空き領域の検索は、管理情報テーブル５００を参照することで行われる。ここでは、もし、空き領域が検索できた場合には、その空き領域を予約して管理情報テーブル５００に登録した上で、前記したようにデフラグメンテーション動作が行われる。図５（ｂ）には、現在ＳＴＲＥＡＭ＃１用に予約されている１０００−４５００番地の領域と同サイズで当該領域から独立した１０００１−１３５０１番地の領域が検索されて、デフラグメンテーション用に新たに予約されたことが示されている。この新たに予約された領域に、ＳＴＲＥＡＭ＃１の再生と並行して、そのＳＴＲＥＡＭ＃１を構成する断片化データを連続して書き込むことでデフラグメンテーションが実行される。
【００５５】
ＡＶストリームの再生時のデフラグメンテーション処理では、当該ストリーム（対象ストリーム）を構成する断片化された各データブロックのＬＢＡを検索する必要がある。このＬＢＡの検索は、管理情報テーブル５００を参照することで行われる。例えば、図４中のステップ４０４及び４０８でＨＥＡＤ＃１のリード開始位置を設定する際には、管理情報テーブル５００を参照し、対象ストリームを管理しているエントリのフィールド５０３から対象とするデータブロックの先頭ＬＢＡを取得する。このＬＢＡ（の物理アドレス）がリード開始位置を示す。また、データブロックの先頭ＬＢＡと最終ＬＢＡとから、図４中のステップ４０５で設定する転送サイズが決定される。図５のＡＶストリームＳＴＲＥＡＭ＃１の例では、最初に予約された１０００−４５００番地の領域のうち、１０００−１５００番地、１５０４−２２００番地、２５００−２６３４番地、３０００−３２８０番地、及び３５０２−４０４３番地の領域に断片化されたデータブロックが記録されていることから、ＨＥＡＤ＃１のリード開始位置として、１０００番地、１５０４番地、２５００番地、３０００番地、及び３５０２番地が順に設定される。また、断片化された各データブロックの転送サイズとして、５０１バイト、６９７バイト、１３５バイト、２８１バイト、及び５４２バイトが順に設定される。
【００５６】
新たな予約領域（１０００１−１３５０１番地）に断片化された各データブロックを連続して書き込む（コピーする）動作、つまりデフラグメンテーション動作が正常に終了すると、元のデータが格納されていた、それ以前の予約領域（１０００−４５００番地）は管理情報テーブル５００から削除されることで予約が解除され、空き領域として開放される。
【００５７】
なお、本実施形態では、ＨＥＡＤ＃１（ヘッド１３ａ）は少なくともリードが可能であればよく、ＨＥＡＤ＃２（ヘッド１３ｂ）は少なくともライトが可能であればよい。但し、通常のリード／ライト動作等を考慮すると、ＨＥＡＤ＃１及び＃２は、通常のヘッドと同様に、リード及びライトの両機能を有している方がよい。
【００５８】
［第２の実施形態］
以上に述べた第１の実施形態では、断片化が発生しているＡＶトラックに対するデフラグメンテーションを、対応するＡＶストリームの再生と並行して行うためには、当該ストリームをライトするのに十分な大きさの連続する空き領域を確保する必要がある。そこで、このような空き領域がない場合でも、デフラグメンテーション動作がＡＶストリームの再生と並行して行える第２の実施形態について説明する。なお、磁気ディスク装置のハードウェア構成については、図１の磁気ディスク装置と同様であるため、便宜的に図１の構成を援用する。
【００５９】
まず、断片化が発生しているＡＶトラックからＡＶストリームを再生する際のデフラグメンテーション処理の概要について、図６を参照して説明する。
図６（ａ）に示すデフラグメンテーション前のＡＶトラック６００は、図２中の編集後のＡＶトラック２２０に相当する。このＡＶトラック６００では、編集処理の結果、データブロック６０１〜６０３がカットされ、残りがデータブロック６１１（Ａ），６１２（Ｂ）及び６１３（Ｃ）に断片化されている。
【００６０】
本実施形態では、ホストシステムからの要求により、このＡＶトラック６００からＡＶストリームを再生する場合に、当該ＡＶトラック６００に対するデフラグメンテーションを行う。そのため、ＨＥＡＤ＃１（ヘッド１３ａ）を再生（リード）用に、ＨＥＡＤ＃２（ヘッド１３ｂ）をライト用に、それぞれ使用する。
【００６１】
さて、ＨＥＡＤ＃１によるＡＶトラック６００からのデータリードは、図６（ｂ）に示すように、断片化されたデータブロック６１１（Ａ），６１２（Ｂ）及び６１３（Ｃ）の記録部分６２１，６２２，６２３を当該ＨＥＡＤ＃１が通る期間だけ行われる。これにより、データブロック６１１（Ａ），６１２（Ｂ）及び６１３（Ｃ）が連続してリードされ、ＡＶストリームとして再生される。
【００６２】
ＨＥＡＤ＃１によりリードされたデータブロック６１１（Ａ），６１２（Ｂ）及び６１３（Ｃ）のうち、先頭データブロック６１１（Ａ）を除くデータブロック６１２（Ｂ）及び６１３（Ｃ）は、当該先頭データブロック６１１（Ａ）が記録されていた領域の最後尾位置から連続して、図６（ｃ）に示すようにデータブロック６３２（Ｂ）及び６３３（Ｃ）として、ＨＥＡＤ＃２により順にライトされる。ここで、先頭データブロック６１１（Ａ）は当該ブロック６１１が記録されていた領域で、そのままデータブロック６３１（Ａ）として扱われる。つまり図６の例では、ＡＶトラック６００から再生されたＡＶストリームを構成するデータブロック６１１（Ａ），６１２（Ｂ）及び６１３（Ｃ）がデータブロック６３１（Ａ），６３２（Ｂ）及び６３３（Ｃ）として連続して配置されたＡＶトラック６３０が、ＡＶトラック３００が記録されていたのと同一領域に前詰めで記録されることになる。
【００６３】
次に、本実施形態におけるデフラグメンテーション処理の手順について、図７のフローチャートを参照して説明する。
まずＣＰＵ２４は、ホストシステムから与えられたＡＶストリームをリードすることを要求するコマンドを受信すると（ステップ７０１）、当該コマンドで要求されたＡＶストリーム（対象ストリーム）に断片化されたデータが含まれているか否かを判定する（ステップ７０２）。
【００６４】
ＣＰＵ２４は、対象ストリーム（ＡＶトラック）に断片化されたデータが含まれている場合には、その断片化されたデータ（データブロック）間のディスク領域が他のデータの記録領域として使用されているか否かを判定する（ステップ７０３）。もし、データブロック間の領域が他のデータの領域として用いられているならば、ＣＰＵ２４はデフラグメンテーション処理は不可能であると判定する。この場合、ＣＰＵ２４は、指定されたＡＶトラックからデータをリードしてＡＶストリームを再生するための通常のリード制御を行う。
【００６５】
一方、データブロック間領域が他のデータ領域として用いられていない場合、ＣＰＵ２４はデフラグメンテーション処理が可能であると判定する。この場合、ＨＥＡＤ＃１（ヘッド１３ａ）のリード開始位置をディスク１１上のＡＶトラック上のデータブロックのうち、先頭のブロックの開始位置に設定すると共に、ＨＥＡＤ＃２（ヘッド１３ｂ）のライト開始位置をＡＶトラック上のデータブロックのうちの先頭データブロックの最後尾位置に設定して、その設定位置にＨＥＡＤ＃１及びＨＥＡＤ＃２を独立して移動させる（ステップ７０４）。したがって、図６に示すＡＶトラック６００が指定されたものとすると、ＨＥＡＤ＃１のリード開始位置はＡＶトラック６００の先頭データブロック６１１の先頭位置に、ＨＥＡＤ＃２のライト開始位置は当該先頭データブロック６１１の最後尾位置に、それぞれ設定される。
【００６６】
次にＣＰＵ２４は、リード開始位置が設定された先頭データブロック（６１１）のサイズを転送サイズとして設定する（ステップ７０５）。そしてＣＰＵ２４は、ステップ７０４で設定されたリード開始位置からステップ７０５で設定された転送サイズ分のデータブロック（６１１）をＨＥＡＤ＃１によりリードさせ、ディスクコントローラ２２によりバッファメモリ２３内のリードバッファ２３ａに一時格納させる（ステップ７０６）。このステップ７０６では、リードバッファ２３ａに格納されたデータブロック（６１１）をホストシステムに転送する動作がディスクコントローラ２２により行われる。ここで、最初のデータ転送の対象となるデータブロック（６１１）、つまり先頭データブロック（６１１）は、図６を参照して説明したように、デフラグメンテーション後にも同一記録領域に置かれるため、ライト動作は不要である。したがって、先頭データブロック（６１１）は、リードバッファ２３ａからＨＥＡＤ＃２側への転送は行われない。
【００６７】
次にＣＰＵ２４は、ＨＥＡＤ＃１のリード開始位置を次のデータブロック（６１２）の先頭位置に変更すると共に当該データブロック（６１２）のサイズを転送サイズとして設定する（ステップ７０７，７０８）。そしてＣＰＵ２４は、ステップ７０７で変更設定されたリード開始位置からステップ７０８で設定された転送サイズ分のデータブロック（６１２）をＨＥＡＤ＃１によりリードさせ、ディスクコントローラ２２によりバッファメモリ２３内のリードバッファ２３ａに一時格納させる（ステップ７０９）。このステップ７０９では、リードバッファ２３ａに格納されたデータブロック（６１２）をホストシステムに転送する動作がディスクコントローラ２２により行われる。またステップ７０９では、リードバッファ２３ａに格納されたデータブロック（６１２）をディスクコントローラ２２からリード／ライトＩＣ２０及びヘッドＩＣ１９を介してＨＥＡＤ＃２に転送し、現在設定されているライト開始位置から始まる領域に当該ＨＥＡＤ＃２によりライトする動作も並行して行われる。
【００６８】
したがって、図６の例であれば、まず、ＡＶトラック６００の先頭データブロック６１１をＨＥＡＤ＃１によりリードしてリードバッファ２３ａに一時格納しながら、当該リードバッファ２３ａに格納されたデータブロック６１１をホストシステムに転送する通常のリード動作が行われる。このデータブロック６１１は、ディスク１１上ではそのまま元の領域に置かれ、デフラグメンテーション後のデータブロック６３１として扱われる。次に、ＡＶトラック６００の２番目のデータブロック６１２をＨＥＡＤ＃１によりリードしてリードバッファ２３ａに一時格納しながら、当該リードバッファ２３ａに格納されたデータブロック６２１をホストシステムに転送する通常のリード動作が行われる。そして、このリード動作と並行して、リードバッファ２３ａに格納されたデータブロック６１２を、ＡＶトラック６００が記録されていたのと同一領域内の、先行するデータブロック６１１（６３１）の最後尾位置からデータブロック６３２としてＨＥＡＤ＃２によりライトするライト動作が行われる。
【００６９】
ＣＰＵ２４は、ＡＶトラック（６００）の２番目以降の１データブロックの処理を終了する毎に、すべてのデータブロックの処理が終了したか否かを判定する（ステップ７１０）。もし、処理すべきデータブロックが残っているならば、ＣＰＵ２４は上記ステップ７０７以降の処理を実行する。これにより、次のデータブロックがリードされてリードバッファ２３ａを介してホストシステムに転送されると同時に、当該データブロックが先行するデータブロックに後続するディスク１１上の領域に連続してライトされる。したがって、図６の例であれば、ＡＶトラック６００の３番目のデータブロック６１３がリードされてホストシステムに転送されると同時に、当該データブロック６１３がデータブロック６３３として、データブロック６３２に後続する領域にライトされる。
【００７０】
やがて、すべてのデータブロックの処理が終了すると、ＣＰＵ２４は、読み出しの対象となった元のＡＶトラック３００は不要になったものとして、当該ＡＶトラック３００を破棄して、一連の処理を終了する（ステップ７１１）。このときディスク１１には、図６の例であれば、ＡＶトラック６００内のデータブロック６１１，６１２及び６１３がデータブロック６３１，６３２及び６３３として連続して配置されたＡＶトラック６３０が、ＡＶトラック３００が記録されていたのと同一領域（予約領域）に前詰めで記録されている。
【００７１】
以上により本第２の実施形態においては、前記第１の実施形態で得られる効果に加えて、対象ストリームの総量以上の連続する空き領域がない場合でも、ホストシステムから指定されたＡＶストリームを再生しながらのデフラグメンテーション処理が行えるという効果を得ることができる。
【００７２】
なお、第１及び第２の実施形態を組み合わせることも可能である。即ち、対象ストリームの総量以上の連続する空き領域が存在する場合には、当該ストリームの再生と並行して再生されたデータを、第１の実施形態と同様に当該空き領域に書き込む。これに対し、上記空き領域が存在しない場合には、当該ストリームの再生と並行して再生されたデータを、第２の実施形態と同様に元の領域（予約領域）に前詰めで書き込む。
【００７３】
［第３の実施形態］
以上に述べた第１及び第２の該実施形態では、ＡＶストリームを再生しながらデフラグメンテーション処理を実行するには、ディスクの記録面に対応して、独立に動作可能な２つのヘッドを設ける必要がある場合について説明したが、これに限るものではない。
【００７４】
そこで、ディスクの記録面に対応して従来のように１つのヘッドしか設けられていなくても、ＡＶストリームを再生しながらのデフラグメンテーション処理が実現できる本発明の第３の実施形態について図８及び図９を参照して説明する。なお、磁気ディスク装置のハードウェア構成については、ヘッドと当該ヘッドを駆動するアクチュエータの数以外は図１の磁気ディスク装置と同様であるため、便宜的に図１の構成を援用する。但し本実施形態では、図１の磁気ディスク装置と異なり、ディスク１１の記録面に対応してヘッド１３ａ（ＨＥＡＤ＃１）のみが設けられているものとする。
【００７５】
まずＡＶトラックを構成するディスク１１上の物理トラックが、図８（ａ）に示すトラック＃ｎと、図８（ｂ）に示すトラック＃ｎ＋１の２つであり、デフラグメンテーション（いわゆるデフラグ）前であるものとする。図８（ａ）に示すトラック＃ｎでは、編集処理によりデータブロック８０１〜８０３がカットされ、残りがデータブロック８１１（Ａ），８１２（Ｂ）及び８１３（Ｃ）に断片化されている。一方、図８（ａ）に示すトラック＃ｎ＋１では、編集処理によりデータブロック８２１〜８２３がカットされ、残りがデータブロック８３１（Ｄ），８３２（Ｅ）及び８３３（Ｆ）に断片化されている。ここで、データブロック８１１（Ａ），８１２（Ｂ）間の領域と、データブロック８１２（Ｂ），８１３（Ｃ）間の領域と、データブロック８３１（Ｄ），８３２（Ｅ）間の領域と、データブロック８３２（Ｅ），８３３（Ｆ）間の領域とは、いずれも他のデータの領域に使用されていないものとする。
【００７６】
本実施形態では、ＡＶトラックからＡＶストリームを再生する場合、そのＡＶトラックを構成する各物理トラックを単位に、その物理トラックから断片化された全データブロックをＨＥＡＤ＃１によりリードしてリードバッファ２３ａに一時格納し、そのリードバッファ２３ａ内のデータをホストシステムへ転送する（ステップ９０１〜９０５）。そして、物理トラックからのリード開始時点からディスク１１が１回転するのを待って、リードバッファ２３ａ内のデータ、つまり直前に当該トラックからリードしたデータを、当該物理トラックの先頭から前詰めで連続してライトする（ステップ９０６，９０７）。但し、物理トラック上の断片化されたデータブロック間の領域が他のデータ領域として用いられている場合には、当該物理トラックからのリードのみが行われる（ステップ９０３，９１１）。
【００７７】
したがって、図８（ａ）の物理トラック＃ｎの例では、ＨＥＡＤ＃１によりデータブロック８１１（Ａ），８１２（Ｂ）及び８１３（Ｃ）を順次読み出してリードバッファ２３ａに一時格納し、ホストシステムに転送する（ステップ９０４，９０５）。ディスク１１が１回転して、ＨＥＡＤ＃１の位置が物理トラック＃ｎの先頭位置に一致するようになると、リードバッファ２３ａ内のリードデータ、即ちデータブロック８１１（Ａ），８１２（Ｂ）及び８１３（Ｃ）を、図８（ｃ）に示すように、ＨＥＡＤ＃１により、物理トラック＃ｎの先頭位置から順に前詰め８４０で、データブロック８４１（Ａ），８４２（Ｂ）及び８４３（Ｃ）として連続してライトする（ステップ９０６，９０７）。そして物理トラック＃ｎ上のデータブロック８４３（Ｃ）に後続する領域のデータを論理的に消去して未使用領域８４４とする。
【００７８】
次に、ＨＥＡＤ＃１を物理トラック＃ｎから隣接する物理トラック＃ｎ＋１の開始位置に移動させる。そして、物理トラック＃ｎ＋１からＨＥＡＤ＃１によりデータブロック８３１（Ｄ），８３２（Ｅ）及び８３３（Ｆ）をリードしてリードバッファ２３ａに一時格納し、ホストシステムに転送する（ステップ９０４，９０５）。次に、リードバッファ２３ａ内のリードデータを物理トラック＃ｎ＋１に連続してライトする（ステップ９１０）。但し、物理トラック＃ｎ＋１へのライト開始位置は、先頭の物理トラック＃ｎの場合と異なって（ステップ９０６）、ＨＥＡＤ＃１の移動に必要な時間とディスク１１の回転速度を考慮して決定する（ステップ９０９）。具体的には、、物理トラック＃ｎに再配置されたデータをリードし終えた結果、次の物理トラック＃ｎ＋１にＨＥＡＤ＃１のヘッド移動８５０を行った直後に、当該物理トラック＃ｎ＋１の最初のデータをディスク１１の回転待ちをすることなく直ちにリードできる位置に決定する。そのため、図８（ｄ）に示すように、物理トラック＃ｎ＋１の開始位置からヘッド移動時間８５１に相当する未使用領域８５２を確保し、その未使用領域８５２に後続する領域に、リードバッファ２３ａ内のリードデータ、即ちデータブロック８３１（Ｄ），８３２（Ｅ）及び８３３（Ｆ）を、ＨＥＡＤ＃１によりデータブロック８６１（Ｄ），８６２（Ｅ）及び８６３（Ｆ）として連続してライトする。
【００７９】
［第４の実施形態］
図１０は本発明の第３の実施形態に係るディスクアレイ装置（ディスクアレイ型ディスク記憶システム）の構成を示すブロック図である。
【００８０】
図１０のディスクアレイ装置はＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置であり、例えば２台のディスクドライブ（以下、ＨＤＤと称する）１０１（＃１）及び１０２（＃２）と、これらＨＤＤ１０１及び１０２を制御するディスクアレイコントローラ（ＲＡＩＤコントローラ）１０３とを備えている。コントローラ１０３は、ホストシステムから転送されたＨＤＤ１０１または１０２にライトすべきデータ及びＨＤＤ１０１または１０２からリードされたホストシステムに転送すべきデータを一時格納するためのバッファ（バッファメモリ）１０４を含んでいる。コントローラ１０３の特徴は、断片化が発生しているＡＶトラックに対するデフラグメンテーションを、対応するＡＶストリームの再生と並行して行う制御機能を有している点にある。
【００８１】
以下、図１０の構成におけるＡＶストリームの再生時のデフラグメンテーション処理について、図１１のフローチャートを参照して説明する。
【００８２】
まずコントローラ１０３は、ホストシステムから与えられたＡＶストリームをリードすることを要求するコマンドを受信すると（ステップＡ１）、当該コマンドで要求されたＡＶストリームに断片化されたデータが含まれているか否かを判定する（ステップＡ２）。
【００８３】
コントローラ１０３は、要求されたＡＶストリーム（ＡＶトラック）に断片化されたデータが含まれている場合、当該ストリームが格納されているＨＤＤ＃ｉ（ｉは１または２）から当該ストリームを所定のデータ長を単位に読み出すために読み出し命令を発行すると共に、読み出されたデータを別のＨＤＤ＃ｊ（ｊは１または２、但しｊ≠ｉ）に書き込むための書き込み命令を発行する（ステップＡ３）。
【００８４】
ＨＤＤ＃ｉは、コントローラ１０３からの読み出し命令に応じ、指定されたデータを読み出してコントローラ１０３に転送する（ステップＡ４）。このコントローラ１０３に転送されたデータはバッファ１０４に一時格納された後、ホストシステムに転送されると共にＨＤＤ＃ｊに転送される（ステップＡ５）。このＨＤＤ＃ｊに転送されたデータ、即ちＨＤＤ＃ｉから読み出されたデータは、先の書き込み命令に応じてＨＤＤ＃ｊの連続する領域に書き込まれる。
【００８５】
コントローラ１０３は、上記ステップＡ３以降の動作を、ホストシステムから指定された全データ（ＡＶストリーム）の転送が完了するまで繰り返す（ステップＡ６）。なお、ホストシステムから要求されたＡＶストリームに断片化されたデータが含まれていない場合には、ＨＤＤ＃ｉからのデータ読み出しのみが、指定された全データ（ＡＶストリーム）の転送が完了するまで繰り返される（ステップＡ８，Ａ９）。
【００８６】
なお、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００８７】
【発明の効果】
以上詳述したように本発明によれば、ホストシステムから要求された時間的に連続したシーケンシャルデータが編集等により断片化されている場合に、当該シーケンシャルデータを再生するのと並行して、当該再生されたデータを連続領域に書き込むようにしたので、シーケンシャルデータの再生と並行しての自動デフラグメンテーションをホストシステムに何ら意識させることなく実現できる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る磁気ディスク装置の構成を示すブロック図。
【図２】データの断片化が発生するＡＶデータの編集例を示す図。
【図３】同第１の実施形態で適用される、断片化が発生しているＡＶトラックからＡＶストリームを再生する際のデフラグメンテーション処理の概要を説明するための図。
【図４】同第１の実施形態における上記デフラグメンテーション処理の手順を説明するためのフローチャート。
【図５】同第１の実施形態で適用される管理情報テーブル５００のデータ構造例を示す図。
【図６】本発明の第２の実施形態で適用される、断片化が発生しているＡＶトラックからＡＶストリームを再生する際のデフラグメンテーション処理の概要を説明するための図。
【図７】同第２の実施形態で適用される上記デフラグメンテーション処理の手順を説明するためのフローチャート。
【図８】本発明の第３の実施形態で適用される、断片化が発生しているＡＶトラックからＡＶストリームを再生する際のデフラグメンテーション処理の概要を説明するための図。
【図９】同第３の実施形態で適用される上記デフラグメンテーション処理の手順を説明するためのフローチャート。
【図１０】本発明の第４の実施形態に係るディスクアレイ装置の構成を示すブロック図。
【図１１】本発明の第４の実施形態で適用される、断片化が発生しているＡＶトラックからＡＶストリームを再生する際のデフラグメンテーション処理の手順を説明するためのフローチャート。
【符号の説明】
１１…ディスク
１３ａ…ヘッド（ＨＥＡＤ＃１）
１３ｂ…ヘッド（ＨＥＡＤ＃２）
１４ａ，１４ｂ…アクチュエータ
２３…バッファメモリ
２３ａ…リードバッファ
２４…ＣＰＵ
２５…ＦＲＯＭ
１０１，１０２…ＨＤＤ
１０３…ディスクアレイコントローラ
１０４…バッファメモリ
５００…管理情報テーブル
【図１】
0003629216.tif 000002
【図２】
0003629216.tif 000003
【図３】
0003629216.tif 000004
【図４】
0003629216.tif 000005
【図５】
0003629216.tif 000006
【図６】
0003629216.tif 000007
【図７】
0003629216.tif 000008
【図８】
0003629216.tif 000009
【図９】
0003629216.tif 000010
【図１０】
0003629216.tif 000011
【図１１】
0003629216.tif 000012