(57)【要約】【課題】ハードディスク装置自体の制御により磁気ディスク上のデータを再配置することを可能とし、磁気ディスクに対するデータの読み書きにおける性能を向上させる。【解決手段】ハードディスク装置１０とファイル管理部２０とを備えるファイル管理システムであり、このファイル管理部２０は、ハードディスク装置１０に対して読み書きするデータを、所定の論理アドレス空間にて１つのファイル内のデータが連続するようにして管理すると共に、ハードディスク装置１０に対する読み書き要求の対象データを論理アドレス空間における所定の論理アドレスで指定する。ハードディスク装置１０は、読み書き要求の対象データを指定する所定の論理アドレスをＬＢＡに変換してデータの読み書き処理を実行する。そして、かかる所定の論理アドレスに基づいて、磁気ディスク１１に記録されたデータのデフラグメンテーションを行う。【選択図】        図２
2004334419.tif 000002
【特許請求の範囲】
【請求項１】
記録媒体である磁気ディスクと、
前記磁気ディスクへのデータの読み書きを制御するコントローラと、
所定のデータに関して、前記磁気ディスクに対してデータを読み書きする際に当該データを特定するために用いられる第１の論理アドレスと当該データを外部装置とやり取りする際に用いられる第２の論理アドレスとを変換するアドレス変換部と
を備えることを特徴とする磁気ディスク装置。
【請求項２】
前記コントローラは、前記第２の論理アドレスに基づいて、前記磁気ディスクに記録されたデータの再配置を行うことを特徴とする請求項１に記載の磁気ディスク装置。
【請求項３】
前記第２の論理アドレスは、アドレス空間上に、１つのファイル内のデータが連続するように、個々のファイルに対して設定されることを特徴とする請求項１に記載の磁気ディスク装置。
【請求項４】
前記コントローラは、所定のデータが使用されなくなった場合に、当該使用されなくなったデータに対応付けられている前記第２の論理アドレスを解放することを特徴とする請求項１に記載の磁気ディスク装置。
【請求項５】
前記磁気ディスクに対して書き込むデータまたは前記磁気ディスクから読み出されたデータを保持するキャッシュメモリをさらに備え、
前記コントローラは、前記キャッシュメモリに保持されているデータを、前記磁気ディスクに保存されているか否か及び当該データに対する前記第２の論理アドレスの割り当てに基づいて分類して管理し、当該分類に応じて当該磁気ディスクに記録されたデータの再配置を行うことを特徴とする請求項２に記載の磁気ディスク装置。
【請求項６】
記録媒体である磁気ディスクと、
前記磁気ディスクへのデータの読み書きを制御するコントローラと、
キャッシュメモリとを備え、
前記コントローラは、前記磁気ディスクに対する読み書き処理の対象データを、前記磁気ディスクに格納されているか否か及び当該データに対する所定の論理アドレスの割り当てに基づいて分類して前記キャッシュメモリに保持し、所定のタイミングで前記キャッシュメモリに保持されているデータをその分類に応じて前記磁気ディスクに格納することにより、当該磁気ディスクに格納されているデータのレイアウトを最適化することを特徴とする磁気ディスク装置。
【請求項７】
前記コントローラは、前記キャッシュメモリに保持されているデータのうちで、前記磁気ディスクに格納されておらず、かつキャッシュデータの管理単位である１ストライド以上の長さで連続する前記論理アドレスが割り当てられたデータを選択して、前記磁気ディスクの連続した記録領域に格納することを特徴とする請求項６に記載の磁気ディスク装置。
【請求項８】
コンピュータの外部記憶装置と、
前記外部記憶装置に格納されるファイルを管理するファイル管理部とを備え、
前記ファイル管理部は、前記外部記憶装置に対して読み書きするデータを、所定の論理アドレス空間にて１つのファイル内のデータが連続するようにして管理すると共に、当該外部記憶装置に対する読み書き要求の対象データを当該論理アドレス空間における論理アドレスで指定し、
前記外部記憶装置は、前記読み書き要求の対象データを指定する前記論理アドレスをＬＢＡ（論理ブロックアドレス）に変換して記録媒体に対するデータの読み書き処理を実行することを特徴とするファイル管理システム。
【請求項９】
前記外部記憶装置は、前記論理アドレスに基づいて、前記記録媒体に格納されているデータを再配置することを特徴とする請求項８に記載のファイル管理システム。
【請求項１０】
前記ファイル管理部は、使用されなくなったデータを削除するためのコマンドを前記外部記憶装置に対して発行し、
前記外部記憶装置は、前記コマンドにしたがって、前記論理アドレスとＬＢＡとを変換するための対応情報から、当該コマンドにて指定されたデータに関する情報を削除することを特徴とする請求項８に記載のファイル管理システム。
【請求項１１】
コンピュータの外部記憶装置におけるファイル管理方法であって、
所定の論理アドレス空間内で１つのファイル内のデータが連続するように設定される論理アドレスにて指定されたデータの読み書き要求を前記コンピュータから受け取るステップと、
前記読み書き要求における対象データの論理アドレスをＬＢＡ（論理ブロックアドレス）に変換し、当該ＬＢＡに基づいて記録媒体に対するデータの読み書き処理を実行するステップと
を含むことを特徴とするファイル管理方法。
【請求項１２】
所定のタイミングで、前記論理アドレスに基づいて、前記記録媒体に格納されているデータの再配置を行うステップをさらに含むことを特徴とする請求項１１に記載のファイル管理方法。
【請求項１３】
使用されなくなったデータを削除するためのコマンドを前記コンピュータから受け取った場合に、当該コマンドにしたがって、前記論理アドレスとＬＢＡとを変換するための対応情報から、当該コマンドにて指定されたデータに関する情報を削除するステップをさらに含むことを特徴とする請求項１１に記載のファイル管理方法。
【請求項１４】
コンピュータの外部記憶装置におけるファイル管理方法であって、
前記コンピュータから受け取ったデータの読み書き要求に基づいて記録媒体に対して読み書き処理を行うステップと、
前記読み書き処理の対象データを、前記記録媒体に格納されているか否か及び当該データに対する所定の論理アドレスの割り当てに基づいて分類してキャッシュメモリに保持するステップと、
所定のタイミングで前記キャッシュメモリに保持されているデータをその分類に応じて前記記録媒体に格納することにより、当該記録媒体に格納されているデータのレイアウトを最適化するステップと
を含むことを特徴とするファイル管理方法。
【請求項１５】
前記データのレイアウトを最適化する処理では、前記キャッシュメモリに保持されているデータのうちで、前記記録媒体に格納されておらず、かつキャッシュデータの管理単位である１ストライド以上の長さで連続する前記論理アドレスが割り当てられたデータを選択して、前記記録媒体の連続した記録領域に格納することを特徴とする請求項１４に記載のファイル管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、磁気ディスク装置に対するデータの読み書き制御に関し、特に入出力データの論理的な操作に関する。
【０００２】
【従来の技術】
コンピュータ装置の記憶デバイスとして、ランダムアクセスが可能であり、データの読み書き処理が高速なハードディスク装置が広く用いられている。ハードディスク装置は、物理的には、トラック及びセクタに区切られた磁気ディスクのデータ記録領域に対して磁気的にデータの記録及び読み出しを行う。しかし、データの入出力そのものは、データ記録領域の物理的な区画とは関係なく、ファイルシステムの管理下で、コンピュータの処理において使用されるファイルを構成するブロックと呼ばれる論理的な単位で行われる。ファイルシステムは、ＯＳ（オペレーティングシステム）の機能等として提供される、外部記憶装置上のファイルを管理するシステムである。
【０００３】
図７は、一般的なハードディスク装置とファイルシステムとの関係を示す図である。
図７を参照すると、ハードディスク装置７１０は、記録媒体である磁気ディスク７１１と、磁気ディスク７１１に対するデータの読み書きを制御するコントローラ７１２と、キャッシュメモリとして利用される不揮発性メモリ７１３とを備えている。ファイルシステム７２０は、ハードディスク装置７１０に対し、ブロック単位でデータの読み書き要求（入出力要求）を発行する。またファイルシステム７２０は、ハードディスク装置７１０に格納されたブロックを識別するのに、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ：論理ブロックアドレス）と呼ばれるアドレスを使用する（例えば、非特許文献１参照）。
【０００４】
このようなシステムでは、アプリケーション等からのファイルＩ／Ｏ（入出力）がファイルシステムに到着すると、ファイルシステム７２０は、そのリクエストを処理するために必要なハードディスク装置７１０への入出力要求を作成し発行する。そして、ファイルへのデータの書き込み要求があった場合など、ファイルシステム７２０がハードディスク装置７１０へ書き込み要求を発行する場合、ハードディスク装置７１０上のレイアウトを決定するのはファイルシステム７２０になる。
【０００５】
ハードディスク装置７１０は、回転する磁気ディスクの所望のトラックに磁気ヘッドをシークさせてデータの読み書きを行うという構造上の理由から、データの書き込み、読み出しとも、連続したＬＢＡを持つブロックへの操作（シーケンシャル書き込み及びシーケンシャル読み出し）を行った場合に、磁気ヘッドのシーク操作が最小限となるため、性能が最大になる。しかし、ファイルシステム７２０から出力される入出力要求においてＬＢＡに変換されたブロックのレイアウトを、ハードディスク装置７１０側が入出力パフォーマンスの良いレイアウトに変換することは、極めて困難である。これは、ＬＢＡに変換されてしまった書き込み指定から、ハードディスク装置７１０上のレイアウト構造を推測することが、一般には不可能だからである。
したがって従来、ハードディスク装置７１０上のレイアウトを適切に決定し、入出力要求の実行パフォーマンスを向上させることは、ファイルシステム７２０によって行われていた。
【０００６】
ところでデータの書き込みにおいて、複数のファイルに対する書き込み要求が並列してハードディスク装置７１０に到達した場合、書き込み要求順にシーケンシャル書き込みを行うと、各ファイルのデータを格納したブロックどうしが相互に相手を分断する形になる。この状態を、フラグメンテーション（ｆｒａｇｍｅｎｔａｔｉｏｎ）が発生しているという。
一方、データ読み出しにおいては、複数のファイルに対する読み出しが同時に発生した場合でも、ファイルの中身を先読みし、ファイルシステムの段階でキャッシュすることが可能なので、各ファイルはシーケンシャルに並んでいること、すなわち、フラグメンテーションが発生していない状態が望ましい。
【０００７】
このため、従来のファイルシステム７２０には、書き込み要求に対し、可能な場合はハードディスク装置７１０への即時書き込みを行わず、ある程度キャッシュメモリに書き込みデータを蓄えて、適切なレイアウトを判断したうえで磁気ディスクへの書き込みを行うという戦略を取るものが多い。キャッシュメモリに保存することで、重複した領域への書き込み分に対する入出力を減らし、ハードディスク装置７１０の磁気ヘッドの無駄な移動量を減らして、書き込みスループットを向上させると共に、読み出し時に不利にならないようにフラグメンテーションの発生しにくいレイアウトを採用することができる。
【０００８】
【非特許文献１】
「トランジスタ技術」２００１年１１月号、ＣＱ出版社、平成１３年１１月１日、ｐ．１８０−１８１
【０００９】
【発明が解決しようとする課題】
上記のように、ハードディスク装置へのデータの読み書きにおいて、シーケンシャル書き込みとシーケンシャル読み出しを両立させることがパフォーマンスの向上に大きく寄与する。そのため、従来、キャッシュメモリを用いたブロックレイアウトの制御が行われていた。
しかし、ファイルシステムにｃｏｍｍｉｔ  ｗｒｉｔｅ要求が発生した場合、ファイルシステムは外部記憶装置への即時書き込みを行わなくてはならない。この場合、キャッシュに書き込みデータを蓄えておくことはできないので、ファイルシステムは、本来の磁気ヘッドにおけるシークスケジュールの変更を余儀なくされる上に、磁気ディスク上のレイアウトもフラグメンテーションが起きやすいものにならざるを得なくなる。
【００１０】
また、仮にｃｏｍｍｉｔ  ｗｒｉｔｅ要求が発生しなかった場合でも、キャッシュメモリの記憶容量いっぱいにデータが蓄積される前にキャッシュの内容を磁気ディスクに書き込まなくてはならないことに変わりはない。上述したように、データの読み出し時に有利な磁気ディスク上のレイアウトは、当該データの書き込み時には離散した領域に対する書き込みになるので、シーケンシャル書き込み時に可能な高速書き込みを行うことは難しい。
結果として、キャッシュメモリによる最適化が行われても、ハードディスク装置の書き込み可能速度がファイルシステムの書き込み性能の上限を決めていることに変わりはない。
【００１１】
書き込み時に有利な磁気ディスク上のレイアウトと読み出し時に有利な磁気ディスク上のレイアウトとは、上述したように一般に異なる。したがって、書き込み時には書き込みに有利なレイアウトで磁気ディスクにデータを書き込み、当該データの読み出し時までに読み出しに有利なレイアウトに再配置することができれば、ファイルシステムのパフォーマンスは大きく向上すると言える。
しかし、従来のファイルシステムとハードディスク装置とは、データの書き込みターゲットの指定にＬＢＡを使っており、ブロックのファイルとしての連続性に関する情報は、ファイルシステムが所有し、磁気ディスク装置ではわからない。その結果、所定のＬＢＡへの書き込みが、最適な配置なのか、不適切な配置だがｃｏｍｍｉｔ  ｗｒｉｔｅを実行する必要から行われたものかといったことを、ハードディスク装置自体が識別することはできない。したがって、ハードディスク装置自体の機能としてデフラグメンテーション（ｄｅｆｒａｇｍｅｎｔａｔｉｏｎ：フラグメンテーションを解消するための磁気ディスク上におけるデータの再配置）を実行することもできない。
【００１２】
このような事情から、従来、ハードディスクに格納されたデータ（ブロック）のデフラグメンテーションは、ファイルシステムの制御によって行われていたが、これはファイルシステムを持つコンピュータに余計な負荷をかけることとなっていた。特に、ファイルシステムが複数の外部記憶装置を操作する場合でも１つの記憶装置の再配置処理がファイルシステム全体に対する負荷になってしまうという不都合があった。
【００１３】
磁気ディスク上のデータのレイアウトをハードディスク装置自身で自由に変更できるようにするために、ハードディスク装置自体にファイルシステムを内蔵させる構成が考えられる。
この構成によれば、ハードディスク装置に、データ配置の最適化に必要な情報が全て存在するので、磁気ディスク上のデータのレイアウトに起因する読み書き性能の低下は回避できるか、少なくともハードディスク装置単独で解決することができる。
【００１４】
しかし、ファイルシステムをハードディスク装置に搭載することは、次のような問題がある。
例えば、ハードディスク装置の記憶容量が扱えるファイルのサイズを規定しかねない。例として記憶容量が６０ギガバイトのハードディスク装置を４台つないで使用する場合を考える。この場合、ＯＳ側にファイルシステムがあるならば、ファイルシステム（及びそのファイルシステムフォーマット）が論理ボリュームマネージャ（Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒ）機能をサポートしていれば、２４０（＝６０×４）ギガバイトのファイルを作成することができる。しかし、ハードディスク装置がファイルシステムを完全に包括してしまうと、ハードディスク装置の記憶容量がファイルのサイズの上限になるか、あるいはＯＳにおいて複数のファイルを１つのファイルに見せかける機能が必要になる。どちらも入出力のスループットの観点から実用的と言えない。
【００１５】
また、ファイルシステムに対して要求される機能は、ＯＳによって異なる。ファイルシステムをハードディスク装置に内包してしまうと、そのハードディスク装置のファイルシステムは所定のＯＳに特化したものとならざるを得ない。したがって、ハードディスク装置がＯＳに依存したものになり、汎用的に使用できなくなってしまう。
【００１６】
上記の目的を達成する本発明は、ハードディスク装置自体の制御により磁気ディスク上のデータを再配置することが可能なファイル管理システム及びその管理方法を提供することを目的とする。
また本発明は、上記の目的に加えて、磁気ディスクに対するデータの読み書きにおける性能を向上させることを他の目的とする。
【００１７】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、次のように構成された磁気ディスク装置として実現される。すなわち、この磁気ディスク装置は、記録媒体である磁気ディスクと、この磁気ディスクへのデータの読み書きを制御するコントローラと、所定のデータに関して、磁気ディスクに対してデータを読み書きする際にデータを特定するために用いられる第１の論理アドレスとデータを外部装置とやり取りする際に用いられる第２の論理アドレスとを変換するアドレス変換部とを備えることを特徴とする。
【００１８】
さらに詳細には、このコントローラは、第２の論理アドレスに基づいて、磁気ディスクに記録されたデータの再配置（デフラグメンテーション）を行う。また、ここで用いられる第２の論理アドレスは、アドレス空間上に、１つのファイル内のデータが連続するように、個々のファイルに対して設定される。
また、このコントローラは、所定のデータが使用されなくなった場合に、使用されなくなったデータに対応付けられている第２の論理アドレスを解放する。
【００１９】
また、上述した本発明の磁気ディスク装置は、磁気ディスクに対して書き込むデータまたは磁気ディスクから読み出されたデータを保持するキャッシュメモリをさらに備える構成とすることができる。この場合、コントローラは、キャッシュメモリに保持されているデータを、磁気ディスクに保存されているか否か及びかかるデータに対する第２の論理アドレスの割り当てに基づいて分類して管理し、この分類に応じて磁気ディスクに記録されたデータの再配置を行う。
【００２０】
本発明の他の磁気ディスク装置は、記録媒体である磁気ディスクと、磁気ディスクへのデータの読み書きを制御するコントローラと、キャッシュメモリとを備える構成とする。そして、コントローラは、磁気ディスクに対する読み書き処理の対象データを、磁気ディスクに格納されているか否か及びデータに対する所定の論理アドレスの割り当てに基づいて分類してキャッシュメモリに保持し、所定のタイミングでキャッシュメモリに保持されているデータをその分類に応じて磁気ディスクに格納することにより、磁気ディスクに格納されているデータのレイアウトを最適化することを特徴とする。
ここで、このコントローラは、少なくとも、キャッシュメモリに保持されているデータのうちで、磁気ディスクに格納されておらず、かつ１ストライド以上の長さで連続する論理アドレスが割り当てられたデータを選択して、磁気ディスクの連続した記録領域に格納する。ストライドとは、キャッシュの管理単位であり、磁気ディスクへの読み書きが十分な効率で行える大きさ、すなわち、これ以上の大きな単位で読み書きを行っても効率がほとんど向上しないといえる大きさを示す、システム全体で一意に決められた大きさである。
【００２１】
また、上記の目的を達成する他の本発明は、コンピュータの外部記憶装置と、この外部記憶装置に格納されるファイルを管理するファイル管理部とを備えるファイル管理システムとしても実現される。このファイル管理システムにおいて、ファイル管理部は、外部記憶装置に対して読み書きするデータを、所定の論理アドレス空間にて１つのファイル内のデータが連続するようにして管理すると共に、外部記憶装置に対する読み書き要求の対象データを論理アドレス空間における論理アドレスで指定し、外部記憶装置は、読み書き要求の対象データを指定する論理アドレスをＬＢＡ（論理ブロックアドレス）に変換して記録媒体に対するデータの読み書き処理を実行することを特徴とする。
より好ましくは、このファイル管理部は、使用されなくなったデータを削除するためのコマンドを外部記憶装置に対して発行し、外部記憶装置は、コマンドにしたがって、論理アドレスとＬＢＡとを変換するための対応情報から、コマンドにて指定されたデータに関する情報を削除する。
【００２２】
さらに本発明は、コンピュータの外部記憶装置における、次のようなファイル管理方法としても実現される。このファイル管理方法は、所定の論理アドレス空間内で１つのファイル内のデータが連続するように設定される論理アドレスにて指定されたデータの読み書き要求をコンピュータから受け取るステップと、読み書き要求における対象データの論理アドレスをＬＢＡ（論理ブロックアドレス）に変換し、このＬＢＡに基づいて記録媒体に対するデータの読み書き処理を実行するステップとを含むことを特徴とする。
【００２３】
また、本発明の他のファイル管理方法は、コンピュータから受け取ったデータの読み書き要求に基づいて記録媒体に対して読み書き処理を行うステップと、この読み書き処理の対象データを、記録媒体に格納されているか否か及びかかるデータに対する所定の論理アドレスの割り当てに基づいて分類してキャッシュメモリに保持するステップと、所定のタイミングでキャッシュメモリに保持されているデータをその分類に応じて記録媒体に格納することにより、記録媒体に格納されているデータのレイアウトを最適化するステップとを含むことを特徴とする。
【００２４】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本実施の形態では、フレームアドレスと呼ぶ論理アドレス空間を新たに定義し、このアドレス空間を用いてハードディスク装置に格納されるデータを管理する。
図１は、フレームアドレスの概念を説明する図である。
図１に示すように、フレームアドレスは、巨大なアドレス空間を表すビット列である。図示の例では１０２４ビットと仮定するが、実際にはビット長は、ハードディスク装置の記憶容量と比較して十分に大きければ、何ビットでも良い。
【００２５】
ファイルシステムは、フレームアドレス上に、１つのファイル内のデータが連続するように、かつ各ファイル間に十分大きな空き空間が存在するように、すなわち他のファイルが存在することによって所望のファイルに割り当てる領域が不足することのないように、個々のファイルを配置する。例えば、１０ギガバイトの記憶容量を持つハードディスク装置において、１つのファイルに対して１０ギガバイト分の空間を与えれば、各ファイルの間には十分な空き空間ができ、必ず１つのファイル内のデータをフレームアドレス上で連続させることができる。図１に示すフレームアドレスでは、１０２４ビットの上位５１２ビットをファイルハンドルに割り当て、下位５１２ビットをファイルの先頭からのオフセット（バイト）に割り当てている。
【００２６】
ハードディスク装置は、書き込みに際しては、フレームアドレスと磁気ディスク上における実際のレイアウトの対応表を作りながら、データを磁気ディスクへ書き込んでいく。書き込み時の磁気ディスク上のレイアウトは、ハードディスク装置のコントローラが適宜決定する。一方、読み出しに際しては、ハードディスク装置は、書き込み時に作成したレイアウト対応表に基づき、指定されたフレームアドレスのデータを読み出す。隣接するフレームアドレスを保持するブロックが磁気ディスク上の離れた位置にある場合、コントローラが適当と判断するならば、この読み出したデータに基づいて、コントローラがデフラグメンテーション処理を行い、磁気ディスク上のデータのレイアウトを最適化する。また、コントローラは、適切と判断したタイミングで、独自にデフラグメンテーション処理を行っても良い。これらのデフラグメンテーション処理によるフレームアドレスの変更はないので、ファイルシステムからは透過的にデフラグメンテーション処理を行うことができる。
【００２７】
フレームアドレスの空間は、ＬＢＡと異なり磁気ディスクの物理的なブロックと直接対応していないので、利用しなくなったフレームアドレスおよび対応する磁気ディスクの物理ブロックを明示的に回収する必要がある。すなわち、ＬＢＡの場合には、ＬＢＡのアドレスが磁気ディスクの物理ブロックと直接対応していたので、所定のＬＢＡを使用しなくなった場合、そのＬＢＡを他の目的に使用することにより、不使用となったＬＢＡ及び磁気ディスクの物理ブロックを再利用することが可能であった。これに対し、フレームアドレスの場合、不使用となったアドレスに対応するＬＢＡ及び磁気ディスクは他の目的に再利用されないので、利用しなくなったアドレスに対して明示的に開放することが必要となる。そこで、ファイルシステム上で所定のファイルが消去されたならば、当該ファイルに対応するフレームアドレスを明示的に削除する、すなわち、レイアウト対応表から除去する。
【００２８】
図２は、本実施の形態によるファイル管理システムの構成を示す図である。
図２を参照すると、本実施の形態のファイル管理システムは、ハードディスク装置１０と、ハードディスク装置１０に対してファイルの読み書きを制御するファイル管理部２０とを備える。ハードディスク装置１０は、コンピュータ装置に接続された外部記憶装置である。ファイル管理部２０は、ハードディスク装置１０を外部記憶装置として使用するコンピュータ装置のプログラム制御されたＣＰＵにて実現されるソフトウェアブロックであり、具体的には、ＯＳの機能として提供されるファイルシステムにて実現される。ファイル管理部２０からの読み書き要求により、ハードディスク装置１０とファイル管理部２０との間でやり取りされるブロック（データ）は、フレームアドレス（ＦＡ）にて指定される。
【００２９】
ハードディスク装置１０は、記録媒体である磁気ディスク１１と、磁気ディスク１１に対するデータの読み書きを制御するコントローラ１２と、不揮発性メモリ等で実現されるキャッシュメモリ１３と、フレームアドレスとＬＢＡとの変換を行うＦＡ−ＬＢＡ変換部１４とを備える。コントローラ１２及びＦＡ−ＬＢＡ変換部１４は、図示しないＲＯＭ等に格納されたプログラムで制御されたプロセッサ等で実現されるソフトウェアブロックである。
【００３０】
磁気ディスク１１は、コントローラ１２の制御下で磁気的にデータの記録を行う。コントローラ１２は、ファイル管理部２０からデータの書き込み要求や読み出し要求を受け取り、図示しない各種のユニットを制御し、磁気ヘッドのシーク等の機械的な操作を行って磁気ディスク１１に対しデータの読み書きを行う。コントローラ１２と磁気ディスク１１との間でやり取りされるブロックは、ＬＢＡにて指定される。キャッシュメモリ１３は、磁気ディスク１１から読み出されたデータやファイル管理部２０から送られた読み書き要求及びこれらの要求に含まれるデータを一時的に保持する。ＦＡ−ＬＢＡ変換部１４は、ファイル管理部２０とコントローラ１２との間でブロックの指定に用いられるフレームアドレスと、コントローラ１２と磁気ディスク１１との間でブロックの指定に用いられるＬＢＡとを変換する。アドレス空間の変換にはレイアウト対応表が用いられる。このレイアウト対応表は、磁気ディスク１１へのデータの書き込み時に作成され、キャッシュメモリ１３に保持される（図２中、破線で表示）。
【００３１】
キャッシュメモリ１３のキャッシュ領域は、２つのカテゴリによって、合計４つの領域に分類される。
１つ目のカテゴリは、クリーン（ｃｌｅａｎ）とダーティ（ｄｉｒｔｙ）とによる分類であり、キャッシュのデータが磁気ディスクに既に保存されているかどうかを表す。クリーンは、磁気ディスク上のイメージとキャッシュのデータとが一致している（データが保存されている）ことを表し、ダーティは、磁気ディスク上のイメージとキャッシュのデータとが一致していない（データが保存されていない）ので保存が必要であることを表す。
２つ目のカテゴリは、フル（ｆｕｌｌ）とフラグメンテッド（ｆｒａｇｍｅｎｔｅｄ）とによる分類であり、データに対するフレームアドレスの割り当ての様子を表す。キャッシュは、ストライド（ｓｔｒｉｄｅ）と言う単位でキャッシュデータを管理する。ストライドは、読み込みを行う場合に、磁気ディスク上でデータがシーケンシャルに読み出せると効率の良い程度の十分な大きさに取られている。フルは、ストライドの内容が全て連続したフレームアドレスから構成されていることを表し、フラグメンテッドは、複数の不連続なフレームアドレスが指し示すブロックから構成されていることを表す。
したがって、キャッシュメモリ１３のキャッシュ領域は、クリーン／フル、クリーン／フラグメンテッド、ダーティ／フル、ダーティ／フラグメンテッドの４種類に分類される。
【００３２】
次に、ファイル管理部２０からハードディスク装置１０に対して発行される要求ごとに、本実施の形態の動作を説明する。
１．書き込み要求（ｗｒｉｔｅ  ｒｅｑｕｅｓｔ）に対する動作
図３は、ファイル管理部２０からハードディスク装置１０へ書き込み要求が発行された場合の動作を示す図である。
まず、コントローラ１２が、書き込み要求を受け取り、書き込むべきデータをキャッシュメモリ１３に保存する（図中の矢印１）。この時点では、データはフレームアドレスで管理されている。書き込むべきデータがフルストライド分の量があれば、当該データはダーティ／フルのキャッシュ領域に登録される。一方、書き込むべきデータがフルストライド分の量がない場合は、当該データと他のキャッシュデータとのフレームアドレスを比較する。そして、フルストライド分の量になるデータの組み合わせができれば、それらのデータを集めて、ダーティ／フルとして登録する。それ以外の場合は、データはダーティ／フラグメンテッドのキャッシュ領域に登録される。
【００３３】
次に、コントローラ１２は、ダーティ／フルのキャッシュ領域に保持されているキャッシュデータを、磁気ディスク１１に書き込む（図中の矢印２）。この際、１ストライド分のキャッシュイメージが連続したＬＢＡを持つように、磁気ディスク１１上の空き領域を決定する。書き込みの済んだキャッシュデータは、クリーン／フルのキャッシュ領域に移動される。
【００３４】
次に、ＦＡ−ＬＢＡ変換部１４が、磁気ディスク１１に書き込まれたデータ（クリーン／フルのキャッシュ領域に移動したキャッシュデータ）に関して、対応するフレームアドレスとＬＢＡとをレイアウト対応表に登録する（図中の矢印３）。また、ダーティ／フラグメンテッドのキャッシュ領域に保持されているキャッシュデータのフレームアドレスがレイアウト対応表に登録されている場合は、このフレームアドレスを解放する。
【００３５】
２．読み出し要求（ｒｅａｄ  ｒｅｑｕｅｓｔ）に対する動作
図４は、ファイル管理部２０からハードディスク装置１０へ読み出し要求が発行された場合の動作を示す図である。
まず、コントローラ１２が、読み出し要求を受け付ける（図中の矢印１）。そして、ＦＡ−ＬＢＡ変換部１４に問い合わせて、読み出しを要求された範囲のフレームアドレスに対応するＬＢＡを取得する（図中の矢印２）。そして、読み出し範囲のデータがキャッシュに存在しないかキャッシュメモリ１３を調べる（図中の矢印３）。キャッシュに存するデータが、読み出し範囲のデータの一部であっても良い。
【００３６】
次に、コントローラ１２は、読み出し対象であるデータのキャッシュに存在しなかった部分を、磁気ディスク１１からキャッシュメモリ１３へ読み出す（図中の矢印４）。この際、読み出しデータがフルストライドサイズになるように、要求範囲外についても読み出しておく。読み出すべきデータの磁気ディスク１１上のレイアウトが、ストライドサイズレベルで不連続であった場合、コントローラ１２は、フルストライドサイズで読み出したデータをキャッシュメモリ１３のダーティ／フルのキャッシュ領域に格納する。これによって、後に当該フルストライドサイズの当該データが連続して磁気ディスク１１に書き込まれることとなる。それ以外の場合は、読み出されたデータは、クリーン／フルのキャッシュ領域に格納される。
また、読み出されたデータに対応するフレームアドレスのレンジではフルストライドサイズにならない場合、コントローラ１２は、キャッシュされている各データのブロックが、なるべくシーケンシャルに並ぶようにした上で、当該データをダーティ／フラグメンテッドとして登録する。
【００３７】
次に、コントローラ１２は、読み出し要求の範囲のデータをファイル管理部２０に返送する（図中の矢印５）。これで、ファイル管理部２０からの要求に対するデータの読み出しは完了する。
この後、コントローラ１２は、ダーティ／フルのキャッシュ領域に保持されたキャッシュデータを磁気ディスク１１に書き出す（図中の矢印６）。この際、フルストライドごとに磁気ディスク１１へ書き込めるように、また各ストライドもフレームアドレスの順序通りに並ぶように、空き領域を利用する。そして、書き込みが終了したキャッシュイメージから順に、クリーン／フルのキャッシュ領域に移動する。
最後に、ＦＡ−ＬＢＡ変換部１４が、磁気ディスク１１への書き込みの終了したキャッシュデータから順にレイアウト対応表に登録する（図中の矢印７）。また、上記の動作で磁気ディスク１１から読み出されたデータに関しては、古い対応を、レイアウト対応表から削除する。
【００３８】
３．消去要求（ｒｅｍｏｖｅ  ｒｅｑｕｅｓｔ）に対する動作
上述したように、ファイル管理部２０上で消去されたファイルに対応するフレームアドレスの空間は、明示的に回収する必要がある。そこで、本実施の形態では、消去要求というデリートコマンドを定義し、ファイル管理部２０から発行することにより、使用されなくなったデータに対するフレームアドレスを解放する。消去要求では、以後使用しないデータの先頭アドレス（フレームアドレス）とデータ長とが指定される。
【００３９】
図５は、ファイル管理部２０からハードディスク装置１０へ消去要求が発行された場合の動作を示す図である。
まず、コントローラ１２が、消去要求を受け付ける（図中の矢印１）。そして、消去要求にて指定されたデータの先頭アドレスと範囲（データ長）とに基づいて、削除すべき全フレームアドレスを特定する。次に、ＦＡ−ＬＢＡ変換部１４が、コントローラ１２にて特定された削除すべきフレームアドレスを、レイアウト対応表から削除する（図中の矢印２）。
以上のようにして使用されなくなったブロック（フレームアドレスの空間）は、適宜他のファイルのために再利用される。
【００４０】
４．要求を受けていないときの動作
本実施の形態におけるハードディスク装置１０は、ファイル管理部２０から何らの要求も受けていないとき、すなわち負荷の軽いときに、磁気ディスク１１に書き込まれているデータのデフラグメンテーションを実行する。本実施の形態では、フレームアドレスとＬＢＡとの対応をハードディスク装置１０において管理しているので、ハードディスク装置１０の独立した動作としてデフラグメンテーションを実行することができる。
【００４１】
図６は、ハードディスク装置１０が独立に行うデフラグメンテーションの動作を示す図である。
コントローラ１２は、まずＦＡ−ＬＢＡ変換部１４に問い合わせて、フレームアドレスが１ストライド以上の長さで存在し、かつ磁気ディスク１１上での配置が不連続なファイルを調べる（図中の矢印１）。また、ダーティ／フラグメンテッドのキャッシュ領域に保存されているデータのうちで、レイアウト対応表に登録されているデータと合わせるとフルストライドになるものがあるか調べる（図中の矢印２）。
【００４２】
次に、コントローラ１２は、これらの調査結果から、１ストライド分のフレームアドレスを選び出す。そして、キャッシュに存在しないブロックを磁気ディスク１１から読み出す。そしてさらに、キャッシュの内容をフルストライド単位にまとめ直し、ダーティ／フルのキャッシュ領域に保持する（図中の矢印３）。
【００４３】
次に、コントローラ１２は、ダーティ／フルのキャッシュ領域に保持されたキャッシュデータを、磁気ディスク１１の連続領域に書き込む（図中の矢印４）。書き込みの済んだキャッシュは、クリーン／フルのキャッシュ領域に移動される。
最後に、ＦＡ−ＬＢＡ変換部１４が、磁気ディスク１１への書き込みの終了したデータから順に、フレームアドレスとＬＢＡとの対応をレイアウト対応表に登録する（図中の矢印５）。磁気ディスク１１から読み出されたデータに関しては、フレームアドレスとＬＢＡとの古い対応をレイアウト対応表から削除する。
【００４４】
次に、キャッシュの再利用について説明する。
ファイル管理部２０からの書き込み要求に含まれるデータや磁気ディスク１１から読み出されたデータをキャッシュ使用とする際、キャッシュメモリ１３のキャッシュ領域に空き領域がなかった場合は、まず、クリーン／フル、クリーン／フラグメンテッド領域からＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ：最低使用頻度方式）にしたがってキャッシュデータを消去し、キャッシュ領域を確保する。クリーンのカテゴリに属するデータは、既に磁気ディスク１１に記録されているので、消去しても問題ない。
ダーティ／フルのキャッシュ領域は、適宜、可能な磁気に磁気ディスク１１に書き込まれていくので、利用されているデータがこのキャッシュ領域に残ることはあり得ない。
【００４５】
クリーン／フル、クリーン／フラグメンテッドのどちらからも領域を獲得できなかった場合は、ダーティ／フラグメンテッドのキャッシュ領域から空き領域を確保する。この場合、当該キャッシュ領域に保持されているデータは、磁気ディスク１１への書き込みを待っている状態なので、単に当該キャッシュ領域のデータを捨て去ることはできない。そこで、ＬＲＵにしたがって、キャッシュイメージを磁気ディスク１１に書き込む。この場合、各ストライドが連続して磁気ディスク１１に書き込まれるようにする。磁気ディスク１１に書き込まれたストライドに対応するレイアウト対応表の更新も行う。
磁気ディスク１１に書き込まれたデータは、クリーン／フラグメンテッドのキャッシュ領域に移動し、これを消去することによって、空き領域を確保する。
【００４６】
ところで、ハードディスク装置１０における磁気ディスク１１の利用率が１００％に近いと、通常、デフラグメンテーションの処理に要する手間が増大する。そこで、磁気ディスク１１の利用率が１００％に近くなってしまうことを防ぐため、磁気ディスク１１の記憶容量の全てをユーザに利用させるのではなく、コントローラ１２が使用するための容量を先に確保しておき、この余裕分を差し引いた残りをファイル管理部２０に対して提示すれば良い。
【００４７】
【発明の効果】
以上説明したように、本発明によれば、ハードディスク装置自体の制御により磁気ディスク上のデータを再配置（デフラグメンテーション）することが可能なファイル管理システム及びその管理方法を提供することができる。
また本発明によれば、ハードディスク装置が磁気ディスク上のデータの再配置を、適宜独立に行うことにより、データの書き込み及び読み出しをそれぞれが有利な磁気ディスク上のレイアウトで行うことが可能となる。そのため、データの読み書き性能を向上させることができる。
【図面の簡単な説明】
【図１】本実施の形態で用いられるフレームアドレスの概念を説明する図である。
【図２】本実施の形態におけるファイル管理システムの構成を示す図である。
【図３】本実施の形態において、ファイル管理部からハードディスク装置へ書き込み要求が発行された場合の動作を示す図である。
【図４】本実施の形態において、ファイル管理部からハードディスク装置へ読み出し要求が発行された場合の動作を示す図である。
【図５】本実施の形態において、ファイル管理部からハードディスク装置へ消去要求が発行された場合の動作を示す図である。
【図６】本実施の形態において、ハードディスク装置が独立に行うデフラグメンテーションの動作を示す図である。
【図７】一般的なハードディスク装置とファイルシステムとの関係を示す図である。
【符号の説明】
１０…ハードディスク装置、１１…磁気ディスク、１２…コントローラ、１３…キャッシュメモリ、１４…ＦＡ−ＬＢＡ変換部
【図１】
2004334419.tif 000003
【図２】
2004334419.tif 000004
【図３】
2004334419.tif 000005
【図４】
2004334419.tif 000006
【図５】
2004334419.tif 000007
【図６】
2004334419.tif 000008
【図７】
2004334419.tif 000009